Внедрение Диспетчера тегов 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, добавив в builde.gradle(module: app) эту часть кода: compile 'com.google.android.gms:play-services:7.3.0'
  • Я добавляю разрешения в файл AndroidManifest.xml
  • Я загружаю и добавляю двоичный код контейнера по умолчанию в приложение
  • Я создаю активность заставки, когда я инициализирую GTM, следуя шаблону учебников
  • Ive нажал событие в 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

Сообщите мне, если кто-то хочет получить дополнительную информацию

Спасибо

Ответ 1

Заменить строку 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=en&ref_topic=3441530