我希望能够使用已知邻近UUID的后台CoreBluetooth框架扫描iBeacons广告数据。我能够使用以下方法扫描FOREGROUND中的所有外围设备:
B
当应用程序进入后台但我没有返回任何数据时,我尝试这样做。甚至可以在后台使用Corebluetooth框架扫描iBeacons吗?
由于
答案 0 :(得分:0)
来自Core Bluetooth Programming Guide
当实现核心角色的应用程序包含 UIBackgroundModes键具有蓝牙中心值 Info.plist文件,核心蓝牙框架允许您的应用程序运行 在后台执行某些与蓝牙相关的任务。而 您的应用程序位于后台,您仍然可以发现并连接到该应用程序 外围设备,探索外围数据并与之互动
虽然您可以在应用中执行许多与蓝牙相关的任务 是在后台,请记住扫描外围设备时 您的应用在后台运行的方式与您的应用时不同 在前台。特别是,当您的应用扫描时 设备在后台:
- CBCentralManagerScanOptionAllowDuplicatesKey扫描选项键是 忽略,广告外围设备的多个发现 合并为一个发现事件。
- 如果所有正在扫描的应用 对于外围设备是在后台,你的间隔 中央设备扫描广告包增加。结果是, 发现广告外围设备可能需要更长时间。
您应确认已在项目设置中指定了背景模式键,并且您的CBCentralManager
实例已正确实例化。
但是,我注意到,即使是前台处理,您的蓝牙扫描代码也不是特别有效。除非严格必要,否则不应包含重复项密钥,您应该指定您感兴趣的服务UUID而不是nil。