2015-05-12 2 views
0

При реализации GTM gettng следующей ошибкиGoogle менеджер Tag v4 дает ошибку при реализации в андроиде

Не удался извлечь контейнер из файла ресурсов. Ресурс представляет собой 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 и отобразить его в GA в Android

ответ

1

Добавили ли вы контейнер в свой проект? Это объясняется в: https://developers.google.com/tag-manager/android/v4/#add

Диспетчер тегов Google использует контейнер по умолчанию при первом запуске вашего приложения . Контейнер по умолчанию перестанет использоваться, как только приложение сможет получить свежий контейнер по сети.

Чтобы загрузить и добавить контейнер двоичный по умолчанию для вашего приложения, выполните следующие действия:

  1. Вход в веб-интерфейс Google Tag Manager.
  2. Выберите версию контейнера, который вы хотите загрузить.
  3. Нажмите кнопку «Загрузить», чтобы извлечь двоичный файл контейнера.
  4. Добавьте загруженный двоичный файл контейнера в ваш проект как необработанный ресурс.
    • Если исходная подпапка под/res/не существует, создайте ее.
    • При необходимости переименуйте двоичный файл контейнера. Он состоит только из строчных букв, цифр и символов подчеркивания.
    • Скопируйте двоичный файл контейнера в папку/res/raw.

Хотя с помощью двоичного файла рекомендуется, если контейнер не содержит правил и тегов, вы можете использовать простой JSON файл вместо.

+0

Не удалось найти способ загрузки файла 'binary', доступен только формат' json'. в v4. – eugene

+1

После добавления двоичной папки/res/raw, получение той же самой ошибки, упомянутой OP –

1

Вы можете получить двоичную версию, но после создания переменной, триггера и тега, а затем опубликовать свой контейнер. вернитесь на панель версий, выберите раскрывающееся меню действий и выберите загрузку.

Смежные вопросы