我在使用 BLE 与我们定制的 BLE 单元进行通信的 iOS 应用程序上工作。我们希望通过 BLE 自动向设备发送特定命令。
当用户靠近设备并满足特定条件时,应用程序应连接到设备,“登录”用户,通过 BLE 发送命令并立即断开连接。
这些特定标准基于来自广告的制造商数据(即,当制造商数据的最后一个字节为 0x01 时,设备处于“可登录”状态,当它为“不可登录”时,最后一个字节为 0x00)。
在前台,这种机制完美无缺。即使应用程序处于后台或终止(在 iPhone 上的仪表板中向上滑动),我们也希望这样做。
我们实现的机制:
- 该单元具有充当 iBeacon 的能力
- 当设备无法登录时,iBeacon 关闭
- 当它可用于登录时,iBeacon 将打开并唤醒应用程序,此时 BLE 扫描将以后台模式开始
- 背景模式设置为蓝牙中心
这里的问题是,无论我尝试了什么,广告:
- 有时它根本没有被发现(看起来像是时间问题?)
- 当它被发现时,它不包含制造商数据
有没有人遇到过类似的事情?任何帮助表示赞赏,祝您有美好的一天!