gpt4 book ai didi

ios - didDiscoverPeripheral : not working sometimes on background

转载 作者:行者123 更新时间:2023-11-29 13:53:35 25 4
gpt4 key购买 nike

发生在 iOS 12iOS 13 上。

我已将 Bluetooth-central 正确添加到我的 Info.plist

我正在指定服务 UUID 列表

我所看到的:

  • 如果我在前台与我们的 BLE 设备交互,只要我不关闭蓝牙或重启 iOS 设备,我仍然可以在后台扫描它,甚至数小时或数天之后。
  • 如果我在应用程序打开时从未与它交互过,或者如果我重新启动设备,或关闭设备上的蓝牙,那么在后台扫描时,didDiscoverPeripheral: 永远不会被调用,直到我打开应用程序,立即触发 didDiscoverPeripheral:。
  • 如果我使用 retrievePeripheralsWithIdentifiers: 并且 iOs 可以返回“缓存”的对象,那么我可以跳过扫描并直接连接,这非常有效。但有时 retrievePeripheralsWithIdentifiers: 不会返回对象,所以我不能总是依靠它(并强制用户首先在前台与我们的设备交互)

最佳答案

因此,在我和我们的固件团队来回交流之后,我们找到了问题背后的原因。

事实证明,扫描时后台应用程序不会读取广告扩展数据包。问题是,我们用于过滤扫描设备的服务 UUID 仅在该广告扩展数据包上发送。

因此,当应用程序扫描新设备时,它不会找到任何具有该服务 UUID 的内容,但是一旦它在打开应用程序的情况下找到它,它就会在内部缓存它的服务,从那时起它甚至可以在后台工作(因为它已经知道该设备有哪些服务)。

解决方法是在第一个广告数据包中包含该服务 UUID。

关于ios - didDiscoverPeripheral : not working sometimes on background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58235920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com