0

我大家,

我正在尝试开发两个充当中央和外围设备的应用程序,当它们进入蓝牙范围时,它们会自动相互连接,而两者都在后台

我在这篇文章中发布了一些关于我的问题的内容(因为我的测试都不是结论性的):IOS 开发:后台 BLE 扫描

我总是在互联网上找到的答案直接来自 Apple 文档。一个帖子示例(https://stackoverflow.com/a/20460113/5464805):

问题是前景和背景扫描的差异。当您在前台扫描设备时,您可以扫描任何内容。在后台,您必须指定您正在扫描的实际服务 UUID。好的,这实际上不是问题,因为您知道要查找的 UUID。

外围设备:作为外围设备的广播再次在前台和后台工作不同。在前台,它像任何普通的 BT 外围设备一样工作。在后台它的工作空间非常有限,因此您的外围设备UUID 被隐藏起来而不是广播。只有当中央设备(前台的 iPhone)向它请求信息时,它才会唤醒您的应用程序并显示它的 UUID。

所以这2个互相抵消了。由于您的后台扫描只能扫描具有特定 UUID 的设备,并且您的后台外围设备无法宣传其 UUID,因此它们无法看到彼此。

但是有一些我不明白的地方:在我的中心,我已经指定了 UUID [centralmgr scanForPeripheralsWithServices:[NSArray arrayWithObject:servicesUUID] options:scanOptions];。根据上面详述的功能,当外围设备在后台而中央设备在前台时,它不应该连接,但它确实如此!

有人知道在这种特定情况下发生了什么吗?或者也许是让我的两个设备在后台连接的解决方案?

谢谢!

PS:我找到的答案也很老(2013)。

4

1 回答 1

0

我认为当中心在前台时,它可以唤醒外围设备以在检测到外围设备时检索 UUID,但是当中心在后台时它不能。这就是为什么让双方都处于后台模式是行不通的。

于 2015-12-18T12:15:38.893 回答