2011-01-11 29 views
11

Próbuję uruchomić śledzenie w usłudze Android. Śledzę jedyną dokumentacji znalazłem tutaj http://code.google.com/mobile/analytics/docs/android/#referrals Mam następujących w moim android pliku manifestuŚledzenie odsyłających na urządzeniach Android nie działa

<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 rozpoczyna się:

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

także z odrobiną decompiling com .google.android.apps.analytics.AnalyticsReceiver ma następujący kod w nim:

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"); 
/*  */  } 
/*  */ } 

zanotować dwie linie 36 i 38, które log „Google Analytics” mam t ried przesuwając powyższą aplikację na rynek, pobierając ją na moim Nexusie One (po odinstalowaniu poprzedniej wersji aplikacji). Mam wygenerowany link za pomocą Google I umieszczonego na początku tego postu

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

I załączeniu logcat do mojego Nexus One, a ja pobrać aplikację z tego linku, nie widzę żadnych logów z "googleanalytics" lub "myapp". Reszta biblioteki google analytics działa dla mojej aplikacji. TO ZNACZY. Widzę rekordy w google analytics o trafieniach stron itp. Jednak wszystkie źródła wizyt to "ruch bezpośredni". Nie wiem, co się dzieje. Czy ktokolwiek ma jakiś wgląd w to, co robię źle?

+1

Podświetl swój kod i naciśnij przycisk {}, aby wyświetlić go poprawnie, nie umieszczaj go w cudzysłowie. –

+1

Wygląda na to, że Ty lub ktoś inny już to zrobił. Dziękuję za wskazanie tego. – patheros

+0

Ponadto, Ty ** nie możesz ** mieć wielu odbiorników Broadcasta otrzymujących to samo wydarzenie. Jeśli chcesz to zrobić, musisz utworzyć jednego odbiorcę, który przekaże go wszystkim innym – Tseng

Odpowiedz

11

Jak to często bywa, znalazłem własną odpowiedź. Mój problem był w moim AndroidManifest.xml

miałem następujących w moim manifeście:

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

Odbiornik tag był w niewłaściwym miejscu. Powinno to wyglądać tak, jak teraz, gdy instaluję aplikację, widzę dzienniki, których oczekuję. Za kilka godzin mam nadzieję, że Google Analytics również będzie posiadał te dane.

9

Mam sporo odkryć śledzenia poleceń z analityki dla Androida. Nie musisz umieszczać aplikacji na rynku, wystarczy wysłać zamiar transmisji.

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

link, który wysłałeś, jest uszkodzony. –

0

Dla akcji może być tylko jeden BroadcastReceiver. W Twoim AndroidManifest.xml masz dwa nasłuchiwać dla com.android.vending.INSTALL_REFERRER.

Jeśli chcesz do odbiornika, a odbiornik Google Analytics, aby zarówno uchwyt intencji, zrobić odbiornik podklasą AnalyticsReceiver, tak:

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

następnie upewnij się, twoje jest tylko odbiornik w 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

Czy możesz mi powiedzieć coś więcej o odbiorniku Analytics? Nigdzie nie mogę znaleźć klasy. – Harry

Powiązane problemy