Пример получения списка токенов с NFC смарт-карты (getTokensWithAlertMessage).
В данном случае:
// 1. Проверка наличия nfcWatcher.
// Объект существует, если инициализация менеджера прошла успешно
// и был передан флаг JCReadersNFC
id<JCNFCWatcher> nfcWatcher = JCManager.defaultManager.nfcWatcher;
if (!nfcWatcher) {
// 2. Обработка отсутствия объекта nfcWatcher
return;
}
[nfcWatcher
getTokensWithAlertMessage:@"You can scan NFC-tags by holding them behind the top of your device"
predicate:^BOOL(id<JCToken> _Nonnull token, BOOL * _Nonnull stop) {
// 3. При появлении нового токена проверяем его тип
if(token.type == JCTokenTypeCT2) {
// Если это токен Криптотокен 2 ЭП, то пропускаем его и останавливаем процесс поиска
*stop = YES;
return YES;
}
// Если токен не подходит, то игнорируем его и продолжаем поиск
return NO;
}
handler:^(NSArray<id<JCToken>> * _Nullable tokens, NSError * _Nullable error) {
if(error) {
// 4. Обработка ошибки поиска токенов
// NFC сессия будет закрыта.
return;
}
// 5. Обработка списка токенов (tokens)
// 5.1. Если необходимо сразу произвести какие-то действия над токеном,
// то необходимо тут же выполнять синхронные методы БЕЗ вызова execBlock или execBlockWithParameters,
// т.к. в этот момент NFC сессия все еще открыта.
// 5.2. Если никаких действий над токеном не планируется проводиться,
// то можно выйти из обработчика и NFC сессия закроется. И в дальнейшем все
// операции над токеном выполнять внутри execBlockWithParameters.
}];