2

我想知道是否有可能通过 coreBluetooth 使用充当外围设备的设备以及 iBeacons 的范围来宣传服务,是否也可以在后台完成两者?本质上,目的是确定信标的范围,然后如果信标在 .Near 或 .Immediate 范围内,则更新设备所宣传的服务的特征。我可以愉快地完成测距任务,虽然我找到了有关充当外围设备的设备的信息,但我认为我可以做到这一点,但是由于后台功能限制而反复停止我想知道这种情况之前是否可能我花了很多时间试图完成一些人人都知道是不可能的事情。总的来说,我是 Swift 和 iOS 的新手,所以我需要时间来完成很多工作。任何建议将不胜感激。谢谢

4

1 回答 1

2

这是可能的,尽管在后台有限制。

前景:

  • 你所描述的正是可能的。iOS 允许同时使用蓝牙 LE 服务广告,CoreBluetooth而 iBeacons 使用CoreLocation.

背景:

  • iOS 将使用CoreLocation的信标测距 API 的后台信标扫描限制在第一次检测到信标区域后的5 秒内。您可以使用我在此处写的博客文章中的一种技术将这五秒的扫描时间延长到三分钟。延长更长时间需要在 Info.plist 中添加位置背景模式,这可能会使您的应用更难获得 AppStore 的批准。

  • 在 iOS 上的后台蓝牙 LE 服务广告不像前台广告那样工作。它使用 Apple 专有技术将服务标识符折叠成一个较小的广告数据包,该数据包在所有广告低功耗蓝牙服务的应用程序之间共享。非 iOS 蓝牙 LE 设备可能不容易发现这些:

CBAdvertisementDataLocalNameKey 广告键被忽略,并且外围设备的本地名称不被广告。CBAdvertisementDataServiceUUIDsKey 广告键值中包含的所有服务 UUID 都放置在一个特殊的“溢出”区域;只有明确扫描它们的 iOS 设备才能发现它们。如果所有正在做广告的应用程序都在后台,您的外围设备发送广告包的频率可能会降低。

有关更多信息,请参阅此处的蓝牙外设后台执行模式部分。

于 2015-12-11T14:25:46.770 回答