OS X和iOS之间不断打开BLE连接

时间:2015-02-04 19:09:34

标签: ios objective-c macos core-bluetooth

我一直在探索OS X和iOS之间的CoreBluetooth和BLE连接,在那里我发现了一个有趣的问题。我有Mac实现CoreBluetooth中央和iOS实现CoreBluetooth外围设备。由于iOS不再广播一个恒定,一致的MAC地址或其他标识符,所以没有可靠的方法(我可以找到)允许Mac在范围内连接到iOS外围设备,包括iOS应用程序运行时背景。

通过存储最后连接的外围设备,我可以让OS X不断搜索iOS设备,如下所示:

[central connectPeripheral:self.lastPeripheral options:nil];

如果先前已将self.lastPeripheral连接到OS X客户端,则该工作正常。只有当iOS应用程序打开时才能创建此初始连接;如果是背景,它将无法工作。这本身并不是一个可怕的问题,但每次OS X应用程序退出时,必须通过打开iOS应用程序恢复此连接。

当iOS应用程序背景化时,有没有办法通过BLE连接和重新连接(当设备移回范围时)到iOS设备,尤其是在应用程序启动之间持续存在?

1 个答案:

答案 0 :(得分:1)

BluetoothLE仍然是一种耗能技术。苹果公司竭尽全力限制其在iOS上的“主动”使用,因为他们认为这种情况并不正确(例如背景)。也就是说,对外围模式下的iOS设备继续做广告的持续时间(预先要求重新连接)没有任何保证。

您是否考虑过切换角色?使OS X机器成为外围设备,iOS设备成为中心设备?我从经验中知道,当作为一个核心时,iOS表现得更好。