2013-06-09 19 views
7

Ho guardato in Facebook SDK 3.0 per cercare di trovare il modo di tracciare le installazioni proveniente da una campagna su Facebook e ho visto questo nella documentazione:perché com.facebook.Settings.publishInstallAsync in onResume?

Per la FB Android SDK 3.0, aggiungere il seguente al onResume() di ogni attività nella tua app: com.facebook.Settings.publishInstallAsync (context, YOUR_APP_ID);

Ho 2 domande fondamentali:

  1. Perché questo succede in ogni attività invece che l'attività di lancio?

  2. Perché ciò accade nel metodo onResume anziché onStart? Android consiglia di non fare cose del genere nello onResume.

Modifica - anche se è asincrona fare questo più e più volte sembra stupido e un necessario

risposta

2

La risposta a entrambe le domande è che inserendo la chiamata nella onResume() di ogni Attività in cui hai a che fare con errori di rete nel momento in cui l'utente avvia per la prima volta l'app. In altre parole, la tua app proverà a pubblicare l'installazione ogni volta che un'attività viene mostrata in primo piano, non solo quando viene avviata la prima attività.

Da Facebook Developers Mobile App Install Ads:

Questo permetterà l'applicazione per eseguire il ping di nuovo l'evento installare su Facebook quando l'utente apre l'applicazione per la prima volta, e di nuovo in futuro, se v'è un errore di rete. Il nostro codice cliente smetterà di inviare installazioni una volta che acquisisce un codice di successo dal server e il nostro back-end conterà l'installazione una sola volta se riceve più hit per lo stesso dispositivo

+1

Io non capisco perché non farlo da 'onStart' o anche da' onCreate', non c'è motivo di farlo più e più volte ogni volta che riprende l'attività – thepoosh

+0

Sono d'accordo, tuttavia la chiamata è essenzialmente un no-op (almeno per quanto riguarda la rete) una volta SDK ha ricevuto una risposta dal server. – David

+0

È solo per avere una possibilità leggermente migliore di rilevare ed evitare i guasti di rete provando ancora una volta quando l'app riprende. Altrimenti dovresti aspettare che l'utente chiuda l'app e ricominciare per riprovare, il che sarebbe un problema se l'utente usasse semplicemente il pulsante Home invece di chiudere effettivamente. Tuttavia, per quanto ne so, se non si vuole assolutamente farlo onResume per qualsiasi motivo, è possibile farlo suCreate e sperare che funzioni la prima volta. Non è raccomandato. – arlanthir

Problemi correlati