如何在核心蓝牙中删除/取消订阅服务?

时间:2016-10-25 09:20:12

标签: ios swift core-bluetooth

我尝试通过以下方式实现它:

peripheral.services?.removeAll()

但它返回错误

  

不能在不可变值上使用变异成员

删除或取消订阅服务的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

错误明确指出peripheral.services?不是不可变内容。因此您无法编辑其中的内容。

您需要使用

removeAllServices() - 删除所有已发布的服务

remove(CBMutableService) - 删除指定的服务

Apple参考

Core bluetooth Reference

答案 1 :(得分:0)

您无法从使用CBCentralManager发现的外围设备中删除服务;外设具有的服务集由该外设设置,这就是该属性不可变的原因。当您使用CBPeripheralManager广告外围设备时,将使用您尝试使用的功能。

当您连接到外围设备时,您可以选择在特定特征更改时(如果该特征支持notify)使用peripheral.setNotifyValue(bool, for: CBCharacteristic)接收通知,或者您可以断开连接完全从外围设备,但你没有订阅'也没有取消订阅'从服务。