TagManager

公共类 TagManager

这是 Google 跟踪代码管理器 (GTM) 的移动应用实现方式。用法示例:

 Container container = TagManager.getInstance(context).openContainer(myContainerId);
 String value = container.getString("myKey");

 DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
 dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));
容器是宏、代码和规则的集合。它是在 GTM 应用中创建的,并被分配了容器 ID。 此容器 ID 就是此 API 中使用的容器 ID。

Container 类提供了用于检索给定键的值的方法。getBoolean(String)getDouble(String)getLong(String)getString(String) 例程会返回值集合宏的键的当前值,具体取决于与容器关联的规则。

例如,如果您的容器包含一个值集合宏,该宏的键为 speed,其值为 32,启用规则为 Language;另一个值集合宏的键为 speed,其值为 45,启用规则为 Language 不是“en”,则进行以下调用:

 container.getLong("speed")
会在设备的当前语言为英语时返回 32,否则返回 45。

数据层是包含有关应用的一般信息的地图。DataLayer 类提供了从数据层推送和检索数据的方法。将 event 键推送到数据层会导致触发与此事件匹配的代码。

容器的初始版本与应用捆绑在一起。它应作为名称为 tagmanager/containerId 的素材资源放置,其中 containerId 与您将在此 API 中使用的容器 ID 相同。当您调用 openContainer(String, Container.Callback) 时,将返回容器以及这些捆绑的规则/宏。您将在界面中创建容器,然后使用“下载”按钮下载该容器。

您可以在界面中修改容器并发布新版本。在这种情况下,移动应用下次(目前为每 12 小时)从网络中刷新容器时,就会获得新版本。当您调用其中一个 get... 例程时,将使用最新的规则计算该值。

下载的容器保存在本地;当您调用 openContainer(String, Container.Callback) 时,它会首先加载默认容器,然后再异步加载任何已保存的容器。如果未找到任何文件,或者已超过 12 小时,它会尝试从网络中检索较新版本。您可以通过将 Container.Callback 传递给 openContainer(String, Container.Callback) 来查找这些异步加载的状态。

有时,您可能希望阻塞,直到非默认容器可用或最近的新容器可用为止。ContainerOpener 是一个实用程序类,可以提供帮助。

创建完容器后,请调用 close()

嵌套类摘要

接口 TagManager.Logger 用于记录错误/警告/信息/调试/详细日志记录的简单接口。
枚举 TagManager.RefreshMode 用于刷新容器的模式。

公共方法摘要

容器
getContainer(String containerId)
上下文
DataLayer
静态 TagManager
getInstance(Context context)
日志记录器
TagManager.RefreshMode
容器
openContainer(String containerId, Container.Callback 回调)
void
setLogger(Logger logger)
void

公共方法

public 容器 getContainer (String containerId)

返回与 containerId 关联的已打开容器;如果容器尚未打开,则返回 null

public Context getContext ()

返回与此对象关联的已保存上下文。

public DataLayer getDataLayer ()

返回跟踪代码管理器使用的数据层对象。

public static TagManager getInstance (Context context)

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

public Logger getLogger ()

返回跟踪代码管理器正在使用的日志记录器。

public TagManager.RefreshMode getRefreshMode ()

返回用于所有容器的刷新模式。

public 容器 openContainer (String containerId, Container.Callback containerId)

返回一个容器。当容器发生各种情况时,系统将调用回调。openContainer 至少会尝试加载容器的已保存版本。如果没有保存的版本,或者保存的版本已过期,系统会尝试从网络加载。

通常情况下,返回的容器是空的,但加载将在单独的线程上进行,因此返回的容器可能会在返回之前或返回后刷新,也可能永远不会刷新(例如,在容器的生命周期内没有网络连接)。

如果您针对指定的 containerId 再次调用 openContainer,则会抛出异常。

参数
containerId 要打开的容器的 ID
callback 一个对象,其各种方法会在加载过程的某些部分被调用。请注意,这些方法可能会从不同的线程调用。此外,它们可能会在 openContainer 返回之前调用。

public void setLogger (Logger logger)

替换跟踪代码管理器使用的现有日志记录器。

public void setRefreshMode (TagManager.RefreshMode mode)

设置用于所有容器的刷新模式。