2011-01-11 7 views
11

Estoy intentando que el seguimiento de referencias de Android funcione. Estoy siguiendo la única documentación que he encontrado aquí http://code.google.com/mobile/analytics/docs/android/#referrals Tengo el siguiente en mi archivo de manifiesto de AndroidEl seguimiento de referencias de Android no funciona

<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 comienza con:

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

también con un poco de descompilación com .google.android.apps.analytics.AnalyticsReceiver tiene el siguiente código en él:

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 las dos líneas 36 y 38 que registran "GoogleAnalytics" me tienen t Llevé la aplicación anterior al mercado y la descargué en mi Nexus One (después de desinstalar una versión anterior de la aplicación). He generado un enlace con la página de google he vinculado al principio de este 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

Os adjunto Logcat a mi Nexus One, mientras que descargar la aplicación desde ese enlace, no veo ningún registro de "googleanalytics" o "myapp". El resto de la biblioteca de Google Analytics funciona para mi aplicación. ES DECIR. Veo registros en Google Analytics sobre visitas a páginas, etc. Sin embargo, todas las fuentes de tráfico son "Tráfico directo". No sé qué está pasando. ¿Alguien tiene alguna idea de lo que podría estar haciendo mal?

+1

Resalte su código y pulse el {} cuadro para mostrarlo correctamente, no lo ponga entre comillas. –

+1

Parece que usted u otra persona ya lo hizo. Gracias por señalar eso. – patheros

+0

Además, ** no puedes ** tener varios receptores de difusión que reciben el mismo evento. Si desea hacer esto, debe crear un receptor, que lo pasará a todos los demás – Tseng

Respuesta

11

Como suele ser el caso, encontré mi propia respuesta. Mi problema estaba en mi AndroidManifest.xml

que tenía la siguiente en mi manifiesta:

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

El receptor estaba en el lugar equivocado. Debería verse así

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

Ahora estoy viendo los registros que espero cuando instalo la aplicación. En unas pocas horas, con suerte, Google Analytics también tendrá los datos.

9

Tengo explorar bastante el rastreador de referencia con análisis para Android. No es necesario que coloque la aplicación en el mercado, solo puede enviar un intento de transmisión.

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

el enlace que publicó está roto. –

0

Solo puede haber un BroadcastReceiver para una acción. En su AndroidManifest.xml, tiene dos escuchando com.android.vending.INSTALL_REFERRER.

Si desea su receptor y el receptor de Google Analytics a la vez manejar la intención, hacen su receptor una subclase de AnalyticsReceiver, así:

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 
    } 
} 

A continuación, hacer que el suyo es el único receptor en 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

¿Me puede decir más acerca de Analytics Receiver? No puedo encontrar la clase en ningún lado. – Harry