概览
用于打开容器的辅助类。
这是 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 |
返回请求容器的默认超时时间。
- 返回:
- 默认超时时间(以秒为单位)。