【问题标题】:Using Core Bluetooth to get Bluetooth LE peripheral advertisements in background使用 Core Bluetooth 在后台获取蓝牙 LE 外设广告
【发布时间】:2012-12-14 14:25:59
【问题描述】:

当我的应用在后台运行时,我无法弄清楚如何接收蓝牙 LE 外围设备广告。也就是说,当我的应用程序在后台时,它永远不会到达 didDiscoverPeripheral() 方法——广告所在的位置。有谁知道我需要如何配置我的应用程序,以便在我的应用程序处于背景?当我的应用程序在后台时,这可以通过线程轮询来完成吗?注意:我想从所有 BLE 设备获取广告,而不是定义数量的 BLE 设备。

感谢您的帮助,

凯西

【问题讨论】:

    标签: iphone objective-c ios bluetooth bluetooth-lowenergy


    【解决方案1】:

    我正在通过我的应用程序执行此操作。

    在后台模式下,CoreBluetooth 据说比外围设备的广告间隔慢 55 倍。为了加快速度,我对外围设备进行了编程,使其在前 30 秒内每 20 毫秒发布一次广告。

    您还必须在项目 Targets -> Info 中将“需要后台模式”定义为“App 使用 CoreBluetooth 进行通信”。

    应用在后台模式下查找外围设备确实需要一段时间。

    【讨论】:

    • 感谢您的帮助。我一回到家就试试这个,如果它有效,我会告诉你。为了确保您理解,您的应用程序将正确地到达 didDiscoverPeripheral() 方法吗?反过来,允许您的应用解析外围设备广告..
    • 嗯,我仍然无法让它工作。正如你所说,我将我的广告间隔切换为 20 毫秒。我认为我的问题可能是我使用的是不受限制的扫描(例如:scanForPeripherals:nil options:options)而不是受限扫描。当您的应用程序进入后台有人声明here 时,iOS 可能会取消无限制扫描。您使用的是不受限制的扫描还是受限制的扫描?我想为我的应用程序使用不受限制的 - 如果可能的话。感谢您的帮助。
    • 好的,我搞定了。您必须使用受限扫描,并且必须像 henrik 提到的那样将间隔设置为 20 毫秒左右。谢谢。
    • 你们设置间隔是什么意思?我找不到任何提供此功能的功能。你能帮忙吗?
    • 抱歉,刚刚注意到你们的 cmets (Dave/Foresightyj)。您必须使用其固件将 BLE 外围设备设置为以 20 毫秒的间隔进行广告。当 BLE 外围设备设置为以 20 毫秒的间隔做广告时,我的应用程序能够在大约 2-5 秒内在后台接收广告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多