0

我想确定我当前是否连接到配对的 iPhone 设备。我需要定期检查它(比如 5 秒)。我目前正在使用 ExternalAccessory 框架来识别它,但实现的代码没有为我提供配对 iPhone 的列表。

我已经实现的代码

- (EASession *)openSessionForProtocol:(NSString *)protocolString
{
    NSArray *accessories = [[EAAccessoryManager sharedAccessoryManager]
                            connectedAccessories];
    EAAccessory *accessory = nil;
    EASession *session = nil;

    for (EAAccessory *obj in accessories)
    {
        if ([[obj protocolStrings] containsObject:protocolString])
        {
            accessory = obj;
            break;
        }
    }

    if (accessory)
    {
        session = [[EASession alloc] initWithAccessory:accessory
                                           forProtocol:protocolString];
        if (session)
        {
            [[session inputStream] setDelegate:self];
            [[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
                                             forMode:NSDefaultRunLoopMode];
            [[session inputStream] open];
            [[session outputStream] setDelegate:self];
            [[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
                                              forMode:NSDefaultRunLoopMode];
            [[session outputStream] open];
        }
    }

    return session;
}

NSArray *accessories = [[EAAccessoryManager sharedAccessoryManager] connectedAccessories]; 返回我 0 台设备。恐怕此方法是否返回配对的蓝牙设备。

我的要求 如上所述,我想确定我当前是否连接到配对的 iPhone 设备。您可以向我建议实现该要求的替代方案。提前致谢。

4

1 回答 1

-1

iOS 设备使用蓝牙 4.0 ( BLE )相互配对,蓝牙 4.0 ( BLE ) 使用CoreBluetooth 框架访问。Apple 的文档非常适合这项技术,可以将您作为中央设备或外围设备引导您完成连接过程。

另一方面,外部附件用于与使用旧版蓝牙(例如蓝牙 2.0)的设备进行通信。它是一个较旧的框架,更容易出现难以克服的错误。此外,提交使用 BLE 的应用程序很容易,而由于设备电池消耗,Apple 对使用旧版本蓝牙的应用程序非常谨慎(因此 BLE(低功耗蓝牙)的 LE(低功耗)部分)。

使用带有 Apple 文档的 Core Bluetooth,应该很容易识别连接的 iOS 设备并与它们通信。

于 2015-05-18T14:10:09.950 回答