2012-12-29 32 views
6

我无法确定如何在后台运行应用程序时接收Bluetooth LE外围设备广告。也就是说,当我的应用程序在后台它永远不会到达didDiscoverPeripheral()方法 - 广告在哪里..有谁知道我需要如何配置我的应用程序,以便我可以获取蓝牙LE广告,而我的应用程序在背景?这可以通过线程轮询来完成,而我的应用程序在后台?注意:我想从所有BLE设备获取广告,而不是定义数量的BLE设备。使用Core Bluetooth在后台获取Bluetooth LE外围设备广告

感谢帮助,

凯西

回答

7

我从我的应用程序这样做。

在后台模式下CoreBluetooth

被认为是达到比周围的广告区间慢55倍。为了加快速度,我将外设编程为在前30秒内每20ms广告一次。

也必须定义“需要后台模式”在你的项目目标“应用程序进行通信使用CoreBluetooth” - >信息。

它确实需要一段时间的应用发现在后台模式外设。

+1

我感谢您的帮助。我一回到家就试试这个,并告诉你它是否有效。为了确保你明白,你的应用程序将达到didDiscoverPeripheral()方法是否正确?反过来,让您的应用程序解析外围设备广告.. – CaseyG

+0

嗯,我仍然无法得到它的工作。就像你指出的那样,我把广告时间间隔改为20ms。我认为我的问题可能是我正在使用不受限制的扫描(例如:scanForPeripherals:nil options:options)而不是受限扫描。 iOS可能会取消无限制的扫描,当你的应用程序进入后台某人声明[这里](http://stackoverflow.com/questions/9896562/what-exactly-can-corebluetooth-applications-do-whilst-in-the-background) 。您是使用无限制扫描还是限制?我想使用一个不受限制的应用程序 - 如果可能的话。谢谢你的帮助。 – CaseyG

+0

好吧,我得到它的工作。您必须使用受限扫描,并且必须像henrik提到的那样将您的间隔设置为20ms左右。谢谢。 – CaseyG

相关问题