【问题标题】:iOS Detect Bluetooth connection/disconnectioniOS 检测蓝牙连接/断开
【发布时间】:2018-06-25 08:49:27
【问题描述】:

即使我的应用程序在后台,是否可以在蓝牙设备与 iOS 连接或断开连接时收到通知? 在 Android 上,我使用 ACTION_ACL_CONNECTEDACTION_ACL_DISCONNECTED 事件。但我找不到 iOS 的等价物。

我发现CBCentralManager 可以用来监控蓝牙事件,但是当蓝牙设备连接/断开时,我的函数不会被调用,只有当我启用/禁用蓝牙时。这是我这边的错误还是正常的?

我还找到了有关音频路由更改的文档,这也是检测蓝牙连接/断开连接的一个想法。只需检查新路由的种类,然后检测连接的蓝牙设备即可。

在文档中,我还发现了 NSNotification 类型,如 IOBluetoothHostControllerXXX,但没有对它们进行任何解释。有人用过吗?

有更好的东西还是我错过了什么?

【问题讨论】:

    标签: ios bluetooth background-process core-bluetooth ios-bluetooth


    【解决方案1】:

    一般无法收到有关蓝牙外围设备连接和断开连接的通知。您可以获得您的应用连接到的 BLE 外围设备的连接和断开事件。

    例如,如果您的应用启动与心率传感器的连接,那么当连接成功时,您将收到对CBCentralManagerDelegate 连接函数的调用。如果该设备随后被关闭或超出范围,那么您将收到对断开连接委托方法的调用。

    如果其他应用启动并建立连接,那么您将不会收到回调。

    正如您所提到的,您可以监控音频路由变化以推断蓝牙音频设备已连接/断开,但这也会在插入耳机时触发。

    【讨论】:

    • 感谢您的详细回答,我尝试更改音频路由,但不幸的是,如果我的应用程序没有播放声音(事实并非如此),这在后台不起作用...它似乎很难解决所有这些限制......
    • 是的,它不会在后台运行;如果您不是活跃的声音应用程序,那么 iOS 会认为您不需要任何有关音频路由的信息。
    • 不同的方法。苹果认为用户体验是最重要的。后台执行受到限制,因为它会对电池寿命和整体系统性能产生负面影响。如果您的应用没有主动使用音频外围设备,那么您无需了解连接/断开连接。
    • 是的,但就我而言,我想做的是检测蓝牙连接/断开连接以了解用户何时进入/离开他的汽车,这对我的应用程序的用户体验来说是一个很大的改进。应该可以做到,但我只是找不到如何在所有这些限制下做到这一点......
    • 在 iOS 11 / iOS 12 的苹果方面,这个话题有什么改进吗?我目前也在 iOS 方面苦苦挣扎,以确定用户是否连接或断开了特定的蓝牙连接。
    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2014-07-18
    相关资源
    最近更新 更多