Внедрение Диспетчера тегов Google в Android

Я пытаюсь внедрить Диспетчер тегов Google, следуя этому руководству: https://developers.google.com/tag-manager/android/v4/

Когда я запускаю приложение, я получаю в консоли эти ошибки:

05-22 12:27:44.490 V/GoogleTagManager﹕ Attempting to load a container from the resource ID 2131099650 (testconverteo.ismail.converteotag:raw/gtm_default_container) 05-22 12:27:44.520 E/GoogleTagManager﹕ Invalid macro: _gtm.loadEventEnabled 05-22 12:27:44.520 V/GoogleTagManager﹕ loadAfterDelay: containerId=GTM-XXXXX delay=29397190 05-22 12:27:44.530 E/GoogleTagManager﹕ Invalid macro: _gtm.loadEventEnabled 05-22 12:27:44.490 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 

И у меня нет данных в Google Analytics в режиме реального времени, даже больше ничего, что доказывает, что мое приложение отслеживается.

Если у кого-то была такая же проблема, или он выполнил те же шаги и знает, как решить эту проблему, оставьте комментарий в комментарии.

Шаги, которые я сделал:

  • Я создал SDK Google Play Services, добавив в builde.gradle (module: app) эту часть кода: compile 'com.google.android.gms:play-services:7.3.0'
  • Я добавляю разрешения в файл AndroidManifest.xml
  • Я загружаю и добавляю двоичный код контейнера по умолчанию в приложение
  • Я создаю активность заставки, где я инициализирую GTM, следуя шаблону учебника
  • Я помещал событие в dataLayer

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

 public class SplashScreenActivity extends Activity { private static final String CONTAINER_ID = "GTM-XXXX"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splashscreen); TagManager tagManager = TagManager.getInstance(this); tagManager.setVerboseLoggingEnabled(true); PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault( CONTAINER_ID, R.raw.gtm_default_container ); pending.setResultCallback(new ResultCallback<ContainerHolder>() { @Override public void onResult(ContainerHolder containerHolder) { ContainerHolderSingleton.setContainerHolder(containerHolder); Container container = containerHolder.getContainer(); if (!containerHolder.getStatus().isSuccess()) { Log.e("IL", "failure loading container"); return; } ContainerHolderSingleton.setContainerHolder(containerHolder); ContainerLoadedCallback.registerCallbacksForContainer(container); containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); startMainActivity(); } }, 2, TimeUnit.SECONDS); } private void startMainActivity() { Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); startActivity(intent); } 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()); } } } 

И в основной деятельности:

 public void onStart() { super.onStart(); DataLayer dataLayer = TagManager.getInstance(this).getDataLayer(); dataLayer.pushEvent("Application ouverte", DataLayer.mapOf("login page","un de plus")); } 

И я также создал этот класс:

 public class ContainerHolderSingleton { private static ContainerHolder containerHolder; /** * Utility class; don't instantiate. */ private ContainerHolderSingleton() { } public static ContainerHolder getContainerHolder() { return containerHolder; } public static void setContainerHolder(ContainerHolder c) { containerHolder = c; } } 

Обратите внимание: я скрыл идентификатор контейнера Диспетчера тегов Google

Дайте мне знать, если кто-то хочет получить дополнительную информацию

спасибо

Solutions Collecting From Web of "Внедрение Диспетчера тегов Google в Android"

Заменить compile 'com.google.android.gms:play-services:7.3.0' строки compile 'com.google.android.gms:play-services:7.3.0' с compile 'com.google.android.gms:play-services:7.0.0' или compile 'com.google.android.gms:play-services-analytics:7.0.0' (это еще лучше, так как включает только ga и связанные с gtm вещи)

Мне посчастливилось начать с 7.0.0 и работать с gtm. Затем обновлен до 7.3.0, и он просто перестает работать. Он может быть исправлен с помощью новой gms lib.

Все, что предполагает, что вы настроили свой контейнер. Если вы не читаете больше об этом, то https://support.google.com/tagmanager/answer/6103657?hl=ru&ref_topic=3441530