JCReaderWatcher

@protocol JCReaderWatcher <NSObject>

Протокол поиска и контроля токенов на ридерах.

Протокол предоставляет возможность работы в одном из двух режимов:

  1. постоянный контроль подключения/отключения токенов;
  2. получение списка подключенных токенов.

Важно

Нельзя работать одновременно в двух режимах.

Методы

startWithQueue

- (BOOL)startWithQueue:(dispatch_queue_t _Nullable)queue notificationCenter:(NSNotificationCenter * _Nullable)notificationCenter tokenAttached:(JCTokenAttachedHandlerType _Nullable)tokenAttached tokenDetached:(JCTokenDetachedHandlerType _Nullable)tokenDetached watcherStopped:(JCCompleteHandlerType _Nullable)watcherStopped;

Запуск операции контроля подключения/отключения токенов на ридерах. Метод асинхронный.

Для получения изменений в составе токенов необходимо передать tokenAttachedHandler, tokenDetachedHandler, watcherStoppedHandler и/или notificationCenter.

Операцию контроля подключения/отключения токенов можно прервать 2-мя способами:

  1. вызвать метод stop;
  2. вызвать метод finalize у JCManager.

Пример: Мониторинг токенов.

Аргументы:

  • queue (dispatch_queue_t) - очередь, в которой вызываются методы notificationCenter и коллбеки tokenAttachedHandler, tokenDetachedHandler, watcherStoppedHandler;
  • notificationCenter (NSNotificationCenter) - центр нотификации, сообщающий об изменениях в составе токенов. Отправляет уведомления JCTokenAttachedNotification / JCTokenDetachedNotification при подключении / отключении токена. Объект токена хранится в параметре JCNotificationParamToken словаря userInfo соответствующего уведомления;
  • tokenAttached (JCTokenAttachedHandlerType) - коллбек, вызываемый при подключении токена;
  • tokenDetached (JCTokenDetachedHandlerType) - коллбек, вызываемый при отключении токена;
  • watcherStopped (JCCompleteHandlerType) - коллбек, вызываемый при остановки процесса контроля токенов.

Результат:

Возвращает значение типа BOOL:
  • YES - операция запущена;
  • NO - операция не запущена.

getTokensWithQueue

- (BOOL)getTokensWithQueue:(dispatch_queue_t _Nullable)queue attempts:(NSUInteger)attempts attemptsDelay:(NSTimeInterval)attemptsDelay predicate:(JCTokenPredicateType _Nullable)predicate handler:(JCTokensHandlerType)handler;

Запуск операции получения подключенных токенов. Метод асинхронный.

Операцию получения подключенных токенов можно прервать 3-мя способами:

  1. передать предикат (аргумент predicate) и в необходимый момент установить stop в YES;
  2. вызвать метод stop;
  3. вызвать метод finalize у JCManager.

Пример: Получение списка токенов.

Аргументы:

  • queue (dispatch_queue_t) - очередь, в которой вызываются методы handler;
  • attempts (NSUInteger) - количество попыток выполнения операции в случае отсутствия токенов. Некоторые ридеры, например bR301 BLE, не всегда моментально появляются в системе и им нужно некоторое время на подключение. Данный аргумент дает возможность несколько раз выполнить операцию для гарантированного определения подключенных ридеров.;
  • attemptsDelay (NSTimeInterval) - задержка в между попытками выполнения операции (в секундах);
  • predicate (JCTokenPredicateType) - предикат для фильтрации токенов. При помощи него можно выбирать необходимые токены и прервать процесс поиска токенов;
  • handler (JCTokensHandlerType) - обработчик результата выполнения операции.

Результат:

Возвращает значение типа BOOL:
  • YES - операция запущена;
  • NO - операция не запущена.

stop

- (BOOL)stop;

Запуск процесса прерывания текущей операции. Метод асинхронный.

Результат:

Возвращает значение типа BOOL:
  • YES - процесс прерывания текущей операции запущен;
  • NO - процесс прерывания текущей операции не запущен.