hsc*_*ied 5 objective-c background-process core-bluetooth
我注意到,当设备处于背景中时,BLE外围设备的发现似乎表现不同(在中央侧)与在后台+锁定时相比.
有人可以确认这一点或指向我更多的信息/文件吗?
更具体一点 - 当我的应用程序(中央)转换到后台和主屏幕时,它会继续按预期发现外围设备,但是当我按下"睡眠/唤醒"按钮从而锁定设备时,它会停止发现我的外围设备.该应用程序没有崩溃或任何事情......事实上,当我解锁设备(返回主屏幕)时,它恢复发现外围设备而无需将其恢复到前台.我也明白,BLE在后台不太频繁地被触发,但在我的情况下,我在锁定状态下观看它超过一个小时并且它从未触发发现,但是一旦我解锁它就恢复正常.
我正在寻找一种解决方案,当设备(作为中央运行)被锁定时,我也能够发现外围设备.
谢谢你的帮助!
-H
更新中...
发现了一篇有趣的帖子,我想分享一下:http://web.archiveorange.com/archive/v/lBeBkjSSTe5jAan6ufTX
特别是观察(Brian Fudge)很有意思......
锁定的扫描设备不会报告任何也被锁定的iOS外围设备.
在某些设备上,例如iPhone 5和5S,您只需按下外围设备上的主页按钮即可使扫描仪成功并报告外围设备.
在iPad和iPod Touch等其他设备上,您必须按下主页按钮并解锁外围设备才能使扫描仪成功并报告外围设备.
非iOS设备(例如rMBP)可以扫描处于后台并锁定的iOS外围设备.
当iOS设备处于后台并锁定时,所有iOS设备都可以扫描硬件外围设备(例如健康跟踪器).
好吧,我遇到了同样的问题并设法理解原因。因此,基本上,当您在后台或设备锁定时,您的应用程序将只能发现设备一次(您可以使用 CBCentralManagerScanOptionAllowDuplicatesKey 标志在前台进行多次发现,但它在后台被忽略)
因此,我的应用程序在后台时毫无问题地发现任何 BLE 外设,但一旦我锁定设备,我就无法检测到它们。我发现外围设备的广播数据包太大(发送了两次)。减少我的外围广播数据包似乎可以解决问题。当锁定时,iPhone似乎会监听一次性发送的广告包。在前台或后台它能够侦听两次发送的数据包。
希望这可以帮助别人。
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |