Обнаружить сопряженный iPhone с помощью ExternalAccessory Framework?

Я хочу определить, подключен ли я к моему сопряженному устройству 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 устройств. Я боюсь, если этот метод возвращает сопряженные устройства Bluetooth или нет.

Мое требование Как уже упоминалось выше, я хочу определить, подключен ли я в настоящее время к моему сопряженному устройству iPhone. Вы можете предложить мне альтернативы для реализации требования. Заранее спасибо.

1 ответ

Устройства iOS соединяются друг с другом с помощью Bluetooth 4.0 ( BLE), доступ к которому осуществляется с помощью инфраструктуры CoreBluetooth. Документы Apple достаточно хороши для этой технологии и проведут вас через процесс подключения в качестве центрального или периферийного устройства.

Внешний аксессуар, с другой стороны, используется для связи с устройствами, использующими более старые версии Bluetooth, например Bluetooth 2.0. Это более старая структура, и она более подвержена ошибкам, которые трудно преодолеть. Кроме того, подать приложение, использующее BLE, легко, в то время как Apple довольно настороженно относится к приложениям, которые используют более старую версию Bluetooth из-за расхода заряда аккумулятора устройства (отсюда и LE (Low Energy) часть BLE (Bluetooth Low Energy)).

Используя Core Bluetooth с документацией Apple, должно быть довольно легко идентифицировать подключенные устройства iOS и общаться с ними.

Другие вопросы по тегам