2014-07-17 22 views
7

Sto provando a collegare Google Analytics alle mie app nel modo più semplice possibile. Voglio implementare l'analisi v4, perché Google ha dichiarato che presto ci costringeranno ad aggiornarlo, quindi non voglio fare il doppio dello stesso lavoro.android analytics v4 più semplificato

Il tutorial di Google, in questo caso, non è molto efficiente. Unione di quello che hanno detto che non e quello che ho trovato su internet, ho fatto questa procedura:

In Android Manifest, ho aggiungere questo permesso:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

e questo, sotto l'applicazione tag:

<meta-data android:name="com.google.android.gms.analytics.globalConfigResource" 
    android:resource="@xml/analytics" /> 
<meta-data android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

non sono sicuro della necessità della seconda meta ...

ho scritto un file XML, denominato "analytics.xml" (/ res/xml /) contenente :

<!-- the Local LogLevel for Analytics --> 
<string name="ga_logLevel">verbose</string> 

<!-- Treat events as test events and don't send to google --> 
<bool name="ga_dryRun">false</bool> 

<!-- <integer name="ga_sessionTimeout">300</integer> --> 

<!-- Enable automatic Activity measurement --> 
<bool name="ga_autoActivityTracking">true</bool> 

<!-- Enable automatic exception tracking --> 
<bool name="ga_reportUncaughtExceptions">true</bool> 

<string name="ga_trackingId">UA-52900555-1</string> 

<!-- The screen names that will appear in reports --> 
<screenName name="com.maik.adbconnect.EmpityActivity"> 
    Adb Activation 
</screenName> 
<screenName name="com.maik.adbconnect.wid_class"> 
    Widget call 
</screenName> 

Ora, in EmpityActivity.java, ho scritto questo, all'inizio del metodo onCreate:

GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
Tracker t = analytics.newTracker(R.xml.analytics); 
t.send(new HitBuilders.AppViewBuilder().build()); 

In LogCat, analisi dice che viene avviato e colpisce ... ma nella mia analisi rivedere, sotto "gli utenti in tempo reale", dice a zero ....

domande supplementari: sono necessari

  • screennames in file XML?

  • ga_logLevel e ga_dryRun sono obsoleti? Perché logcat mi avvertono che tali risorse non sono riconosciuti

+0

Quanto tempo fa hai creato l'account di analtyics? – DaImTo

+0

una settimana fa ... ci ho pensato anch'io, ma anche adesso non funziona ... Comunque LogCat dice questo, quindi penso che mandi i dati all'analisi: "07-22 21: 38: 46.381: V/GAV4 (8076): Thread [GAThread, 5, main]: Invio hit al servizio PERCORSO: https: PARAMS: v = 1, ul = it-it, t = screenview, ht = 1406057921206, sr = 768x1184, a = 2142572923 , an = ADBconnect, tid = UA-52900555-1, aiuto = com.maik.adbconnect, cid = 8e106838-bfda-418e-a5e2-6a1f56a6c65d, av = 1.0, _u = .2nK-AL, " – Maik

+0

o forse quello" PERCORSO: https: "è sbagliato? – Maik

risposta

6

Il modo più semplice per impostare Google Analytics v4 è quello di utilizzare il codice Java e configurare singolo inseguitore da Application.onCreate(). Questo è anche il modo più veloce e più sicuro per configurare Analytics. È il codice sarebbe simile a questa:

public class MyApp extends Application { 
    private final String TRACKER_ID = "UA-54994796-4"; 

    private static GoogleAnalytics analytics; 
    private static Tracker tracker; 
    public static GoogleAnalytics analytics() {return analytics;} 
    public static Tracker tracker() {return tracker;} 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     analytics = GoogleAnalytics.getInstance(this); 
     analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); 
     tracker = analytics.newTracker("UA-00000000-1"); 
     tracker.enableExceptionReporting(true); 
     tracker.enableAutoActivityTracking(true); 
    } 
} 

Per inviare un evento da qualsiasi punto della applicazione è possibile utilizzare:

MyApp.tracker().send(new HitBuilders.EventBuilder(
    "some category", " some action").build()); 

È necessario alcune modifiche al tuo ApplicationManifest.xml così:

<manifest> 
... 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    ... 
    <application 
     android:name=".MyApp"> 
    ... 
    </application> 
    ... 
</manifest> 

Mi starei lontano dall'usare qualsiasi file di configurazione XML poiché è facile ottenere la configurazione XML errata. La configurazione da Java ha il vantaggio del compilatore di convalidare le tue chiamate. L'utilizzo del codice per configurare Analytics è anche più veloce in quanto evita il sovraccarico dell'analisi XML.

I nomi delle schermate sono facoltativi. Puoi continuare ad usare i nomi delle classi. Il tuo rapporto mostrerà i nomi delle classi invece di nomi più amichevoli, ma è più semplice evitare la mappatura aggiuntiva.

dryRun e logLevel non sono ammortizzati a partire da Google Play Services 7.0. Si sta utilizzando un nome errato, fornito un valore errato di averli inseriti nella sezione sbagliata dell'XML. Questo è il problema con la configurazione XML. C'è solo una validazione di runtime limitata ed è facile sbagliare e non notare il problema.

+0

Ottima risposta! Grazie per aver tagliato il blog di Google sull'implementazione di gav4, il mio dio tanto fuorviante quanto inutile nei loro doc e tutorial, anche se la maggior parte delle persone vorrebbe semplicemente inviare hit! Grazie per aver evitato anche xml, molto più semplice! – Don

Problemi correlati