我有一个蓝牙应用程序,可通过低功耗与外围设备进行通信。

此外围设备还与iOS设备具有经典(HFP和/或A2DP)连接。有时经典连接有时会中断。

我需要的是能够从应用程序中通知用户经典连接已丢失。

如何使我的应用程序了解经典连接?

您更喜欢哪种方式?

最佳答案

虽然CoreBluetooth用于访问Bluetooth LE或4.0设备,但是您可以使用ExternalAccessory框架与其他蓝牙设备进行通信。

像这样:

- (void)registerForNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
}

- (void)accessoryDidConnect:(NSNotification *)notification
{
    // Weird thing with ExternalAccessory where this notification is called more than once per accessory...
    if ([[(EAAccessory *)[[(EAAccessoryManager *)notification.object connectedAccessories] lastObject] protocolStrings] count]) {
        // Valid call
        if ([[(EAAccessory *)[notification.userInfo valueForKey:EAAccessoryKey] protocolStrings] containsObject:/*Protocol string for the accessory*/]) {

        }
    }
}

- (void)accessoryDidDisconnect:(NSNotification *)notification
{
    if ([[(EAAccessory *)[notification.userInfo valueForKey:EAAccessoryKey] protocolStrings] containsObject:/*Protocol string for the accessory*/]) {
        // Disconnected
    }
}

为此,您必须在应用程序的info.plist中添加密钥“受支持的外部附件协议”,并在该密钥下列出阵列中的蓝牙设备的协议。

另请注意,要在App Store上进行分发,蓝牙设备必须在Apple MFi程序下注册,并且您必须是被设备制造商接受的开发人员。

关于ios - 蓝牙经典连接意识,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28696363/

10-10 23:59