總覽
為行動裝置導入 Google 代碼管理工具 (GTM) 的類別。
使用範例:
TAGContainer *container = [[TAGManager instance] openContainerById:myContainerId]; NSString *value = [container stringForKey:@"myKey"];
TAGDataLayer *dataLayer = [[TAGManager instance] dataLayer]; [dataLayer push:@{@"event": @"openScreen", @"screenName": @"Main Page"}];
容器是一組巨集、規則和代碼。這個 ID 是在 GTM 應用程式 (http://www.google.com/tagmanager) 中建立的,並會指派容器 ID。這個容器 ID 是指此 API 中使用的容器。
TAGContainer 類別提供依指定巨集名稱擷取巨集值的方法。這些處理常式 booleanForKey: (TAGContainer)、doubleForKey: (TAGContainer)、int64ForKey: (TAGContainer)、stringForKey: (TAGContainer) 會根據容器中與該巨集相關聯的規則,傳回目前值收集巨集名稱。
舉例來說,如果容器有一個值收集巨集的鍵值為「速度」為 32,而啟用規則的「速度」為「en」,而啟用規則的「速度」為 45,而啟用規則不是「en」,然後發出下列呼叫:
[container longForKey:@"speed"]
如果裝置目前的語言是英文,會傳回 32,否則傳回 45。
資料層是存放應用程式一般資訊的地圖。TAGDataLayer 類別提供從資料層推送及擷取資料的方法。將 event
鍵推送到資料層,與這個事件相符的代碼就會觸發。
這個容器的初始版本會隨附在應用程式。這個檔案應放在名稱是 containerId
的套件中,其中 containerId
是您將在此 API 中使用的容器 ID。呼叫 openContainerById:callback: (TAGManager) 時,容器將傳回這些組合規則/標記/巨集。您將在使用者介面中建立容器,然後點按「下載」按鈕來下載容器。
您可以在使用者介面中修改容器並發布新版本。在這種情況下,行動應用程式下次從網路重新整理容器時 (目前為每 12 小時),就會取得新的版本。當您呼叫其中一個 get... 常式時,此值將根據最新的規則計算。
下載的容器會儲存在本機。呼叫 openContainerById:callback: (TAGManager) 時,會先載入預設容器,然後以非同步方式載入任何已儲存的容器。如果找不到上述項目,或是已超過 12 小時,系統將嘗試從網路擷取新版本。如要找出這些非同步載入作業的狀態,請將 TAGContainerCallback 傳遞至 openContainerById:callback: (TAGManager)。
有時候,您可能需要封鎖到非預設容器,或直到最近有新容器可供使用為止。如要這麼做,您可以在 openContainerById:callback: (TAGManager) 中使用回呼,或使用 TAGContainerOpener。
用完容器後,請呼叫 close (TAGContainer)。
公開成員函式 | |
(TAGContainer *) | - openContainerById:callback: |
傳回容器。 | |
(TAGContainer *) | - getContainerById: |
傳回與指定 containerId 相關聯的容器;如果容器尚未開啟,則傳回 nil 。 | |
(BOOL) | - previewWithUrl: |
使用輸入網址預覽應用程式。 | |
(void) | - 調度 |
分派代碼產生的任何待處理網路流量 (任意像素、分析信標等)。 | |
(void) | - dispatchWithCompleteHandler: |
分派佇列中下一個待處理網路流量,在要求傳送完成 (傳回 kTAGDispatchGood) 或發生錯誤 (傳回 kTAGDispatchError) 時呼叫完成處理常式。 | |
靜態公開成員函式 | |
(TAGManager *) | + 執行個體 |
取得 TAGManager 類別的單例模式例項,並視需要建立例項。 | |
資源 | |
id< TAGLogger > | logger |
用於 Google 代碼管理工具 SDK 的記錄器。 | |
TAGRefreshMode | refreshMode |
Google 代碼管理工具 SDK 使用的重新整理模式。 | |
TAGDataLayer * | dataLayer |
呼叫 push: (TAGDataLayer) 方法,以推送事件和其他資料。 | |
NSTimeInterval | dispatchInterval |
如果這個值為正數,系統會自動每分派間隔秒數傳送追蹤資訊。 |
成員函式說明文件
- (TAGContainer *) openContainerById: | (NSString *) | containerId | |
回呼: | (id< TAGContainerCallback >) | 回呼 | |
傳回容器。
一般來說,傳回的容器會是空白的,但載入作業會以非同步方式進行,因此傳回的容器可能會在傳回前、傳回後重新整理,或永遠不會重新整理 (例如容器生命週期內沒有網路連線)。
當容器發生各種事情時,系統就會呼叫回呼。openContainerById:callback: 至少會嘗試載入容器的已儲存版本。如果裝置未儲存版本,或是儲存的版本已過期,系統就會嘗試從網路載入。
如果針對特定 containerId
再次呼叫 openContainerById:callback:,系統會傳回 nil
,除非前一個開啟的容器已經關閉。
- 參數:
-
containerId 要開啟的容器 ID。 回呼 系統會在載入過程中呼叫其各種方法的物件。請注意,此方法可能會從不同的執行緒呼叫。此外,可能在 openContainerById:callback: 傳回之前呼叫。
- 傳回:
- 開啟的容器。
- (TAGContainer *) getContainerById: | (NSString *) | containerId |
傳回與指定 containerId
相關聯的容器;如果容器尚未開啟,則傳回 nil
。
- (BOOL) previewWithUrl: | (NSURL *) | 網址 |
使用輸入網址預覽應用程式。
有效的網址開頭必須是以下項目:
tagmanager.c.<app_name>://preview/p?id=
其中 <app_name> 是應用程式名稱。
- 參數:
-
網址 預覽網址。
- 傳回:
- 如果網址是有效的代碼管理工具預覽網址,則為「是」。
+ (TAGManager *) 執行個體 |
取得 TAGManager 類別的單例模式例項,並視需要建立例項。
- 傳回:
- TAGManager 的單例模式例項。
- (void) 調度 |
分派代碼產生的任何待處理網路流量 (任意像素、分析信標等)。
- (void) dispatchWithCompleteHandler: | (TAGDispatchResult) | completionHandler |
分派佇列中下一個待處理網路流量,在要求傳送完成 (傳回 kTAGDispatchGood) 或發生錯誤 (傳回 kTAGDispatchError) 時呼叫完成處理常式。
如果沒有網路連線或沒有資料可傳送,會傳回 kTAGDispatchNoData。
使用 nil completedHandler 呼叫這個方法與呼叫 dispatch 相同。
這個方法可用於在 iOS 7.0 以上版本中擷取背景資料。
建議您在應用程式結束以啟動任何未提交的追蹤資訊時,呼叫此方法。
屬性說明文件
用於 Google 代碼管理工具 SDK 的記錄器。
根據預設,Google 代碼管理工具會記錄錯誤/警告訊息,並忽略資訊/偵錯/詳細資訊訊息。您可以設定這項屬性,以使用自訂記錄器。
- (TAGRefreshMode) refreshMode [read, write, assign] |
Google 代碼管理工具 SDK 使用的重新整理模式。
將此值設為 kTAGRefreshModeDefaultContainer,可讓重新整理方法僅使用預設容器進行開發。預設值為 kTAGRefreshModeStandard。
- (TAGDataLayer*) dataLayer [read, assign] |
呼叫 push: (TAGDataLayer) 方法,以推送事件和其他資料。
- (NSTimeInterval) dispatchInterval [read, write, assign] |
如果這個值為正數,系統會自動每分派間隔秒數傳送追蹤資訊。
否則,則必須呼叫分派來手動傳送追蹤資訊。
預設值是「120」,表示系統每 120 秒會自動分派追蹤資訊。