Jon*_*nik 11 android google-play-services google-tag-manager
我正在尝试按照" 入门指南"设置Google跟踪代码管理器.
添加默认容器时,文档会明确建议使用二进制默认容器文件(而不是JSON).
虽然建议使用二进制文件,但如果容器不包含规则或标记,则可以选择使用简单的JSON文件.
我已经下载并添加了二进制默认容器res/raw.但初始化Tag Manager loadContainerPreferNonDefault()似乎失败了.
PendingResult<ContainerHolder> pending =
tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
R.raw.gtm_default_container);
Run Code Online (Sandbox Code Playgroud)
我在日志中收到此错误:
W/GoogleTagManager? Failed to extract the container from the resource file.
Resource is a UTF-8 encoded string but doesn't contain a JSON container
Run Code Online (Sandbox Code Playgroud)
TagManager javadocs(最顶层的示例)暗示您可以传递一个布尔参数来指示资源是JSON还是二进制:
PendingResult pending = tagManager.loadContainerPreferNonDefault(
myContainerId, // container ID of the form "GTM-XXXX"
R.raw.GTM-XXXX, // the resource ID of the default container
true); // the default container is in JSON format (as opposed to binary)
Run Code Online (Sandbox Code Playgroud)
事情是,有没有这样的参数在loadContainerPreferNonDefault()!您可以选择传递Handler但不传递布尔值.令人沮丧的是,TagManager javadoc在这里发生冲突.
所以,无论如何,甚至可以执行入门指南推荐的内容,并使用二进制默认容器?
运用 'com.google.android.gms:play-services-analytics:7.0.0'
抱歉回复晚了。在使用标签管理器时遇到了一些困难,并设法解决了我的问题。希望这可以帮助:
是的,可以使用二进制默认容器。该文档与跟踪代码管理器的早期版本冲突。我认为它与 v3 冲突。(撰写此答案时的当前版本是 v4)。
要加载二进制容器,您需要使用不同的方法。
您需要使用TagManager.loadContainerDefaultOnly()此方法专门用于测试目的,以便您可以测试容器是否正在发送命中,即使没有发布容器。
另一方面,TagManager.loadContainerPreferNonDefault()将加载其二进制容器,然后检查网络中当前发布的版本。如果它找到已发布的版本,无论您拥有什么二进制容器,它都会使用该版本。例子:
您添加二进制容器 version15。但是您已经发布了 version14。此方法默认为 14,因为该版本已发布。
如果您想测试版本 15,则必须使用TagManager.loadContainerDefaultOnly().
| 归档时间: |
|
| 查看次数: |
3325 次 |
| 最近记录: |