2

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="*"/> 

Antwort

3

Ich werde meine eigene Frage beantworten. Um das Problem zu lösen, müssen Sie lediglich das Universal Analytics-Tag im GTM anpassen.

Universal Analytics tag configuration

Set:

  • checkProtocolTask zu null
  • storage-none
  • clientId wird verwendet, ohne Cookies zu identifizieren Benutzer (als Speicher keine ist). Ich habe eine neue Javascript-Variable mit dem Namen Device UUID erstellt, die auf die globale Variable device.uuid zeigt, die einfach eine Gerätekennung ist.

Nach diesen Änderungen wird alles ordnungsgemäß protokolliert.

+0

Es funktionierte wie ein Charme! Vielen Dank Kumpel !! – Sushil

+0

danke dafür – pkudel4

Verwandte Themen