CoreBluetooth setNotifyValue无效参数

时间:2016-01-09 05:27:25

标签: ios macos core-bluetooth

我正在尝试使用CoreBluetooth从我的iOS应用程序获取通知到我的Mac应用程序,但我在中央端peripheral:didUpdateNotificationStateForCharacteristic:方法中收到此错误:Error Domain=CBErrorDomain Code=1 "One or more parameters were invalid." UserInfo={NSLocalizedDescription=One or more parameters were invalid.}

外围应用程序使用Notify属性和阅读权限初始化onlineUUID特征。

func peripheral(peripheral: CBPeripheral, didDiscoverCharacteristicsForService service: CBService, error: NSError?) {
    for characteristic in service.characteristics! {
        if characteristic.UUID.isEqual(self.onlineUUID) {
            print("Found online characteristic") // this prints
            print("Properties are \(characteristic.properties.rawValue)") // 16==Notify
            peripheral.setNotifyValue(true, forCharacteristic: characteristic)
        }
    }
}

这看起来像在线教程,但它不起作用。我重新启动了两个应用程序,清理了项目并重新启动了Xcode。在iOS 9.2和OS X 10.11.2上使用Xcode 7.2和Swift 2.1.1。相当困惑;请帮忙。

2 个答案:

答案 0 :(得分:0)

如果您只是在函数中添加一个self,我认为您的问题可以解决:

self.sensorPeripheral.setNotifyValue(true, forCharacteristic: thisCharacteristic)

答案 1 :(得分:0)

为每个人的时间道歉;当我在外围设备上重新启动蓝牙时,这个确切的代码工作。它正在注册特性,但是setNotifyValue()导致了这个异常的错误消息,直到我重新启动蓝牙。

我发现代码的工作方式是交换哪个设备是外设,哪个是中心设备。