无法使用 CoreBluetooth 显示配对对话框
Unable to show the pairing dialog using CoreBluetooth
您好,我正在使用 Apple 示例 BLTE 应用程序来显示配对对话框。(iPhone 至 iPhone)
这是我创建特征的代码
self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]
properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired
value:nil
permissions:CBAttributePermissionsReadable];
以上代码摘自苹果的一篇文章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];
如果您使用的是低功耗蓝牙(未加密),则没有配对对话框...
你必须自己实现配对。
您可以订阅特征/获取通知并读取或写入,仅此而已。您必须从 CBPeripheralManagerDelegate 中实现相应的方法。设置 peripheralManager 的委托,方法将被调用。
见https://developer.apple.com/reference/corebluetooth/cbperipheralmanagerdelegate?language=objc
配对对话框未显示的真正问题是因为我在两个 iphone 上都有相同的 iCloud 帐户。当我从一台设备上删除帐户时出现配对对话框。
这个答案帮我弄明白了
您好,我正在使用 Apple 示例 BLTE 应用程序来显示配对对话框。(iPhone 至 iPhone)
这是我创建特征的代码
self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]
properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired
value:nil
permissions:CBAttributePermissionsReadable];
以上代码摘自苹果的一篇文章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];
如果您使用的是低功耗蓝牙(未加密),则没有配对对话框... 你必须自己实现配对。
您可以订阅特征/获取通知并读取或写入,仅此而已。您必须从 CBPeripheralManagerDelegate 中实现相应的方法。设置 peripheralManager 的委托,方法将被调用。
见https://developer.apple.com/reference/corebluetooth/cbperipheralmanagerdelegate?language=objc
配对对话框未显示的真正问题是因为我在两个 iphone 上都有相同的 iCloud 帐户。当我从一台设备上删除帐户时出现配对对话框。
这个答案帮我弄明白了