1

我的程序允许用户连接到蓝牙设备,它会保存 UUID。下次启动应用程序时,它会自动连接到之前连接的设备。

我将 UUID 保存在[NSUserDefaults standardUserDefaults]NSArray 中。

retrievePeripherals通过使用for 的方法CBCentralManager并传入我存储的 UUID 数组,我能够检索并连接到第一个设备。

我的问题是,我不知道如何处理错误。我希望程序知道它是否无法连接到第一个 UUID 并进入下一个。委托方法didRetrievePeripherals似乎检索具有特定 UUID 的设备,即使我关闭了设备。

其他人有同样的问题吗?

4

1 回答 1

1

retrievePeripherals:使用核心蓝牙内部数据库返回一个CBPeripheral. 连接到外围设备后,它将被持久化在数据库中,您可以检索它。不检查外设是否打开。

不幸的是,无法确定设备不可用的原因,但您可以创建自己的启发式方法:

  • 尝试连接特定时间,如果您在合理的时间内(通常是几秒钟)没有收到didConnectPeripheral:回调,则该外围设备被视为超出范围,您可以继续使用下一个外围设备。请注意,connectPeripheral只要它没有成功或没有取消/终止,它将继续运行(即使在后台)
  • 如果外围设备正在广告,那么您也可以尝试运行扫描以检查它是否在范围内。
于 2013-08-15T20:37:13.857 回答