Обзор
Вспомогательный класс для открытия контейнеров.
Это оболочка метода openContainerById:callback: (TAGManager) для вызывающих объектов, обеспечивающая поддержку таймаутов.
Ниже приведен пример, показывающий ожидание загрузки контейнера до 0,1 секунды перед возвратом к контейнеру по умолчанию:
NSTimeInterval timeout = 0.1; TagManager *tagManager = [TagManager instance]; TAGContainerFuture *future = [TAGContainerOpener openContainerWithId:@"GTM-XXXX" tagManager:tagManager openType:kTAGOpenTypePreferNonDefault timeout:&timeout]; TAGContainer *container = [future get];
Если вызывающая сторона хочет получать асинхронное уведомление, когда контейнер доступен, но хочет вручную указать тайм-аут равным 0,5 секунды, тогда вызывающая сторона должна создать подкласс TAGContainerOpenerNotifier , выполнить вызов openContainerWithId:tagManager:openType:timeout:notifier: (TAGContainerOpener) с таймаутом. установите значение 0,5 и добавьте реализацию вContainerAvailable: (TAGContainerOpenerNotifier-p) для обработки уведомления о доступности контейнера.
Статические открытые функции-члены | |
(id <TAGContainerFuture> ) | + openContainerWithId:tagManager:openType:тайм-аут: |
Ожидает загрузки контейнера в timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и возвращает TAGContainerFuture . | |
(пустота) | + openContainerWithId:tagManager:openType:тайм-аут:уведомитель: |
Ожидает загрузки контейнера в timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и вызывает уведомитель, когда контейнер доступен. | |
(НСтимеинтервал) | + таймаут по умолчанию |
Возвращает тайм-аут по умолчанию для запроса контейнера. |
Документация по функциям-членам
+ (id< TAGContainerFuture >) openContainerWithId: | (НСтрока *) | идентификатор контейнера | |
менеджер тегов: | ( Менеджер тегов *) | Менеджер тегов | |
открытыйТип: | ( ТАГОпенТип ) | openType | |
тайм-аут: | (НСтимеинтервал *) | тайм-аут | |
Ожидает загрузки контейнера в timeout
(не по умолчанию или свежего, в зависимости от указанного openType
) и возвращает TAGContainerFuture
.
Если открытый тип — kTAGOpenTypePreferNonDefault
, загружается контейнер, отличный от стандартного (сохраненный или полученный из сети), и TAGContainerFuture
разблокируется, как только происходит одно из следующих событий:
- сохраненный контейнер загружается.
- если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, get (TAGContainerFuture-p) может вернуть контейнер по умолчанию.
Если открытый тип — kTAGOpenTypePreferFresh
, загружается новый (сохраненный или полученный из сети) контейнер, и TAGContainerFuture разблокируется, как только происходит одно из следующих событий:
- загружается сохраненный свежий контейнер.
- если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, get (TAGContainerFuture-p) может содержать значения по умолчанию или устаревший сохраненный контейнер.
Если вы вызовете один из методов openContainer во второй раз с заданным containerId
, будет возвращен TAGContainerFuture
, метод get (TAGContainerFuture-p) которого вернет тот же контейнер, что и при первом вызове.
- Параметры:
идентификатор контейнера Идентификатор контейнера для загрузки. Менеджер тегов TAGManager для получения контейнера. тайм-аут Максимальное количество секунд ожидания загрузки контейнера из сохраненного хранилища. Если ноль, будет использоваться defaultTimeout . openType Выбор способа открытия контейнера.
- Возврат:
- TAGContainerFuture , который будет ждать истечения
timeout
ожидания и возвращать контейнер, когда он станет доступен.
+ (недействительный) openContainerWithId: | (НСтрока *) | идентификатор контейнера | |
менеджер тегов: | ( Менеджер тегов *) | Менеджер тегов | |
открытыйТип: | ( ТАГОпенТип ) | openType | |
тайм-аут: | (НСтимеинтервал *) | тайм-аут | |
уведомитель: | (id< TAGContainerOpenerNotifier >) | уведомитель | |
Ожидает загрузки контейнера в timeout
(не по умолчанию или свежего, в зависимости от указанного openType
) и вызывает уведомитель, когда контейнер доступен.
Если открытый тип — kTAGOpenTypePreferNonDefault
, контейнер не по умолчанию (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:
- сохраненный контейнер загружается.
- если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, контейнер, передаваемый в уведомитель, становится контейнером по умолчанию.
Если открытый тип — kTAGOpenTypePreferFresh
, новый контейнер (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:
- загружается сохраненный свежий контейнер.
- если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, контейнер, переданный в уведомитель, может содержать значения по умолчанию или устаревший сохраненный контейнер.
Если вы вызываете один из методов openContainer второй раз с заданным containerId
, тот же контейнер, возвращенный из предыдущего вызова, будет передан в уведомитель, как только он станет доступен.
- Параметры:
идентификатор контейнера Идентификатор контейнера для загрузки. Менеджер тегов TAGManager , используемый для получения контейнера. openType Выбор способа открытия контейнера. тайм-аут Максимальное количество секунд ожидания загрузки контейнера из сохраненного хранилища. Если ноль, будет использоваться defaultTimeout . уведомитель Необязательный уведомитель, который будет вызван, когда контейнер станет доступен. Он будет вызван с новым контейнером, если он доступен и загружен до истечения времени ожидания; в противном случае он будет вызван с несвежим контейнером. Обратите внимание, что уведомитель может быть вызван из другого потока.
+ (NSTimeInterval) defaultTimeout |
Возвращает тайм-аут по умолчанию для запроса контейнера.
- Возврат:
- Тайм-аут по умолчанию в секундах.