我正在尝试搜索 iPhone 是否可以在 sleep 模式下扫描 BLE 设备并读取其广告数据。
例如,持续扫描需要多长时间,然后如果设备更改其广告数据,手机将唤醒并触发本地通知。意思是,该应用程序在后台模式下运行了 x 时间段。
这可能吗?因为在 android 中它是。
最佳答案
当您的应用程序在后台运行时,外围扫描有限制:
- 您必须指定您感兴趣的服务 UUID;你不能使用
nil
- 不支持重复扫描选项键。这可能是阻碍您实现预期结果的原因
由于重复键在后台被忽略,如果您的应用之前已经发现了一个外围设备,那么它的发现将不会重新触发 didDiscoverPeripheral
委托(delegate)方法,直到您的应用重新启动。
对于长期发现,您还应该选择加入状态恢复,但在 Xcode 下运行的简单测试用例不需要这样做。
关于当手机处于 sleep 模式时,iOS BLE 在后台扫描广告数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44511120/