...
- RUTOKEN_CONTROL_CODE_START_NFC - запуск обнаружения по NFC;
- RUTOKEN_CONTROL_CODE_STOP_NFC - остановка обнаружения по NFC;
- RUTOKEN_CONTROL_CODE_LAST_NFC_STOP_REASON - возврат причины прекращения обнаружения по NFCRUTOKEN_CONTROL_CODE_STOP_NFC_WITH_ERROR - остановка обнаружения по NFC с показом иконки ошибки. Параметр pbSendBuffer содержит сообщение о завершении работы с картой с уведомлением об ошибке;
- RUTOKEN_CONTROL_CODE_LAST_NFC_STOP_REASON - возврат причины прекращения обнаружения по NFC.
Параметр pbSendBuffer используется для передачи дополнительной информации:
- при RUTOKEN_CONTROL_CODE_START_NFC: параметр задан в формате
"\(waitMessage)\0\(workMessage)\0\0"
и содержит два сообщения:- waitMessage отображается во время ожидания карты,
- workMessage отображается во время работы с картой.;
- при RUTOKEN_CONTROL_CODE_STOP_NFC: параметр содержит сообщение о завершении работы с картой.;
- при RUTOKEN_CONTROL_CODE_LAST_NFC_STOP_REASON: параметр не используется.
...
- получить список доступных ридеров с помощью функции SCardListReaders;
- вызов функции SCardConnect для нужного ридера с параметром dwShareMode == SCARD_SHARE_DIRECT;
- вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_START_NFC;
- работа с Рутокеном;
- вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFC;
- вызов функции SCardDisconnect.
Причину завершения обнаружения NFC устройств можно получить с помощью вызова функции SCardControl с параметром RUTOKEN_CONTROL_CODE_LAST_NFC_STOP_REASON.
...
- RUTOKEN_NFC_STOP_REASON_FINISHED - вызов SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFC;
- RUTOKEN_NFC_STOP_REASON_UNKNOWN - причина завершения неизвестна;
- RUTOKEN_NFC_STOP_REASON_TIMEOUT - системный таймаут (на устройствах под управлением iOS предоставляется 20 секунд на одну NFC сессию);
- RUTOKEN_NFC_STOP_REASON_CANCELLED_BY_USER - нажатие кнопки "Отмена" на системном окне обнаружения NFC;
- RUTOKEN_NFC_STOP_REASON_NO_ERROR - системное окно работы с NFC еще не опускалось, ошибок нет.
Получение типа устройства Рутокен
...
- Вызвать функцию SCardEstablishContext;
- Сгенерировать QR-код для создания пары с помощью функции generatePairingQR;
- Запустить процесс ожидания подключения ридеров, вызвав функцию SCardGetStatusChange;
- Осуществить сопряжение с VCR и дождаться подключения ридера на уровне RtPcsc (для iPad будут отображаться доступные виртуальные считыватели);
- Вызов функции SCardConnect для нужного считывателя с параметром dwShareMode == SCARD_SHARE_DIRECT;
- Вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_START_NFC;
- Работа с Рутокеном;
- Вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFC;
- Вызов функции SCardDisconnect.
Пример работы с API
Примеры работы с API есть в репозитории на GitHub rutoken-demoshift-ios в файле https://github.com/AktivCo/rutoken-demoshift-ios/blob/master/demoshift/PcscWrapper/PcscWrapper.swift