Получите MAC-адрес устройства Bluetooth с помощью платформы внешних аксессуаров Apple

У меня есть устройство Bluetooth, совместимое с Apple.

Теперь я пытаюсь получить MAC-адрес этого устройства в приложении. Можно ли получить MAC-адрес устройства Bluetooth с помощью Apples "External Accessory framework"?

Я слышал, что получить MAC-адрес обычным способом невозможно, но я недостаточно хорошо понимаю «Внешнюю структуру аксессуаров», чтобы решить, возможно ли это с этой структурой или нет.


person user1219432    schedule 23.02.2012    source источник
comment
Зачем нужно получать mac-адрес аксессуара? Думаю, без него можно выжить! Возможно, мы сможем решить вашу настоящую проблему другим способом.   -  person FormigaNinja    schedule 03.07.2015


Ответы (3)


Нет, вы не можете получить MAC-адрес EAAccessory. Я имею в виду, вы можете использовать команду ниже:

NSString *macAddress = [accessory valueForKey:@"macAddress"];

Но это не задокументировано, как вы можете увидеть в документах EAAccessory. Apple может отклонить ваше приложение, или эта функция может перестать работать при следующем обновлении iOS и т. Д.

Если вы просто пытаетесь выполнить настраиваемое действие на определенной модели устройства, в большинстве случаев вы можете использовать одну из доступных сведений:

<EAAccessory: 0x17445c180> {
  connected:YES
  connectionID:29354791
  name: 23HG YKL CXN
  manufacturer: MANUFACTURER NAME
  modelNumber: 878253-222
  serialNumber: //not always available
  firmwareRevision: 1.0.0
  hardwareRevision: 1.0.0
  protocols: (
    "com.some.protocol",
    "com.some.other.protocol"
  )
}

Или их смесь, например (номер модели + версия прошивки) и т. Д.

PS: Я знаю, что с приведенной выше информацией вы не знаете разницы между двумя идентичными устройствами, но в зависимости от того, какое приложение вы разрабатываете, это все равно не имеет значения.

Надеюсь, поможет.

person FormigaNinja    schedule 03.07.2015

Попробуй это:

NSString *macAddress = [accessory valueForKey: @"macAddress"];

но я заметил, что это работает только с новейшими устройствами. (Аксессуар iPad 1 не поддерживает кодировку ключевого значения для ключа macAddress)

Загляните во весь словарь аксессуаров, чтобы найти дополнительные ключи:

NSLog(@"%@", accessory);
person Tommaso Resti    schedule 01.03.2013
comment
Одобряет ли Apple приложения, использующие этот способ? - person anoop4real; 26.06.2018

Короткий ответ - нет, вы не можете этого сделать.

Причина в том, что все, что делает фреймворк внешних аксессуаров, - это настраивает потоки входных и выходных данных с устройством. Если вы хотите получить MAC-адрес от оборудования, оборудование должно предоставить эту информацию через любой механизм связи, который они создали для своих устройств и связанного с ними программного обеспечения iOS.

person RLH    schedule 13.03.2012