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: (TAGContainerOpenerNotifier-p)

静态公开成员函数

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

成员函数文档

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

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

如果打开类型为 kTAGOpenTypePreferNonDefault,则一旦发生以下任一情况,系统会加载非默认(在网络保存或从网络检索)容器,并立即取消屏蔽 TAGContainerFuture

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或发生网络错误。
  • 计时器到期。

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

如果打开类型为 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) openType
超时: (NSTimeInterval *) 超时
通知程序: (id< TAGContainerOpenerNotifier >) 通知程序

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

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

  • 已保存的容器已加载完毕
  • 如果没有已保存的容器,则会加载网络容器或发生网络错误。
  • 计时器到期。

如果发生网络连接错误或计时器过期,则传递到通知程序的容器会是默认容器。

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

  • 系统会随即加载已保存的新容器
  • 如果没有已保存的容器或保存的容器已过时,则系统会加载网络容器或发生网络错误。
  • 计时器到期。

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

如果您使用给定的 containerId 再次调用某个 openContainer 方法,则从上一次调用返回的同一容器将在可用时立即传递到通知程序中。

参数:
containerId要加载的容器的 ID。
tagManager用于获取容器的 TAGManager
openType选择如何打开容器。
超时从已保存商店加载容器时等待的最长秒数。如果为 nil,将使用 defaultTimeout
通知程序(可选)在容器可用时将调用的通知程序。系统将使用新容器(如果可用并在超时之前加载)对其进行调用;否则,系统将使用非新容器对其进行调用。请注意,通知程序可能会从其他线程调用。
+ (NSTimeInterval) defaultTimeout

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

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