2011-01-11 39 views
11

我試圖讓Android引用跟蹤起作用。我下面的唯一文件我已經在這裏找到http://code.google.com/mobile/analytics/docs/android/#referrals我已經在我的Android清單文件Android引薦跟蹤不起作用

<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以下開頭:

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

而且COM .google.android.apps.analytics.AnalyticsReceiver中有以下代碼:

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

注兩條線36和38,其登錄「Google分析」我有噸ried將上述應用程序推向市場,並在我的Nexus One上下載(卸載應用程序的先前版本後)。我已經產生了使用谷歌網頁我掛在這篇文章的開頭鏈接

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

我重視的logcat我的Nexus One,而我從該鏈接下載的應用程序,我沒有看到任何日誌,從「googleanalytics」或「myapp」。 Google Analytics(分析)庫的其餘部分對我的應用程序起作用。 I.E.我看到谷歌分析關於網頁點擊等記錄,但所有的流量來源是「直接交通」。我對正在發生的事情感到不知所措。有沒有人 有任何洞察我可能做錯了什麼?

+1

突出顯示您的代碼並點擊{}框以正確顯示,不要將其放在引號中。 – 2011-01-11 17:58:37

+1

它看起來像你或其他人已經做到了。感謝您指出了這一點。 – patheros 2011-01-13 19:50:47

+0

此外,您**不能**有多個廣播接收器接收相同的事件。如果你想這樣做,你必須創建一個接收器,將其傳遞給所有其他人。 – Tseng 2012-02-08 13:24:53

回答

11

往往是這樣,我找到了我自己的答案。我的問題是在我的AndroidManifest.xml

我曾在我的清單如下:

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

接收器標籤是在錯誤的地點。它應該看起來像這樣

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

我現在正在看到我安裝應用程序時期待的日誌。在幾個小時內,Google Analytics也有數據。

9

我已經探索了很多介紹跟蹤器的Android分析。您無需將應用程序投放市場即可發送廣播意圖。

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); 
0

一個動作只能有一個BroadcastReceiver。在你的AndroidManifest.xml中,你有兩個收聽com.android.vending.INSTALL_REFERRER

如果你想你的接收器和谷歌Analytics(分析)接收到兩個處理這個意圖,讓你的接收機AnalyticsReceiver的子類,像這樣:

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

然後確保你是在AndroidManifest唯一的接收器。 xml:

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