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

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

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

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

【问题讨论】:

    标签: ios bluetooth-lowenergy


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我希望我的应用在我连接的任何外围设备的 RSSI 值发生变化时得到通知(背景)。我该怎么办?
    • 拨打[peripheral readRSSI]; (stackoverflow.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 值。
    猜你喜欢
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    相关资源
    最近更新 更多