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