如何从核心蓝牙服务中 remove/unsubscribe?
How to remove/unsubscribe from service in core bluetooth?
我尝试通过以下方式实现:
peripheral.services?.removeAll()
但它 returns 错误
cannot use mutating member on immutable value
移除或退订服务的正确方法是什么?
错误明确指出 peripheral.services?
不是不可变的内容。所以你不能编辑里面的内容。
你需要使用
removeAllServices()
- 删除所有已发布的服务
和
remove(CBMutableService)
- 删除指定服务
Apple
参考
您不能从使用 CBCentralManager
发现的外围设备中删除服务;外围设备具有的服务集由该外围设备设置,这就是 属性 不可变的原因。当您使用 CBPeripheralManager
.
宣传外围设备时,将使用您尝试使用的功能
连接到外围设备后,您可以选择在特定特征发生变化时接收通知(如果该特征支持notify
)使用peripheral.setNotifyValue(bool, for: CBCharacteristic)
或者您可以完全断开与外围设备的连接,但您既没有 'subscribe' 也没有 'unsubscribe' 来自服务。
我尝试通过以下方式实现:
peripheral.services?.removeAll()
但它 returns 错误
cannot use mutating member on immutable value
移除或退订服务的正确方法是什么?
错误明确指出 peripheral.services?
不是不可变的内容。所以你不能编辑里面的内容。
你需要使用
removeAllServices()
- 删除所有已发布的服务
和
remove(CBMutableService)
- 删除指定服务
Apple
参考
您不能从使用 CBCentralManager
发现的外围设备中删除服务;外围设备具有的服务集由该外围设备设置,这就是 属性 不可变的原因。当您使用 CBPeripheralManager
.
连接到外围设备后,您可以选择在特定特征发生变化时接收通知(如果该特征支持notify
)使用peripheral.setNotifyValue(bool, for: CBCharacteristic)
或者您可以完全断开与外围设备的连接,但您既没有 'subscribe' 也没有 'unsubscribe' 来自服务。