Пин-код iOS Core Bluetooth

У меня есть периферийное устройство BLE, для которого требуется PIN-код. Я подключаюсь к этому периферийному устройству с помощью Core Bluetooth CBCentralManager на iOS 7.

Когда я подключаюсь к этому периферийному устройству, вызывается didConnectPeripheral (центральный делегат) прежде чем аутентификация PIN-кода будет успешно завершена.

iOS отображает диалоговое окно пин-кода только после вызова 'didConnectPeripheral'.

Мне нужно начать взаимодействовать с периферийным устройством, как только этот диалог PIN-кода будет завершен и процесс аутентификации завершится. Как я могу определить, когда это произошло?

Задача состоит в том, чтобы продолжить только после успешной аутентификации, но:

  1. iOS вызывает 'didFailToConnectPeripheral' до отображения диалогового окна.
  2. iOS больше не вызывает 'didConnectPeripheral', если авторизация PIN-кода прошла успешно.
  3. iOS больше не вызывает 'didFailToConnectPeripheral', если авторизация PIN-кода не удалась.

Из вышеизложенного мне не удалось определить:

  1. Когда диалог завершится.
  2. Была ли авторизация PIN-кода успешной.

Любая помощь будет оценена по достоинству.


person user4165247    schedule 21.10.2014    source источник
comment
Вы пытались просто переподключиться в didFailToConnectPeripheral? Продолжайте делать это, пока не получите успешное соединение. Как только вы позвоните на didConnectPerioheral, все готово.   -  person Paulw11    schedule 21.10.2014
comment
Вы нашли решение для этого? Даже в iOS 9 он не дает никаких уведомлений, когда оповещение об аутентификации завершается.   -  person    schedule 10.02.2016
comment
Привет, Бхупеш, решения пока нет.   -  person user4165247    schedule 15.08.2016


Ответы (1)


Исходя из моего опыта работы с CoreBluetooth, вы не получите никакой информации о том, авторизованы ли вы и когда авторизация пин-кода завершена, пока вы не попытаетесь выполнить неавторизованное действие, которое завершится ошибкой с одной из трех реакций:

InsufficientEncryption
InsufficientAuthentication
InsufficientAuthorization

Периферийное устройство определяет, какая ошибка будет возвращена. (Технически они определены GATT в спецификациях BLE 4.X, но все детали реализации контролируются на периферийной стороне)

person Robert Haworth    schedule 20.04.2015