如果在 iPhone 的蓝牙设置中建立连接,我如何收到通知?

Posted

技术标签:

【中文标题】如果在 iPhone 的蓝牙设置中建立连接,我如何收到通知?【英文标题】:How do I get notified if a connection is established in bluetooth settings of iPhone? 【发布时间】:2017-06-06 08:41:56 【问题描述】:

我有一部 iPhone 正尝试通过我的应用程序连接到外围设备,但由于某种原因(不是问题),连接在几分钟后断开。我的应用程序不会尝试自动重新连接到此外围设备,但在 iPhone 设置中,我可以看到外围设备仍显示为已连接。 我从 CoreBluetooth 框架中获得了断开连接回调,但没有跟随 didConnect 回调,因为应用程序没有尝试再次连接。

当系统自动连接到此外围设备时,我有什么方法可以在我的应用程序中知道吗?或者我可以订阅任何系统通知以了解连接状态何时发生变化?

提前感谢您的帮助。

【问题讨论】:

试试这个:- ***.com/questions/17574399/… 如果外围设备断开连接,您的应用有责任发出新的connect 调用,如果这是您想要的 @Paulw11 考虑这种情况。我通过我的应用程序连接到设备,如果设备和手机相距很远,那么它们会断开连接,当它们回到范围内时,它们会再次连接。如何通知我的应用程序已回到范围内并发送连接呼叫?在后台搜索设备会消耗大量电池,不是吗? 你不必;只要外围设备断开连接并且连接将处于挂起状态,只需发出connect。一旦设备回到范围内,连接将完成,您的应用程序将收到通知。如果您尚未采用 Core 蓝牙后台模式,则只有在您的应用回到前台且设备在范围内时,连接才会完成。 所以基本上是自动重连? 【参考方案1】:

CoreBluetooth 框架为您提供了一个委托方法来了解蓝牙连接的状态。

import CoreBluetooth

class ViewController: CBPeripheralManagerDelegate 

var bluetoothPeripheralManager: CBPeripheralManager? 

override func viewDidLoad() 
    super.viewDidLoad()
    let options = [CBCentralManagerOptionShowPowerAlertKey:0] 
    bluetoothPeripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: options)


func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager) 
    var statusMessage = ""

    switch peripheral.state 
    case CBPeripheralManagerState.PoweredOn:
        statusMessage = "Bluetooth Status: Turned On"

    case CBPeripheralManagerState.PoweredOff:
        statusMessage = "Bluetooth Status: Turned Off"

    case CBPeripheralManagerState.Resetting:
        statusMessage = "Bluetooth Status: Resetting"

    case CBPeripheralManagerState.Unauthorized:
        statusMessage = "Bluetooth Status: Not Authorized"

    case CBPeripheralManagerState.Unsupported:
        statusMessage = "Bluetooth Status: Not Supported"

    default:
        statusMessage = "Bluetooth Status: Unknown"
    
    print(statusMessage)
  

这个peripheralManagerDidUpdateState 方法为您提供蓝牙的状态。希望对您有所帮助。获取状态消息并根据您的需要进行操作。

【讨论】:

如果操作系统连接到设备而不是通过我的应用程序,是否会触发? 只能通过应用程序

以上是关于如果在 iPhone 的蓝牙设置中建立连接,我如何收到通知?的主要内容,如果未能解决你的问题,请参考以下文章

与 Iphone、Droid 的蓝牙 HFP 连接

iPhone7蓝牙搜不到设备怎么办?iPhone7蓝牙连不上怎么办

在多人连接iOS 10中无法通过蓝牙连接

苹果MacBook Air怎样连接iPhone手机用蓝牙音响播放音乐?

iPhone 上的最大蓝牙连接数是多少?

如何将 iPhone 连接到蓝牙设备?