2011-01-11 13 views
11

Sto tentando di far funzionare il monitoraggio dei referral Android. Seguo l'unica documentazione che ho trovato qui http://code.google.com/mobile/analytics/docs/android/#referrals Ho il seguente nel mio androide file manifestoIl monitoraggio dei referral Android non funziona

<receiver 
android:name="com.google.android.apps.analytics.AnalyticsReceiver" 
android:exported="true"> 
    <intent-filter> 
       <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
</receiver> 
<receiver android:name="com.package.Receiver" android:exported="true"> 
     <intent-filter> 
       <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
</receiver> 
<uses-sdk android:minSdkVersion="4"/> 

com.package.Receiver inizia con:

public void onReceive(Context paramContext, Intent paramIntent) { 
     String str1 = paramIntent.getStringExtra("referrer"); 
     Log.i("myapp", "action: '" + paramIntent.getAction() + "' 
referrer string: '" + str1 + "'"); 

anche con un po 'di decompilazione com .google.android.apps.analytics.AnalyticsReceiver ha il seguente codice in esso:

public void onReceive(Context ctx, Intent intent) 
/*  */ { 
/* 24 */  String referrer = intent.getStringExtra("referrer"); 
/*  */ 
/* 26 */  if ((! 
("com.android.vending.INSTALL_REFERRER".equals(intent.getAction()))) 
|| (referrer == null)) 
/*  */  { 
/* 28 */  return; 
/*  */  } 
/*  */ 
/* 31 */  String formattedReferrer = formatReferrer(referrer); 
/*  */ 
/* 33 */  if (formattedReferrer != null) { 
/* 34 */  PersistentEventStore store = new 
PersistentEventStore(ctx); 
/* 35 */  store.setReferrer(formattedReferrer); 
/* 36 */  Log.d("googleanalytics", new 
StringBuilder().append("Stored 
referrer:").append(formattedReferrer).toString()); 
/*  */  } else { 
/* 38 */  Log.w("googleanalytics", "Badly formatted referrer, ignored"); 
/*  */  } 
/*  */ } 

Nota le due linee 36 e 38 che Log "GoogleAnalytics" ho t ried spingendo sul mercato l'app sopra, scaricandola sul mio Nexus One (dopo aver disinstallato una versione precedente dell'app). Ho generato un collegamento utilizzando la pagina di google ho collegato all'inizio di questo post

http://www.google.com/url?sa=D&q=http://market.android.com/search%3Fq%3Dpname:com.package.app%26referrer%3Dutm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_term%253Drunning%25252Bshoes%2526utm_content%253Dcontent1%2526utm_campaign%253Dslogan&usg=AFQjCNFctwqk1WgWl0bhiIBNVqy3U4OPRw

ho attaccato logcat al mio Nexus One, mentre si scarica l'applicazione da questo link, non vedo alcun log da "googleanalytics" o "myapp". Il resto della libreria di google analytics funziona per la mia app. OSSIA Vedo record su Google Analytics per le hit delle pagine ecc. Tuttavia, tutte le sorgenti di traffico sono "Direct Traffic". Sono in perdita per quello che sta succedendo. Qualcuno ha qualche idea su cosa potrei fare male?

+1

Evidenzia il tuo codice e premi la casella {} per visualizzarlo correttamente, non metterlo tra virgolette. –

+1

Sembra che tu o qualcun altro l'abbia già fatto. Grazie per la segnalazione. – patheros

+0

Inoltre, ** non è possibile ** avere più ricevitori Broadcast ricevendo lo stesso evento. Se vuoi farlo, devi creare un ricevitore, che lo passerà a tutti gli altri – Tseng

risposta

11

Come spesso accade ho trovato la mia risposta. Il mio problema era nel mio AndroidManifest.xml

avevo il seguente nel mio manifesto:

tag
<manifest> 
    <application> 
    </application> 
    <receiver> 
    </receiver> 
    <uses-sd/> 
</manifest>  

Il ricevitore era nel posto sbagliato. Dovrebbe assomigliare a questo

<manifest> 
    <application> 
     <receiver> 
     </receiver> 
    </application> 
    <uses-sd/> 
</manifest> 

Ora vedo i registri che mi aspetto quando installo l'app. Tra poche ore speriamo che anche Google Analytics abbia i dati.

9

Ho esplorato molto il tracker di riferimento con analisi per Android. Non è necessario mettere l'app sul mercato, è sufficiente inviare un messaggio broadcast.

Intent i = new Intent("com.android.vending.INSTALL_REFERRER"); 
i.setPackage(com.package.yourapp) 
//referrer is a composition of the parameter of the campaing 
i.putExtra("referrer", referrer); 
sendBroadcast(i); 
+2

il link che hai postato è rotto. –

0

Può essere presente un solo BroadcastReceiver per un'azione. Nel tuo AndroidManifest.xml, hai due ascoltatori per com.android.vending.INSTALL_REFERRER.

Se si vuole il ricevitore e il ricevitore di Google Analytics sia per gestire l'intento, rendere il vostro ricevitore una sottoclasse di AnalyticsReceiver, in questo modo:

import com.google.android.apps.analytics.AnalyticsReceiver; 

class Receiver extends AnalyticsReceiver { 
    @Override 
    void onReceive(Context context, Intent intent) { 
     super.onReceive(context, intent); 

     // Add your custom handling here 
    } 
} 

quindi assicurarsi che il vostro è l'unico ricevitore AndroidManifest. xml:

<receiver android:name="com.package.Receiver" android:exported="true"> 
    <intent-filter> 
    <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
</receiver> 
+0

Puoi dirmi di più su Analytics Receiver? Non riesco a trovare la classe da nessuna parte. – Harry

Problemi correlati