2014-10-04 68 views
0

我注意到scanForPeripheralsWithServices在后台不工作。我有以下尝试:iOS - Scan BLE devies在后台

  1. 指定UUID和期权零
  2. 集UIBackgroundModes蓝牙中央和蓝牙外设的info.plist

我想应该在后台连续扫描BLE装置后台服务。 感谢您的帮助!

回答

0

背景模式对于扫描的工作方式不同。

每个外围设备仅在观察到的第一次报告中报告(在背景模式下,您无法通过RSSI跟踪邻近设备)。

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

也许,您可以通过在后台发送连接请求而不是扫描来解决问题。这样,iOS知道你对某个特定外设非常感兴趣,我可以想象这会影响发现时间。

+0

我希望我的应用在任何连接的外围设备的RSSI值发生变化(背景)时收到通知。我该怎么办? – user1517635 2014-10-04 12:29:39

+0

只需调用'[peripheral readRSSI];'(http://stackoverflow.com/questions/14933688/scan-peripheral-on-background/19857901#19857901) – l0gg3r 2014-10-04 12:32:29

+0

感谢您的快速回复。我试过这个 NSTimer * rssiTimer; [rssiTimer invalidate]; rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:外设选择器:@selector(readRSSI)userInfo:nil repeatats:YES]; [[NSRunLoop currentRunLoop] addTimer:rssiTimer forMode:NSRunLoopCommonModes]; 当应用程序处于前台时它的工作正常,但当应用程序进入后台时它停止读取rssi值。 – user1517635 2014-10-06 09:46:06