Пример мониторинга подключения/отключения токенов, подключаемых через ридеры iR301-UL, iR301-U, bR301, JaCarta USB и bR301 BLE (startWithQueue).
В данном случае:
// 1. Проверка наличия readerWatcher.
// Объект существует, если инициализация менеджера прошла успешно
// и был передан хотя бы один из следующих флагов: JCReadersIR301AndBR301, JCReadersBR301BLEAndBR500, JCReadersCTK
id<JCReaderWatcher> readerWatcher = JCManager.defaultManager.readerWatcher;
if (!readerWatcher) {
// 2. Обработка отсутствия объекта readerWatcher
return;
}
// 3. Запуск процесса мониторинга токенов
BOOL started = [readerWatcher
startWithQueue:dispatch_get_main_queue()
notificationCenter:NSNotificationCenter.defaultCenter
tokenAttached:^(id<JCToken> _Nonnull token) {
// 5. Обработка события подключения токена
}
tokenDetached:^(id<JCToken> _Nonnull token) {
// 6. Обработка события отключения токена
}
watcherStopped:^{
// 7. Обработка события остановки мониторинга токенов
}];
if (!started) {
// 4. Обработка ситуации, когда процесс мониторинга токенов не запустился.
return;
}
Регистрация уведомления о подключения токена
tokenAttachedObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:JCTokenAttachedNotification
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * _Nonnull note) {
// Обработка события подключения токена
id<JCToken> token = [note.userInfo objectForKey:JCNotificationParamToken];
}];
// ...
// Не забудьте удалить tokenAttachedObserver как того требует [NSNotificationCenter addObserverForName:object:queue:usingBlock]
[[NSNotificationCenter defaultCenter] removeObserver:tokenAttachedObserver];
tokenAttachedObserver = nil;
Регистрация уведомления об отключении токена
tokenDetachedObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:JCTokenDetachedNotification
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * _Nonnull note) {
// Обработка события отключения токена
id<JCToken> token = [note.userInfo objectForKey:JCNotificationParamToken];
}];
// ...
// Не забудьте удалить tokenDetachedObserver как того требует [NSNotificationCenter addObserverForName:object:queue:usingBlock]
[[NSNotificationCenter defaultCenter] removeObserver:tokenDetachedObserver];
tokenDetachedObserver = nil;