Пример получения списка токенов, подключенных через ридеры iR301-UL, iR301-U, bR301, JaCarta USB и |bR301BLE|(|jcrw_getTokensWithQueue|).
В данном случае:
// 1. Проверка наличия readerWatcher.
// Объект существует, если инициализация менеджера прошла успешно
// и был передан хотя бы один из следующих флагов: JCReadersIR301AndBR301, JCReadersBR301BLEAndBR500, JCReadersCTK
id<JCReaderWatcher> readerWatcher = JCManager.defaultManager.readerWatcher;
if (!readerWatcher) {
// 2. Обработка отсутствия объекта readerWatcher
return;
}
// 3. Запуск процесса поиска токенов
BOOL started = [readerWatcher
getTokensWithQueue:dispatch_get_main_queue()
attempts:5
attemptsDelay:1.0
predicate:^BOOL(id<JCToken> _Nonnull token, BOOL * _Nonnull stop) {
// 5. При появлении нового токена проверяем его тип
if(token.type == JCTokenTypeCT2) {
// Если это токен Криптотокен 2 ЭП, то пропускаем его и останавливаем процесс поиска
*stop = YES;
return YES;
}
// Если токен не подходит, то игнорируем его и продолжаем поиск
return NO;
}
handler:^(NSArray<id<JCToken>> * _Nullable tokens, NSError * _Nullable error) {
if(error) {
// 6. Обработка ошибки поиска токенов
return;
}
// 7. Обработка списка токенов (tokens)
}];
if (!started) {
// 4. Обработка ситуации, когда процесс поиска токенов не запустился.
return;
}