2015-05-22 10 views
10

Ich versuche, indem Sie dieses Tutorial Google Tag Manager zu implementieren: https://developers.google.com/tag-manager/android/v4/Implementierung von Google Tag Manager in Android

Wenn ich die Anwendung ausführen, bekomme ich in der Konsole dieser Fehler:

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 

Und ich keine Daten in Google Analytics in Echtzeit, noch mehr nichts, was beweist, dass meine Anwendung verfolgt wird.

Wenn jemand das gleiche Problem hatte oder die gleichen Schritte ausgeführt hat und weiß, wie das Problem gelöst werden kann, hinterlassen Sie bitte eine Erklärung im Kommentar.

Die Schritte, die ich gemacht habe:

  • setze ich durch Zugabe in der builde.gradle den Google Play Services SDK up (Modul: app) ist dieser Teil des Codes: compile 'com.google.android.gms:play-services:7.3.0'
  • ich das hinzufügen Berechtigungen für die AndroidManifest.xml
  • ich Datei herunterladen und einen Standard-Container binär auf die Anwendung
  • ich eine splash-Screen-Aktivität erstellen hinzufügen, wo ich GTM initialisieren, indem das Muster des Tutorial folgenden
  • Ich habe ein Ereignis in einem data geschoben

Was ich zur Zeit in meinem Splash-Screen-Aktivität haben, ist die folgende:

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

    } 

} 

Und im Hauptaktivität:

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

Und ich habe auch diese Klasse erstellt:

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

Bitte beachten Sie, ich den Google Tag Manager-Container ID

mich, wenn jemand wissen lassen

will mehr Informationen versteckt haben

Danke

+0

[Diese Antwort] (http://StackOverflow.com/A/28765301/2835243) sollte hilfreich sein. – TheWanderingMind

+0

@BishopBarber Danke, ich habe diese Antwort schon gelesen, aber leider habe ich immer noch das gleiche Problem – Mallasse

+0

Ich glaube, dein Problem ist, dass du keine Regel hinzugefügt hast, die es GTM erlaubt, dein Makro zu benutzen. 'Ein Makro ist verfügbar, wenn eine seiner Aktivierungsregeln erfüllt ist. Wenn Sie die neueste Version von Tag Manager verwenden, [siehe hier] (https://support.google.com/tagmanager/answer/6106961).Sonstiges, [siehe hier] (https://support.google.com/tagmanager/answer/2644396?hl=de&ref_topic=2574304). – TheWanderingMind

Antwort

5

ersetzen Linie compile 'com.google.android.gms:play-services:7.3.0' mit compile 'com.google.android.gms:play-services:7.0.0' oder compile 'com.google.android.gms:play-services-analytics:7.0.0' (das ist noch besser, da es nur ga und gtm verwandte Sachen enthält)

Ich hatte das Glück, mit 7.0.0 a zu starten nd sah gtm arbeiten. Dann auf 7.3.0 aktualisiert und es hat einfach aufgehört zu arbeiten. Es könnte mit der neuen gms lib behoben werden.

All das vorausgesetzt, Sie haben Ihren Container konfiguriert. Wenn nicht mehr dazu lesen Sie hier https://support.google.com/tagmanager/answer/6103657?hl=en&ref_topic=3441530

+0

Vielen Dank Jungs, ich habe getan, was Sie @ fada21 sagen und es scheint, dass es funktioniert, kann ich in der Konsole sehen, dass der Hit gesendet wird, aber in Google Analytics habe ich nichts in Echtzeit – Mallasse

+0

Haben Sie etwas so wie deine Tag-Definition: http://pasteboard.co/1pQOY1u3.png. Jedenfalls dokumentiere ich mein Setup besser in der Freizeit und teile es mit dir. Vor kurzem habe ich gcm 7.5.0 getestet und es hat funktioniert. Das heißt '' kompilieren '' com.google.android.gms: play-services-analytics: 7.5.0'''' sollte von jetzt an funktionieren – fada21

+0

Vielen Dank @ fada21, ich habe ein paar Fragen, welchen Container verwendest du ? Die binäre oder .json? und wenn ich Konfigurationen meines Containers ändere, sollte ich es herunterladen und es wieder meinem Projekt hinzufügen? – Mallasse

Verwandte Themen