我有一个应用程序正在使用蓝牙4.0 LE.该应用程序允许设备充当中央和外围设备.
我希望应用程序在后台运行.我已经在info.plist中包含了“蓝牙中心”和“蓝牙外设”的uibackgroundmodes.
我正在运行蓝牙4.0 LE启用的两种不同设备上的应用程序.
当两个设备在前台运行时,一切都可以正常工作,并且信息通过两种方式.
当一个设备在前台运行,另一个设备在后台运行时,后台运行的设备能够进行扫描和通告,但无法发现在后台运行的其他设备.在前台运行的设备能够发现并连接到在后台运行的设备.
阅读Apple’s Core Bluetooth Programming Guide后,我知道连接到另一台设备并共享信息.
我可以根据要求发布更多信息.谢谢.
解决方法
当外设应用程序背景时,通告的服务被推送到“溢出区域”,并且外设名称根本不被通告.另外,广告间隔增加.理论上,iOS BLE堆栈应该处理这种情况,并请求溢出区域数据,但是它不会这样做.同时,背景中央的扫描也减慢了,另外它需要特定的服务UUID才能工作. (您无法使用nil服务在后台进行扫描)
因此,无法在背景中央扫描背景设备.
无论是这个bug还是功能,只有苹果才知道.打开一个雷达,告诉他们你的问题.我们越多的人做这个,我们得到更好的机会得到回应.