使用ExternalAccessory框架检测配对的iPhone?

时间:2015-05-18 11:47:21

标签: ios objective-c iphone eaaccessory

我想确定我目前是否已连接到配对的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 *配件= [[EAAccessoryManager sharedAccessoryManager]                                 connectedAccessories];给我返回0个设备。 我担心这种方法是否会返回配对的蓝牙设备。

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

1 个答案:

答案 0 :(得分:0)

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

另一方面,

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

将Core Bluetooth与Apple的文档一起使用,识别连接的iOS设备并与之通信非常容易。