我目前正在编写一个使用BTLE
在两部或多部手机之间传递小数据串的应用程序。
目前我正在前台:CBAdvertisementDataLocalNameKey
和CBAdvertisementDataServiceUUIDsKey
。当应用程序在前台时,我能够恢复(通过NSLog)通过CBAdvertisementDataLocalNameKey的字符串。
但是,当应用在后台时,CBAdvertisementDataLocalNameKey
不会通过。 BTLE UUID
仍然与RSSI
整数,CBAdvDataChannel
和CBAdvDataIsConnectable
一起传递。
在梳理了一个名为Apple Documentation的无休止的圈子后,我发现当应用程序在后台时,无法传递一个小字符串。在我看来,如果没有办法传递数据,他们就不会在后台允许BTLE
。
我的问题是,是否有人知道使用BTLE或可能允许我这样做的方法在后台传递数据的解决方法?任何帮助或提示将不胜感激。
编辑:我应该明确表示我正在尝试使用的图书馆名为Vicinity https://github.com/Instrument/Vicinity,它使用CoreBluetooth
来解决CoreLocation
的背景限制。
答案 0 :(得分:1)
你可能会从这个项目中得到一些用处,它允许设备通过蓝牙LE共享字符串数组(例如用户ID),即使在后台运行时:SimpleShare
当应用程序处于后台时,它仍然可以共享数据,因为它只在设备通过更改特征值发送每个数据来订阅广告的蓝牙特征时才发送数据。您不需要名称密钥来传输信息。
希望有所帮助!
答案 1 :(得分:0)
iBeacons不是用于在两个设备之间传输数据。 BLE信标用于确定iDevice的当前位置。唯一标识它广播广告数据的信标,包含一个uuid(32个hexdigits),一个主要(4个hexdigits)和一个次要数字(4个hexdigits)。就这样。如果您想传输数据,则必须使用任何其他服务。