无法使用CoreBluetooth显示配对对话框

时间:2017-04-24 12:07:42

标签: ios objective-c iphone core-bluetooth

您好我正在使用Apple Sample BLTE应用程序来显示配对对话框。(iPhone到iPhone)

这是我创建特色

的代码
self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]
                                                                  properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired
                                                                       value:nil
                                                                 permissions:CBAttributePermissionsReadable];

以上代码摘自Apple的一篇文章link

这是我通知并尝试阅读特征

时的代码
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]]) {
        [peripheral setNotifyValue:YES forCharacteristic:characteristic];

        [peripheral readValueForCharacteristic:characteristic];
    }

我的问题是,当我尝试使用此代码时,我没有得到配对对话框,而是在didUpdateValueForCharacteristic

中收到此错误
2017-04-24 17:24:58.636 BTLE Transfer[1351:457263] Error discovering characteristics: Authentication is insufficient.

这基本上意味着我需要一个配对来阅读,但框架没有显示配对对话框。

我在这里做错了什么?请帮忙。

修改 我更新了我的特点如下:

self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]
                                                                  properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired
                                                                       value:nil
                                                                 permissions:CBAttributePermissionsReadEncryptionRequired];

2 个答案:

答案 0 :(得分:1)

配对对话框没有显示的真正问题是因为我在iphone上都有相同的iCloud帐户。当我从一台设备上删除帐户时,会出现配对对话框。

这个答案帮助我弄明白了link

答案 1 :(得分:0)

如果你正在使用蓝牙低功耗(没有加密),则没有配对对话框...... 你必须自己实现配对。

您可以订阅特征/获取通知,以及阅读或写入所有内容。您必须从CBPeripheralManagerDelegate实现相应的方法。设置peripheralManager的委托,将调用方法。

请参阅https://developer.apple.com/reference/corebluetooth/cbperipheralmanagerdelegate?language=objc