CoreBluetooth - 在设备锁定时发现BLE外设

时间:2014-01-05 19:08:02

标签: objective-c background-process core-bluetooth

我注意到,当设备处于背景时,与背景中的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设备都可以扫描硬件外围设备(例如健康追踪器)。

  •   

1 个答案:

答案 0 :(得分:3)

好的,我遇到了同样的问题,并设法理解为什么。所以基本上当你在后台或设备锁定时,你的应用程序将只能发现一次设备(你可以在前台获得多个发现,标志为CBCentralManagerScanOptionAllowDuplicatesKey,但它在背景中被忽略)< / p>

所以我的应用程序在后台发现没有任何BLE外围设备的问题,但是一旦我锁定了我的设备,我就无法检测到它们。我发现外围设备的广播包太大了(它发送了2次)。减少我的外围广播包似乎解决了这个问题。当锁定时,iPhone似乎一次收听广告包。在前台或后台,它能够监听2次发送的数据包。

希望这可以帮助某人。