MICHELEPISANI.IT
 

Il Controller viene eseguito prima di Run

Inviare la Prima View ad Analytics all'apertura dell'app, in Ionic

ionic - inviare la prima view a google analytics all'apertura dell'app
August 18
07:272016

Implementando il tracciamento di Analytics all'interno di app scritte con il framework Ionic diventa subito evidente il problema relativo al mancato invio della prima View che si presenta all'apertura dell'app, guardiamo quindi il perchè esso accade e come ovviare al problema.
Come descritto nel mio articolo INTEGRARE GOOGLE ANALYTICS IN IONIC PER IL TRACCIAMENTO DI APP IBRIDE l'informazione relativa al Tracking ID della proprietà verso la quale vogliamo inviare i dati di Analytics va inserita in app.js nel momento in cui la piattaforma Ionic è stata caricata ed è pronta all'utilizzo (nel caso specifico Analytics è stato integrato con il plugin cordova-plugin-google-analytics), come mostrato nell'immagine seguente (Fig. 1):

Ionic e Google Analytics - Inizializzazione dell'ID di monitoraggio tramite startTrackerWithId
Fig. 1 - Ionic e Google Analytics - Inizializzazione dell'ID di monitoraggio tramite startTrackerWithId

Il tracciamento di ciascuna pagina va poi inserio all'interno di ciscun relativo Controller, come mostrato a titolo esemplificativo nella seguente immagine che mostra il tracciamento di una ipotetica pagina di login (Fig. 2):

Ionic e Google Analytics - Tracciamento di schermate tramite trackView
Fig. 2 - Ionic e Google Analytics - Tracciamento di schermate tramite trackView

Questa configurazione funziona perfettamente per tutte le schermete ad eccezione della prima, basterà infatti effettuare dei test per rendersi conto che all'avvio dell'app non succede niente su Analytics.

Il problema sta nel fatto che Controller viene eseguito prima di $ionicPlatform.ready. Questo succede perchè $ionicPlatform.ready non indica quando l'app è avviata bensì comunica all'app il momento in cui le API di Cordova sono pronte all'uso, di conseguenza Angular avvierà l'applicazione appena la sua libreria è stata caricata disinteressandosi di attendere il callback da $ionicPlatform.ready.

La situazione in console sarà pertanto la seguente (per informazioni su come effettuare il debug fare riferimento alla mia guida DEBUG DI APPLICAZIONI CORDOVA/PHONEGAP CON CHROME):

Ionic e Google Analytics - Tracciamento errato della prima schermata tramite trackView
Fig. 3 - Ionic e Google Analytics - Tracciamento errato della prima schermata tramite trackView che viene eseguito prima del caricamento del tracking ID

Dove è possibile vedere che l'app prima passa dalla schermata della home (view_home) e successivamente dal codice che inizializza il tracking ID (start analytics), con la conseguenza che l'hit non viene associato all'ID della proprietà e pertanto viene scartato dall'invio.

Per ovviare a questo inconveniente una soluzione funzionante che ho testato personalmente è quella di inserire l'invio della View all'interno di $ionicPlatform.ready che si va quindi ad accodare a quella presente in .run, come nell'immagine seguente (Fig. 4):

Ionic e Google Analytics - Tracciamento per la prima schermata tramite trackView
Fig. 4 - Ionic e Google Analytics - Tracciamento per la prima schermata tramite trackView

In questo caso pertanto l'invio della View non partirà a vuoto ma attenderà che ci siano le condizioni per cui il tracker venga settato correttamente.

Questo è utile soprattutto in quei casi in cui la prima schermata non è necessariamente sempre la stessa, ad esempio login se non loggato o home se loggato (alternativamente nel caso fosse sempre la stessa il codice di tracciamento della View potrebbe essere inserito sotto a startTrackerWithId oltre che nella View stessa, ma non è proprio una soluzione pulita).

Avviando l'app dopo la modifica effettuata, a differenza della situazione visualizzata in Fig. 3, il risultato sarà il seguente:

Ionic e Google Analytics - Tracciamento corretto della prima schermata tramite trackView
Fig. 3 - Ionic e Google Analytics - Tracciamento corretto della prima schermata tramite trackView che viene eseguito subito dopo il caricamento del tracking ID

Dove stavolta è possibile vedere che l'app prima passa dal codice che inizializza il tracking ID (start analytics) e poi dalla schermata della home (view_home). Su Analytics l'hit viene recuperato con successo.

Questo approccio può essere inoltre utilizzato per avviare qualsiasi altro script, non solo il tracciamento di Analytics, all'interno del primo Controller in modo che esso attenda che le altre operazioni, in app.js, vengano effettuate.

Buon tracciamento e per qualsiasi dubbio o perplessità lasciate un commeto qua sotto.

Tags

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

Scrivi un Commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Il Canale YouTube in ITALIANO

1 VIDEO GRATIS ogni 2 settimane! ISCRIVITI!

Entra a far parte della community su Facebook

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Michele Pisani

Hai verificato se succede per tutte le pagine da un certo periodo di tempo in poi o solo su alcune?

Tecnowiz

Sono amministratore di un blog pure io... Intanto ti faccio i complimenti per questo articolo. …

Michele Pisani

Ciao Antonio, grazie per la fiducia :) In caso di più fogli è necessario inserire il codice del …

Antonio

Ciao Michele, ho acquistato il tuo libro che unitamente ai tuoi video sta diventando il mio corso …