在执行GTM gettng后出现错误
无法从资源文件中提取容器。 Resource是UTF-8编码的字符串,但不包含JSON容器
我完成了以下编码
TagManager tagManager = TagManager.getInstance(this);
tagManager.setVerboseLoggingEnabled(true);
Log.v("tag", "before loading binary file ");
PendingResult<ContainerHolder> pending = tagManager
.loadContainerPreferNonDefault(CONTAINER_ID,
R.raw.gtm_default_container);
Log.v("tag", "after loading binary file ");
pending.setResultCallback(new ResultCallback<ContainerHolder>() {
@Override
public void onResult(ContainerHolder containerHolder) {
Container container = containerHolder.getContainer();
if (!containerHolder.getStatus().isSuccess()) {
// Log.e("CuteAnimals", "failure loading container");
// displayErrorToUser("error");
return;
}
ContainerHolderSingleton.setContainerHolder(containerHolder);
ContainerLoadedCallback.registerCallbacksForContainer(container);
containerHolder.setContainerAvailableListener(new ContainerLoadedCallback());
startMainActivity();
}
}, 2, TimeUnit.SECONDS);
private static class ContainerLoadedCallback implements ContainerHolder.ContainerAvailableListener {
@Override
public void onContainerAvailable(ContainerHolder containerHolder, String containerVersion) {
// We load each container when it becomes available.
Container container = containerHolder.getContainer();
registerCallbacksForContainer(container);
}
public static void registerCallbacksForContainer(Container container) {
// Register two custom function call macros to the container.
container.registerFunctionCallMacroCallback("increment", new CustomMacroCallback());
container.registerFunctionCallMacroCallback("mod", new CustomMacroCallback());
// Register a custom function call tag to the container.
container.registerFunctionCallTagCallback("custom_tag", new CustomTagCallback());
}
}
private static class CustomTagCallback implements FunctionCallTagCallback {
@Override
public void execute(String tagName, Map<String, Object> parameters) {
// The code for firing this custom tag.
Log.i("CuteAnimals", "Custom function call tag :" + tagName + " is fired.");
}
}
private static class CustomMacroCallback implements FunctionCallMacroCallback {
private int numCalls;
@Override
public Object getValue(String name, Map<String, Object> parameters) {
if ("increment".equals(name)) {
return ++numCalls;
} else if ("mod".equals(name)) {
return (Long) parameters.get("key1") % Integer.valueOf((String) parameters.get("key2"));
} else {
throw new IllegalArgumentException("Custom macro name: " + name + " is not supported.");
}
}
}
@Override
protected void onStart() {
super.onStart();
Utilities.pushOpenScreenEvent(this, "SplasScreen");
}
@Override
protected void onStop() {
super.onStop();
Utilities.pushCloseScreenEvent(this, "Splashscreen");
}
我们如何使用GTM跟踪网页浏览量并将其显示在Android中的GA
中答案 0 :(得分:1)
您是否已将容器二进制文件添加到项目中?它的解释如下: https://developers.google.com/tag-manager/android/v4/#add
Google跟踪代码管理器在您第一次运行时使用默认容器 应用。默认容器将尽快停止使用 该应用程序能够通过网络检索新容器。
要下载默认容器二进制文件并将其添加到您的应用程序,请按照下列步骤操作:
- 登录Google跟踪代码管理器网络界面。
- 选择您要下载的容器版本。
- 单击“下载”按钮以检索容器二进制文件。
- 将下载的容器二进制文件作为原始资源添加到项目中。
醇>
- 如果/ res /下的原始子文件夹不存在,请创建它。
- 如有必要,重命名容器二进制文件。它只包含小写字母,数字和下划线。
- 将容器二进制文件复制到文件夹/ res / raw。
虽然建议使用二进制文件,但如果容器中不包含规则或标记,则可以选择使用简单的JSON 而是改为文件。
答案 1 :(得分:1)
您可以获得二进制版本,但在创建变量,触发器和标记之后再发布容器。 返回版本面板,选择操作下拉菜单并选择下载。