2014-04-30 17 views
6

La mia app ha un'attività e molti frammenti. Ho letto tutti gli argomenti su questa domanda e nessuno ha funzionato come posso vedere. Ho provato con ga v3 e v4, seguendo loGoogle analytics Visualizzazione delle schermate dei frammenti

Il problema è che ENTRAMBI i modi, l'analitica recupera solo la prima chiamata che eseguo. Quando cambio frammento ed eseguo un'altra chiamata nello stesso modo, l'analisi 'in tempo reale' non cambia. Entrambi i snippet vengono eseguiti dal metodo onStart() in ogni frammento.

// Using ga v4 
    Tracker t = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1"); 
    t.setScreenName("/home"); 
    t.send(new HitBuilders.AppViewBuilder().build()); 

    // Using ga v3 
    EasyTracker _tracker = EasyTracker.getInstance(getActivity()); 
    _tracker.set(Fields.SCREEN_NAME, "/discover"); 
    _tracker.send(MapBuilder.createAppView().build()); 

Qualsiasi suggerimento sarebbe molto apprezzato!

risposta

5

In realtà penso che potrei trovare il modo di farlo funzionare. Leggendo la documentazione: https://developers.google.com/analytics/devguides/collection/android/v4/dispatch

Per impostazione predefinita, i dati viene inviato dal Google Analytics SDK per Android ogni 30 minuti.

Sì, i miei pensieri erano "Cosa ???? 30 minuti? Non supponiamo di essere in tempo reale?" In ogni caso, la lettura di un po 'di più:

Per impostare il periodo di spedizione a livello di codice:

// Set the dispatch period in seconds. 
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(15); 

per impostare il periodo invio nel file di configurazione XML:

<integer name="ga_dispatchPeriod">30</integer> 

Cos'altro ...

L'impostazione di un valore negativo disattiva la spedizione periodica, richiedendo l'utilizzo della spedizione manuale se si desidera inviare dati a Google Analytics.

// Disable periodic dispatch by setting dispatch period to a value less than 1. 
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(0); 

Ok, forse si è trovato un valore negativo controverso qui, o inferiore a 1? Ho provato, è meno di 1! (0 o numero negativo disabiliterà la spedizione periodica).

Se si preferisce quindi l'invio manuale, che sarebbe, per esempio:

tracker.setScreenName(TAG); 
tracker.send(new HitBuilders.AppViewBuilder().build()); 
GoogleAnalytics.getInstance(getActivity().getBaseContext()).dispatchLocalHits(); 

Si noti che è possibile chiamare dispatchLocalHits() ogni volta che si desidera (anche fare un pulsante che richiama quella funzione). A proposito, quel pezzo di codice è sui miei frammenti (nel metodo onResume()).

Anche la documentazione dice:

Se un utente perde l'accesso alla rete o si chiude la vostra applicazione mentre ci sono ancora risultati in attesa di essere> spediti, quei colpi vengono mantenute in memoria locale. Verranno inviati la volta successiva> in cui la tua app è in esecuzione e viene chiamato il messaggio.

Ma non ero sicuro se questo vale sia per la spedizione manuale che per quella periodica.L'ho provato, entrambi sembrano funzionare :)

+0

Risposta utile e piacevole, grazie @Ferran – marino

Problemi correlati