3

我有一个需要 PIN 码的 BLE 外围设备。我在 iOS 7 上使用 Core Bluetooth CBCentralManager 连接到这个外围设备。

当我连接到此外围设备时,会在PIN 码身份验证成功完成之前调用“didConnectPeripheral”(中央代表) 。

iOS 仅在调用 'didConnectPeripheral'后显示 pin 码对话框。

一旦这个 PIN 码对话框完成并且身份验证过程完成,我需要开始与外围设备交互。我如何确定何时发生这种情况?

挑战是仅在身份验证成功继续进行,但是:

  1. iOS在对话框显示之前调用“didFailToConnectPeripheral” 。
  2. 如果 PIN 码授权成功,iOS 不会再次调用“didConnectPeripheral”。
  3. 如果 PIN 码授权失败,iOS 不会再次调用“didFailToConnectPeripheral”。

从上面,我一直无法确定:

  1. 当对话完成时。
  2. PIN码授权是否成功。

任何帮助,将不胜感激。

4

1 回答 1

2

根据我使用 CoreBluetooth 的经验,在您尝试未经授权的操作之前,您将不会收到有关您是否已获得授权以及何时完成 PIN 码授权的任何信息,该操作将失败并出现以下三个错误响应之一:

InsufficientEncryption
InsufficientAuthentication
InsufficientAuthorization

外围设备决定了您将返回哪个错误。(从技术上讲,它们由 GATT 在 BLE 4.X 规范中定义,但所有实现细节都在外围设备端控制)

于 2015-04-20T15:09:06.533 回答