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 设备的主要内容,如果未能解决你的问题,请参考以下文章