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,然後將實作項目新增至 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

傳回要求容器的預設逾時時間。

傳回:
預設的逾時時間 (單位為秒)。