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 habenDanke
[Diese Antwort] (http://StackOverflow.com/A/28765301/2835243) sollte hilfreich sein. – TheWanderingMind
@BishopBarber Danke, ich habe diese Antwort schon gelesen, aber leider habe ich immer noch das gleiche Problem – Mallasse
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