TAGContainerOpener 类参考

TAGContainerOpener 类参考

概览

用于打开容器的辅助类。

这是为提供超时支持的调用方 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: (TAGContainerOpenerNot the available notification-p)

静态公开成员函数

(id<TAGContainerFuture >)+ openContainerWithId:tagManager:openType:timeout:
 等待最多 timeout 秒来等待容器加载(非默认容器,或刷新容器,具体取决于指定的 openType),并返回 TAGContainerFuture
(void) + openContainerWithId:tagManager:openType:timeout:notifier:
 等待最多 timeout 秒来等待容器加载(非默认或全新,具体取决于指定的 openType),并在容器可用时调用通知程序。
(NSTimeInterval)+ defaultTimeout
 返回请求容器的默认超时。

成员函数文档

+ (id<TAGContainerFuture>) openContainerWithId: (NSString *)  containerId
tagManager: TAGManager *) tagManager
openType: (TAGOpenType)TAGOpenType openType
超时: (NSTimeInterval *) 超时

等待最多 timeout 秒来等待容器加载(非默认容器,或刷新容器,具体取决于指定的 openType),并返回 TAGContainerFuture

如果 open 类型为 kTAGOpenTypePreferNonDefault,那么一旦发生以下任一情况,系统会加载非默认容器(即从网络中保存或检索到的容器),并立即解除对 TAGContainerFuture 的阻塞:

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器到期,get (TAGContainerFuture-p) 可能会返回默认容器。

如果 open 类型为 kTAGOpenTypePreferFresh,那么一旦发生以下任一情况,系统会加载新的(保存或从网络中检索到的)容器,并立即解除对 TAGContainerFuture 的阻塞:

  • 已保存的新鲜容器即可加载完毕
  • 如果没有保存的容器或保存的容器已过时,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器到期,get (TAGContainerFuture-p) 可能会包含默认值或保存的过时容器。

如果您使用给定的 containerId 再次调用其中一个 openContainer 方法,系统将返回一个 TAGContainerFuture,其 get (TAGContainerFuture-p) 将返回与第一次调用相同的容器。

参数:
containerId要加载的容器的 ID。
tagManager用于获取容器的 TAGManager
超时从已保存的存储区中加载容器所需的最长秒数。如果为 nil,将使用 defaultTimeout
openType选择如何打开容器。
返回
一个 TAGContainerFuture,最多等待 timeout,并在容器可用时返回容器。
+ (void) openContainerWithId: (NSString *)  containerId
tagManager: TAGManager*) tagManager
openType: (TAGOpenType)TAGOpenType openType
超时: (NSTimeInterval *) 超时
通知程序: (id< TAGContainerOpenerNotifier >) 通知程序

等待最多 timeout 秒来等待容器加载(非默认或全新,具体取决于指定的 openType),并在容器可用时调用通知程序。

如果 open 类型为 kTAGOpenTypePreferNonDefault,则系统会加载非默认容器(即从网络中保存或检索到的非默认容器),并将该容器传递到通知程序中。发生以下任一情况时,系统会立即调用通知程序:

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器到期,则传入通知程序的容器为默认容器。

如果 open 类型为 kTAGOpenTypePreferFresh,则系统会加载新的(从网络中保存或检索到的)容器并将其传递到通知程序。发生以下任一情况时,系统会立即调用通知程序:

  • 已保存的新鲜容器即可加载完毕
  • 如果没有保存的容器或保存的容器已过时,则会加载网络容器或出现网络错误。
  • 计时器到时结束。

如果发生网络错误或计时器过期,则传递到通知程序的容器可能包含默认值或过时的已保存容器。

如果您使用给定的 containerId 再次调用其中一个 openContainer 方法,那么一旦该容器可用,系统就会将上一次调用返回的同一容器传入通知程序。

参数:
containerId要加载的容器的 ID。
tagManager用于获取容器的 TAGManager
openType选择如何打开容器。
超时从已保存的存储区中加载容器所需的最长秒数。如果为 nil,将使用 defaultTimeout
通知程序一个可选的通知程序,将在容器可用时调用。系统将使用全新容器(如果有)调用该方法,并在超时之前加载;否则将使用非全新容器调用它。请注意,系统可能会从其他线程调用该通知程序。
+ (NSTimeInterval) defaultTimeout

返回请求容器的默认超时。

返回
默认超时(以秒为单位)。