通过Objective C自动连接到以前的蓝牙设备

时间:2013-08-14 21:59:45

标签: objective-c uuid core-bluetooth bluetooth-lowenergy cbperipheral

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

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

我可以使用retrievePeripherals CBCentralManager方法检索第一个设备并连接到它,然后传入我存储的UUID数组。

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

其他人是否有同样的问题?

1 个答案:

答案 0 :(得分:1)

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

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

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