總覽
用來開啟容器的輔助類別。
這是針對支援逾時的呼叫端提供 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,然後將實作項目新增至 containerAvailableifier.
靜態公開成員函式 | |
(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)。 | openType | |
逾時: | (NSTimeInterval *) | timeout | |
最多等待 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 |
傳回要求容器的預設逾時時間。
- 傳回:
- 預設的逾時時間 (單位為秒)。