iOS - 在后台扫描 BLE 设备

Posted

技术标签:

【中文标题】iOS - 在后台扫描 BLE 设备【英文标题】:iOS - Scan BLE devies in background 【发布时间】:2014-10-04 12:17:34 【问题描述】:

我注意到 scanForPeripheralsWithServices 不在后台工作。我尝试了以下操作:

    指定的 UUID 和选项 nil 设置 UIBackgroundModes bluetooth-central 和 bluetooth-peripheral info.plist

我想要一个可以在后台连续扫描 BLE 设备的后台服务。 感谢您的帮助!

【问题讨论】:

【参考方案1】:

背景模式在扫描时的工作方式不同。

每个外围设备仅在第一次被观察到时才报告(在后台模式下,如果不连接到它,您将无法通过 RSSI 跟踪接近度)。

您可以向不在范围内的外围设备发起连接请求,当外围设备可用时,连接将完成。不必主动扫描(初始发现除外,因此您知道要连接哪个 UUID)。

也许,您可以通过在后台发送连接请求而不是扫描来解决问题。这样一来,ios 就知道您对特定外围设备真正感兴趣,我可以想象这会影响发现时间。

【讨论】:

我希望我的应用在我连接的任何外围设备的 RSSI 值发生变化时得到通知(背景)。我该怎么办? 拨打[peripheral readRSSI]; (***.com/questions/14933688/…) 感谢您的快速回复。我试过这个 NSTimer *rssiTimer; [rssiTimer 无效]; rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:peripheral selector:@selector(readRSSI) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop]addTimer:rssiTimer forMode:NSRunLoopCommonModes];当应用程序处于前台时它工作正常,但当应用程序进入后台时它停止读取 rssi 值。

以上是关于iOS - 在后台扫描 BLE 设备的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 后台实现 BLE 扫描

进入后台时停止BLE扫描?

Cordova:在后台模式下扫描 iBeacons / BLE(iOS 和 Android)

蓝牙 LE iOS 无法在后台扫描

iOS BLE使用(用户)杀死App进行扫描

iOS BLE后台重连