總覽
資料層是可存放應用程式一般資訊的字典。
並使用一組標準鍵,因此任何能夠瞭解規格的方都能讀取。資料層狀態會透過其 API 更新。舉例來說,應用程式一開始可能會使用下列 dataLayer:
{
title: "Original screen title"
}
因為應用程式的狀態/資料可能會改變,應用程式可以透過呼叫更新 dataLayer,例如:
[dataLayer push:@{@"title": @"New screen title"}];
資料層現在包含:
{
title: "New screen title"
}
再次推送後:
[dataLayer push:@{@"xyz": @3}];
dataLayer 包含:
{
"title": "New screen title",
"xyz": 3
}
下例示範陣列和地圖合併的運作方式。如果原始 dataLayer 包含:
{
"items": @[@"item1", [NSNull null], @"item2", @{@"a": @"aValue", @"b": @"bValue"}]
}
推送後:
[dataLayer push:@{@"items":
@[[NSNull null], @"item6", kTAGDataLayerObjectNotPresent, @{@"a": [NSNull null]}]}
dataLayer 包含:
{
"items": @[[NSNull null], @"item6", @"item2", @{@"a": [NSNull null], @"b": @"bValue"}]}
}
同步進行;之後,變更就會反映在模型中
將 event 鍵推送至資料層時,系統會評估代碼規則,並觸發所有與這個事件相符的代碼。舉例來說,假設容器中的代碼觸發規則為「事件」在這個推送之後,等於「openScreen」:
[dataLayer push:@{@"event", @"openScreen"}];
該代碼就會觸發
公開成員函式 | |
| (void) | - pushValue:forKey: |
| 將鍵/值組合推送至資料層。 | |
| (void) | - push: |
將指定的 update 物件合併至現有資料模型,並呼叫任何包含更新的事件監聽器 (合併發生後)。 | |
| (NSObject *) | - get: |
| 傳回與指定鍵相關聯的模型中的物件。 | |
成員職能說明文件
| - (void)PushValue: | (NSObject *) | value | |
| forKey: | (NSObject *) | 鍵 | |
將鍵/值組合推送至資料層。
這只是呼叫 push:@{key: value} 的便利方法。
| - (void) push: | (字典 *) | 更新 |
將指定的 update 物件合併至現有資料模型,並呼叫任何包含更新的事件監聽器 (合併發生後)。
字典 (或內嵌陣列) 中的值是 NSNull 類型的有效值。如要表示遺漏值 (例如清單的空白索引),請使用 kTAGDataLayerObjectNotPresent 物件。
這通常為同步呼叫。但是,如果執行緒執行推送作業時,另一個推送作業是來自相同的執行緒,則第二次推送作業就會以非同步方式執行 (第二次推送作業會在對資料層進行變更前傳回)。舉例來說,如果為回應代碼觸發而推送資料層,就會觸發來自相同執行緒的第二次推送。不過,所有更新處理作業都會在最外側推送傳回前處理。
如果 update 包含 event 鍵,系統會評估規則,相符的標記會觸發。
- 參數:
-
update 要處理的更新物件
| - (NSObject*) get: | (NSString *) | 鍵 |
傳回與指定鍵相關聯的模型中的物件。
如果沒有索引鍵,則傳回 nil。如果 key 存在,但 NSNull,則會傳回 NSNull。
鍵可以包含內嵌句點。例如:"a.b.c" 的鍵會傳回「c」的值。字典中鍵為「b」鍵找到含有「a」鍵的字典模型中