Обнаружить сопряженный 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 и общаться с ними.