TAGManager 类参考


概览

用于实现 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,启用规则为“en”;另一个值集合宏的键“speed”,的值为 45,启用规则为“语言”不是“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 类的单例实例,并在必要时创建该实例。

属性

IDTAGLogger>logger
 用于 Google 跟踪代码管理器 SDK 的日志记录器。
TAGRefreshModerefreshMode
 用于 Google 跟踪代码管理器 SDK 的刷新模式。
TAGDataLayerdataLayer
 调用 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网址 *) 网址

使用输入网址预览应用。

有效网址必须以如下内容开头:

 tagmanager.c.<app_name>://preview/p?id=

其中, <app_name> 是应用名称。

参数:
网址预览网址。
返回
如果网址为有效的跟踪代码管理器预览网址,则为 YES。

获取 TAGManager 类的单例实例,并在必要时创建该实例。

返回
TAGManager 的单例实例。
- (void) dispatch

分派由标签(任意像素、分析信标等)生成的任何待处理网络流量。

- (void) dispatchWithCompletionHandler: (TAGDispatchResult) completionHandler

分派队列中下一个待处理的网络流量,并在请求已发送(返回 kTAGDispatchGood)或出错(返回 kTAGDispatchError)时调用 completionHandler。

如果没有网络连接或没有要发送的数据,则返回 kTAGDispatchNoData。

使用 nil completionHandler 调用此方法与调用 dispatch 相同。

在 iOS 7.0 或更高版本中,此方法可用于后台数据提取。

当应用退出时,最好调用此方法,以启动提交任何未提交的跟踪信息。


属性说明

- (id<TAGLogger>) logger [read, write, assign]

用于 Google 跟踪代码管理器 SDK 的日志记录器。

默认情况下,Google 跟踪代码管理器会记录错误/警告消息,并忽略信息/调试/详细消息。您可以通过设置此属性来使用自己的自定义日志记录器。

- (TAGRefreshMode) refreshMode [read, write, assign]

用于 Google 跟踪代码管理器 SDK 的刷新模式。

如果将其设置为 kTAGRefreshModeDefaultContainer,则刷新方法将仅针对开发目的使用默认容器。默认值为 kTAGRefreshModeStandard

- (TAGDataLayer*) dataLayer [read, assign]

调用 push: (TAGDataLayer) 方法可推送事件和其他数据。

- (NSTimeInterval) dispatchInterval [read, write, assign]

如果此值为正,就会每隔 dispatchInterval 秒自动调度跟踪信息。

否则,您必须通过调用 dispatch,手动发送跟踪信息。

默认情况下,此值设为“120”,表示每隔 120 秒自动发送一次跟踪信息。