我目前正在编写一个应用程序,该应用程序使用 BTLE
在 2 部或多部手机之间传递小串数据。
我目前在前台传递的是:CBAdvertisementDataLocalNameKey
和 CBAdvertisementDataServiceUUIDsKey
。当应用程序位于前台时,我能够(通过 NSLog)恢复通过 CBAdvertisementDataLocalNameKey 传递的字符串。
但是,当应用程序在后台运行时,CBAdvertisementDataLocalNameKey
不会通过。 BTLE UUID
仍然与 RSSI
整数、CBAdvDataChannel
和 CBAdvDataIsConnectable
一起传递。
在梳理了一个名为 Apple Documentation 的看似永无止境的循环之后,我发现无法在应用程序处于后台时传递一个小字符串。在我看来,如果没有办法传递数据,他们将不允许 BTLE
在后台运行。
我的问题是,有没有人知道使用 BTLE 在后台传递数据的变通方法或允许我这样做的方法?任何帮助或提示将不胜感激。
编辑:我应该明确指出,我正在尝试使用的库名为 Vicinity https://github.com/Instrument/Vicinity它使用 CoreBluetooth
来绕过 CoreLocation
的背景限制。
最佳答案
您可能会从这个项目中得到一些用处,它允许设备通过蓝牙 LE 共享字符串数组(例如用户 ID),即使在后台也是如此:SimpleShare
它仍然可以在应用程序处于后台时共享数据,因为它仅在设备通过更改特征值以发送每条数据来订阅广告蓝牙特征时发送数据。您不需要名称 key 来传输信息。
希望对您有所帮助!
关于ios - 低功耗蓝牙背景数据 (iBeacons),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066803/