集成iBeacon和coreBluetooth外设
我想知道是否有可能做广告服务通过coreBluetooth与设备充当外设,也范围为iBeacons,也在后台完成? 本质上,其目的是为信标的范围,然后如果信标是在附近。近或远的范围更新设备通告的服务的特征。 我可以很高兴地完成测距任务,尽pipe我已经发现设备作为一个外设苗条的信息,我想我可以pipe理,但是已经被后台function限制重复停止,我想知道如果这种情况是可能的我花了很多时间去完成一些事情,大家都知道这是不可能的。 我新来Swift和iOS一般,所以我花了很多时间来完成。 任何build议将不胜感激。 谢谢
这是可能的,尽pipe在后台有限制。
前景:
- 确切地说,你所描述的是可能的。 iOS允许使用
CoreBluetooth
同时广告Bluetooth LE服务,同时使用CoreLocation
。
背景:
-
iOS首先检测到信标区域后,仅使用
CoreLocation
的信标测距API将背景信标扫描限制在5秒内。 您可以使用我在此处撰写的博客文章中的技巧,将这五秒的扫描时间延长至三分钟。 延长时间较长需要在Info.plist中添加一个位置背景模式,这可能会让您的应用程序难以批准到AppStore。 -
蓝牙LE服务在 iOS 的后台广告不能像在前台广告一样。 它使用苹果专有技术将服务标识符折叠成一个较小的广告数据包,该数据包在所有宣传蓝牙LE服务的应用程序中共享。 这些可能不容易被非iOS蓝牙LE设备发现:
CBAdvertisementDataLocalNameKey通告密钥被忽略,外设的本地名称不被公布。 CBAdvertisementDataServiceUUIDsKey通告密钥的值中包含的所有服务UUID都放置在特殊的“溢出”区域中; 它们只能被明确扫描它们的iOS设备发现。 如果所有正在进行广告的应用程序都在后台,则外围设备发送广告数据包的频率可能会降低。
有关详细信息,请参阅蓝牙外围设备后台执行模式部分。