iOS 应用程序是否可以充当信标,即使它在后台 运行 也是如此?

Can iOS app act as beacon, even when it is running in the background?

我需要我的应用充当 BLE 信标,即使它在后台也是如此。 我已经制作了信标部分 - 在我使用该应用程序时工作正常。

问题是我以前从未在后台做过任何事情 运行,并且不确定有什么限制 - 如果允许我让该应用程序在后台充当灯塔。

想知道这是否可能(技术上,以及根据 App Store 规则)

  1. 这在技术上可行吗?我的应用程序可以充当信标吗,即使该应用程序不在前台。
  2. 是否符合 App Store 规则?

不幸的是,iOS 应用无法发出 iBeacon 广告,除非它们位于前台。如果您对应用程序进行编程以宣传 iBeacon 框架,一旦屏幕关闭或应用程序不可见,iOS 会将广告格式更改为与 iBeacon 格式不匹配的特殊通用背景广告。

此专有背景广告对识别设备毫无用处。它专为从其他 iOS 设备连接到 BLE GATT 服务而设计。除非您想向其他 iOS 设备宣传可连接的 BLE GATT 服务,否则此宣传没有什么价值。 编辑:有一种方法可以利用这个广告。见下文。

Apple 的文档在标题为“bluetooth-peripheral 后台执行模式”的部分中描述了此限制 here

you should be aware that advertising while your app is in the background operates differently than when your app is in the foreground. In particular, when your app is advertising while in the background:

The CBAdvertisementDataLocalNameKey advertisement key is ignored, and the local name of peripheral is not advertised. All service UUIDs contained in the value of the CBAdvertisementDataServiceUUIDsKey advertisement key are placed in a special “overflow” area; they can be discovered only by an iOS device that is explicitly scanning for them. If all apps that are advertising are in the background, the frequency at which your peripheral device sends advertising packets may decrease.

上述导致 iBeacon 传输中断的原因可能并不明显,但我向您保证这绝对是一个后果。

Read my blog post here有关如何将有用的信标数据放入此后台“溢出区”广告的更多信息。

iOS 应用程序在 运行 期间在后台充当信标的情况并没有发生,也没有记录在案。 您可能会考虑设计自定义信标设置或 iBeacon App Developers 以获得相同的帮助