Поддержка словаря iOS Bluetooth CBPeripheralManager

В документации CBPeripheralManager метод startAdvertising получает словарь, содержащий данные, которые вы хотите рекламировать. Согласно документации, CBPeripheralManager.startAdvertising принимает только два возможных ключа в своем словарном аргументе: CBAdvertisingDataLocalNameKey и CBAdvertisingDataServiceUUIDsKey.

Однако в документации Apple по превращению устройства iOS в iBeacon они предполагают, что вы можете передать словарь, который возвращается из метода периферийных данных CLBeaconRegion. Словарь, возвращаемый этим методом, содержит 1 пару значений ключа с ключом с именем " kCBAdvDataAppleBeaconKey ", а значением является идентификатор близости, основного, младшего и маякового идентификатора.

Здесь отображается дамп словаря, возвращенного методом Периферийные данные: Словарь Дамп

У меня такой вопрос: как метод PeripheralManager.startAdvertise получает словарь с ключом " kCBAdvDataAppleBeaconKey " и по-прежнему транслируется без ошибок, если единственными поддерживаемыми ключами являются CBAdvertisingDataLocalNameKey и CBAdvertisingDataServiceUUIDsKey?

1 ответ

Самое простое и наиболее вероятное объяснение состоит в том, что документация о CBPeripheralManager.startAdvertising, принимающая только два ключа, является неточной. Документы, возможно, просто никогда не обновлялись после того, как была выпущена поддержка iBeacon.

В связи с этим я подозреваю (но не могу подтвердить), что метод поддерживает еще больше ключей в качестве частных API. Вы должны декомпилировать двоичный файл фреймворка, чтобы выяснить, что это такое.

Реальность такова, что очень часто документация не синхронизируется с новыми функциями, добавленными в API, и даже более распространена в документации, не говоря уже о секретном поведении, которое не поддерживается публично.

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