繁体   English   中英

react-native-ble-plx:在 iOS 背景和暂停模式下的 BLE 扫描

[英]react-native-ble-plx: BLE Scanning in iOS Background & Suspended mode

上下文 IOS 后台和挂起模式

库版本:react-native-ble-plx 1.0.3 平台:iOS。 平台日志 (XCode)

预期行为当应用程序甚至处于 ios 的后台或挂起模式时,会调用 startDeviceScan 的回调。

当前行为 当应用程序处于 ios 后台或挂起模式时,永远不会调用 startDeviceScan 的回调。 根据apple ble doc,我认为还没有发现发现事件。 是否可以配置“startDeviceScan”以在后台和暂停模式下扫描应用程序?

经过一些研究,我发现一些与在 ios 后台和挂起模式下进行 ble 扫描相关的有用信息。

1.) 当 iOS 设备在后台时,扫描会被限制。

虽然在前台扫描可能会立即发现旁边有广告的设备,但在后台发现可能需要长达 60 倍的时间。 iOS 系统不假设用户更喜欢一个应用程序比另一个应用程序具有更好的蓝牙功能(或者只有一个应用程序想要使用它)。 由于它是共享功能,他们希望用户在不同的应用程序中拥有统一的体验。 您应该查看有关广告和扫描间隔的技术规范,以更好地了解 Apple 在幕后要做的事情。

2.) 在进入后台之前,您的设备可能已经相互发现了。

我们必须记住,当我们进入后台时,Apple 禁用了 CBCentralManagerScanOptionAllowDuplicatesKeyscanning 标志。 由于您甚至没有指定此标志,因此它默认为 NO。 因此,如果他们甚至见过对方一次,当他们在后台时,您将不会再收到回调。

3.) 尊重广告数据的限制

虽然广告数据包通常可以包含有关外围设备的各种信息,但您可以只广告您的设备的本地名称和您想要广告的任何服务的 UUID。 广告数据时可以使用的空间也有限制。 当您的应用程序处于前台时,它可以在初始广告数据中使用最多 28 字节的空间用于两个受支持的广告数据键的任意组合。 如果此空间用完,则扫描响应中还有额外的 10 字节空间只能用于本地名称。 任何不适合分配空间的服务 UUID 都会被添加到一个特殊的“溢出”区域; 它们只能被明确扫描它们的 iOS 设备发现。 当您的应用程序在后台时,本地名称不会被公布,所有服务 UUID 都位于溢出区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM