ios – CoreBluetooth中央管理器无法在后台发现外设

我有一个应用程序正在使用蓝牙4.0 LE.该应用程序允许设备充当中央和外围设备.

我希望应用程序在后台运行.我已经在info.plist中包含了“蓝牙中心”和“蓝牙外设”的uibackgroundmodes.

我正在运行蓝牙4.0 LE启用的两种不同设备上的应用程序.

当两个设备在前台运行时,一切都可以正常工作,并且信息通过两种方式.

一个设备在前台运行,另一个设备在后台运行时,后台运行的设备能够进行扫描和通告,但无法发现在后台运行的其他设备.在前台运行的设备能够发现并连接到在后台运行的设备.

阅读Apple’s Core Bluetooth Programming Guide后,我知道连接到另一台设备并共享信息.

我可以根据要求发布更多信息.谢谢.

解决方法

当外设应用程序背景时,通告的服务被推送到“溢出区域”,并且外设名称根本不被通告.另外,广告间隔增加.理论上,iOS BLE堆栈应该处理这种情况,并请求溢出区域数据,但是它不会这样做.同时,背景中央的扫描也减慢了,另外它需要特定的服务UUID才能工作. (您无法使用nil服务在后台进行扫描)

因此,无法在背景中央扫描背景设备.

无论是这个bug还是功能,只有苹果才知道.打开一个雷达,告诉他们你的问题.我们越多的人做这个,我们得到更好的机会得到回应.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...