概览
一个类,它是 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"}];
容器是宏、规则和代码的集合。它在 GTM 应用 (http://www.google.com/tagmanager) 中创建,并被分配有一个容器 ID。此容器 ID 就是此 API 中使用的 ID。
TAGContainer 类提供了根据宏名称检索宏值的方法。例程 booleanForKey: (TAGContainer)、doubleForKey: (TAGContainer)、int64ForKey: (TAGContainer)、stringForKey: (TAGContainer) 会返回值集合宏名称的当前值,具体取决于与容器中该宏关联的规则。
例如,如果您的容器有一个值集合宏,键为“speed”其值为 32,且启用规则为“Language”为“en”;和另一个具有键“speed”的值集合宏,其值为 45,且启用规则是 Language is not "en",则进行以下调用:
[container longForKey:@"speed"]
如果设备的当前语言是英语,则返回 32,否则返回 45。
数据层是一个包含应用一般信息的地图。TAGDataLayer 类提供了用于从数据层推送和检索数据的方法。将 event
键推送到数据层会导致触发与此事件匹配的代码。
容器的初始版本与应用捆绑在一起。它应作为资源放置在名为 containerId
的 bundle 中,其中 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) | - dispatch |
分派代码(任意像素、分析信标等)生成的所有待处理网络流量。 | |
(void) | - dispatchWithCompletionHandler: |
分派队列中的下一个待处理网络流量,并在请求已发送(返回 kTAGDispatchGood)或出现错误(返回 kTAGDispatchError)时调用 completionHandler。 | |
静态公开成员函数 | |
(TAGManager *) | + 实例 |
获取 TAGManager 类的单例实例,必要时可创建该实例。 | |
属性 | |
ID<TAGLogger > | 日志记录器 |
用于 Google 跟踪代码管理器 SDK 的日志记录器。 | |
TAGRefreshMode | refreshMode |
用于 Google 跟踪代码管理器 SDK 的刷新模式。 | |
TAGDataLayer * | dataLayer |
调用 push: (TAGDataLayer) 方法来推送事件和其他数据。 | |
NSTimeInterval | dispatchInterval |
如果此值为正,就会每隔 dispatchInterval 秒自动发送跟踪信息。 |
成员函数文档
- (TAGContainer *) openContainerById: | (NSString *) | containerId | |
回调: | (id<TAGContainerCallback >) | 回调函数 | |
返回容器。
通常,返回的容器是空的,但加载是异步进行的,因此返回的容器可能会在返回之前、返回之后进行刷新,或者可能永远不会刷新(例如在容器的生命周期内没有网络连接时)。
当容器发生各种情况时,系统会调用回调。openContainerById:callback: 至少会尝试加载容器的已保存版本。如果没有保存的版本或保存的版本已过期,系统将尝试从网络加载。
如果针对指定的 containerId
第二次调用 openContainerById:callback:,则除非之前打开的容器已经关闭,否则将返回 nil
。
- 参数:
-
containerId 要打开的容器的 ID。 callback 一个对象,其各种方法将在加载过程中调用。请注意,可以从不同的线程调用这些方法。此外,它们可能会在 openContainerById:callback: 返回之前被调用。
- 返回:
- 已打开的容器。
- (TAGContainer *) getContainerById:: | (NSString *) | containerId |
返回与给定 containerId
关联的容器;如果容器尚未打开,则返回 nil
。
- (BOOL) previewWithUrl: | (NS网址 *) | url |
使用输入的网址预览应用。
有效网址必须以以下内容开头:
tagmanager.c.<app_name>://preview/p?id=
其中,<app_name>是应用名称。
- 参数:
-
网址 预览网址。
- 返回:
- 如果该网址是有效的跟踪代码管理器预览网址,则为“是”。
+ (TAGManager *) 实例 |
获取 TAGManager 类的单例实例,必要时可创建该实例。
- 返回:
- TAGManager 的单例实例。
- (void) 调度 |
分派代码(任意像素、分析信标等)生成的所有待处理网络流量。
- (void) dispatchWithCompletionHandler: | (TAGDispatchResult) | completionHandler |
分派队列中的下一个待处理网络流量,并在请求已发送(返回 kTAGDispatchGood)或出现错误(返回 kTAGDispatchError)时调用 completionHandler。
如果没有网络连接或没有要发送的数据,则返回 kTAGDispatchNoData。
使用 nil completionHandler 调用此方法等同于调用调度。
在 iOS 7.0 或更高版本中,此方法可用于后台数据提取。
在应用退出时调用此方法是明智的做法,以便开始提交任何未提交的跟踪信息。
属性说明
用于 Google 跟踪代码管理器 SDK 的日志记录器。
默认情况下,Google 跟踪代码管理器会记录错误/警告消息,并忽略 info/debug/verbose 消息。您可以通过设置此属性来使用自己的自定义记录器。
- (TAGRefreshMode)refreshMode [read, write, assign] TAGRefreshMode |
用于 Google 跟踪代码管理器 SDK 的刷新模式。
将此项设为 kTAGRefreshModeDefaultContainer 可让刷新方法仅使用默认容器进行开发。默认值为 kTAGRefreshModeStandard。
- (TAGDataLayer*) dataLayer [read, assign] |
调用 push: (TAGDataLayer) 方法来推送事件和其他数据。
- (NSTimeInterval) dispatchInterval [read, write, assign] |
如果此值为正,就会每隔 dispatchInterval 秒自动调度跟踪信息。
否则,您必须通过调用 dispatch,手动发送跟踪信息。
默认情况下,此值设为“120”,表示系统会每 120 秒自动发送一次跟踪信息。