Google代码管理器v4在android中实现时出错

时间:2015-05-12 15:19:11

标签: android google-tag-manager

在执行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

2 个答案:

答案 0 :(得分:1)

您是否已将容器二进制文件添加到项目中?它的解释如下: https://developers.google.com/tag-manager/android/v4/#add

  

Google跟踪代码管理器在您第一次运行时使用默认容器   应用。默认容器将尽快停止使用   该应用程序能够通过网络检索新容器。

     

要下载默认容器二进制文件并将其添加到您的应用程序,请按照下列步骤操作:

     
      
  1. 登录Google跟踪代码管理器网络界面。
  2.   
  3. 选择您要下载的容器版本。
  4.   
  5. 单击“下载”按钮以检索容器二进制文件。
  6.   
  7. 将下载的容器二进制文件作为原始资源添加到项目中。   
        
    • 如果/ res /下的原始子文件夹不存在,请创建它。
    •   
    • 如有必要,重命名容器二进制文件。它只包含小写字母,数字和下划线。
    •   
    • 将容器二进制文件复制到文件夹/ res / raw。
    •   
  8.         

    虽然建议使用二进制文件,但如果容器中不包含规则或标记,则可以选择使用简单的JSON   而是改为文件。

答案 1 :(得分:1)

您可以获得二进制版本,但在创建变量,触发器和标记之后再发布容器。 返回版本面板,选择操作下拉菜单并选择下载。