Ich habe ein Problem bei der Integration der Google Tag Manager in meine Android Mobile App mit ionic2/Cordova gebaut. Alles funktioniert ordnungsgemäß, wenn es im Webbrowser über ionic serve
ausgeführt wird, aber es hat Probleme mit den nativen Builds.Google Tag Manager in Android cordova
iOS:
Es zuerst nicht arbeiten, aber nach dem Hinzufügen https://github.com/driftyco/cordova-plugin-wkwebview-engine Plugin, begannen die Google Analytics-Datenverkehr zu empfangen. So ist dieser gelöst und funktioniert wie es sollte.
Android:
Nachdem die App ausgeführt wird und es mit Chrome Konsole dort Debuggen sind keine Fehler überhaupt. Die dataLayer
Variable ist verfügbar und ich kann die Daten hineinschieben. Es gibt auch gültige Antworten true
, wenn kein Trigger für ein bestimmtes Ereignis ausgelöst wurde und false
, wenn ich die richtige Art von Ereignis verwenden. So scheint es, dass GTM alles richtig erkennt. Ich habe auf der Registerkarte Netzwerk beobachtet, dass sowohl Desktop/iOS Anfragen an die https://www.google-analytics.com/collect?v=1&_v=j49&a=1838345933&t=pageview&[moredatahere]
senden nach Objekt an die dataLayer
senden, aber Android App sendet nichts (nur nichts in der Registerkarte Netzwerk). Ich bin neugierig, warum ist das so? Warum gibt es keine Anfragen an die GA auf dem Android?
Hier ist meine Datei index.html:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<title>Ionic App</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
<link rel="manifest" href="manifest.json">
<meta name="theme-color" content="#4e8ef7">
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5CH5MGN');</script>
<!-- End Google Tag Manager -->
<!-- cordova.js required for cordova apps -->
<script src="cordova.js"></script>
<link href="build/main.css" rel="stylesheet">
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KMJLK35"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Ionic's root component and where the app will load -->
<ion-app></ion-app>
<!-- The polyfills js is generated during the build process -->
<script src="build/polyfills.js"></script>
<!-- The bundle js is generated during the build process -->
<script src="build/main.js"></script>
</body>
</html>
Und das ist, wie ich kommunizieren mit der GTM mit dataLayer
Variable:
let event = {
event: 'virtualpageview',
pagepath: url,
pagetitle: title
};
dataLayer.push(event);
Zusätzlich im cordova config.xml habe ich bereits hinzugefügt:
<access origin="*"/>
Es funktionierte wie ein Charme! Vielen Dank Kumpel !! – Sushil
danke dafür – pkudel4