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ę
[Ta odpowiedź] (http://stackoverflow.com/a/28765301/2835243) powinna być pomocna. – TheWanderingMind
@BishopBarber Dziękuję, przeczytałem tę odpowiedź wcześniej, ale niestety nadal mam ten sam problem. – Mallasse
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