2015-05-22 14 views
10

próbuję wdrożyć Menedżera tagów Google za pomocą tego samouczka: https://developers.google.com/tag-manager/android/v4/Wdrażanie Menedżera tagów Google na Androida

Kiedy uruchomić aplikację, pojawia się w konsoli te błędy:

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 

i ja brak danych w Google Analytics w czasie rzeczywistym, jeszcze więcej niczego, co świadczy o śledzeniu mojej aplikacji.

Jeśli ktoś miał taki sam problem lub podjął te same kroki i wie, jak rozwiązać ten problem, proszę zostawić wyjaśnienie w komentarzu.

Kroki robiłem:

  • skonfigurować Google Play SDK dodając w builde.gradle (moduł: APP) Ta część kodu: compile 'com.google.android.gms:play-services:7.3.0'
  • dodam uprawnienia do AndroidManifest.xml złożyć
  • pobrać i dodać binarny domyślny pojemnik do stosowania
  • tworzę aktywność ekran powitalny gdzie zainicjować GTM wykonując wzór samouczka za
  • mam wciśnięty zdarzenie w dataLayer

Co Obecnie mam w mojej działalności ekran powitalny jest następujący:

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()); 
     } 

    } 

} 

A w głównej działalności:

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

Stworzyłem też tę klasę:

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; 
    } 
} 

Uwaga Ukryłem Identyfikator kontenera Menedżera tagów Google

dać mi znać, jeśli ktoś chce więcej informacji

Dziękuję

+0

[Ta odpowiedź] (http://stackoverflow.com/a/28765301/2835243) powinna być pomocna. – TheWanderingMind

+0

@BishopBarber Dziękuję, przeczytałem tę odpowiedź wcześniej, ale niestety nadal mam ten sam problem. – Mallasse

+0

Uważam, że Twoim problemem jest to, że nie dodałeś reguły, która pozwala GTM używać twojego makra. 'Makro jest dostępne, gdy zostanie spełniona jedna z jego reguł włączania. Jeśli używasz najnowszej wersji Menedżera tagów, [patrz tutaj] (https://support.google.com/tagmanager/answer/6106961).Inne, [zobacz tutaj] (https://support.google.com/tagmanager/answer/2644396?hl=pl&ref_topic=2574304). – TheWanderingMind

Odpowiedz

5

Wymień linia compile 'com.google.android.gms:play-services:7.3.0' z compile 'com.google.android.gms:play-services:7.0.0' lub compile 'com.google.android.gms:play-services-analytics:7.0.0' (to jeszcze lepiej, ponieważ zawiera tylko sprawy związane z GA i gtm)

Miałem szczęście rozpocząć od 7.0.0 a nd zobaczyłem działanie gtm. Następnie uaktualniono do wersji 7.3.0 i przestało działać. Można to naprawić za pomocą nowej biblioteki gms.

Wszystko to przy założeniu, że skonfigurowałeś swój kontener. Jeśli nie przeczytasz więcej o tym, tutaj https://support.google.com/tagmanager/answer/6103657?hl=en&ref_topic=3441530

+0

Dziękuję wielu, zrobiłem to, co mówisz @ fada21 i wygląda na to, że działa, widzę w konsoli, że trafienie zostało wysłane, ale w Google Analytics nie mam nic w czasie rzeczywistym – Mallasse

+0

Czy masz coś tak jak w definicji znacznika: http://pasteboard.co/1pQOY1u3.png. W każdym razie lepiej udokumentuję moją konfigurację w wolnym czasie i podzielę się z wami. Niedawno przetestowałem gcm 7.5.0 i działało. To znaczy, że '' 'compile 'com.google.android.gms: play-services-analytics: 7.5.0''' powinno działać od teraz – fada21

+0

Wielkie dzięki @ fada21, mam kilka pytań, który pojemnik używasz ? Plik binarny lub .json? i kiedy zmieniam konfiguracje mojego kontenera, czy powinienem go pobrać i ponownie dodać do mojego projektu? – Mallasse

Powiązane problemy