2010-11-04 305 views
64

我想註冊一個廣播接收器,該應用程序從市場安裝應用程序後捕獲Android發起的「com.android.vending.INSTALL_REFERRER」意圖。從Android Market安裝應用程序後獲取引薦者

我在這裏以下細節:http://code.google.com/mobile/analytics/docs/android/#referrals

但是,我不能使用谷歌Analytics(分析),所以我創造了自己的解決方案。我已經添加了以下到我的清單文件:

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

,並創建了一個基本的BroadcastReceiver類:

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Bundle extras = intent.getExtras(); 
     String referrerString = extras.getString("referrer"); 

     Log.w("TEST", "Referrer is: " + referrerString); 
    } 
} 

然而,當應用程序被安裝在接收器似乎沒有趕上意向(如果該意圖甚至廣播?),我沒有得到記錄輸出。

我在某個地方出問題了,或者市場在應用程序安裝後不再啓動這些意向了嗎?

+1

我在這裏回答了同樣的問題http://stackoverflow.com/questions/3817030/get-android-google-analytics-referrer-tag/3945100#3945100 – DougW 2011-09-26 20:52:19

+1

值得注意的是,由於最新版本中的錯誤的Android電子市場應用程序,引用者字符串目前不工作。您可以在此處列出錯誤以幫助吸引Google注意:http://code.google.com/p/android/issues/detail?id = 19247 – plowman 2011-10-03 18:28:57

+0

有誰知道在其他情況下是否有辦法接收此廣播我的旁邊的應用正在安裝? – 2014-07-03 14:23:53

回答

5

好吧,我找到了Intent沒有啓動的原因。顯然,你必須使用相同的參數名稱所列出的位置:http://code.google.com/mobile/analytics/docs/android/#referrals

你不能使用自己的參數名稱爲我所做的一切:S

+0

可以幫我解決我的問題http:// stackoverflow。com/questions/10431018/how-to-get-referrer-using-google-track-in-android – Khan 2012-05-03 13:16:02

+0

更新後的鏈接https://developers.google.com/analytics/devguides/collection/android/devguide#google-play-跟蹤 – eveliotc 2012-11-01 22:30:01

+0

@Jake \t 你能告訴我哪些參數?其實我有像你一樣的問題 – 2015-04-15 13:40:37

45

我會盡量幫誰像我一樣,沒有作出INSTALL_REFERRER工作誰沒有找到任何關於這些功能的有用信息。

注:

  1. 意圖com.android.vending.INSTALL_REFERRER會在安裝過程中被抓到 ,而不是應用程序啓動時的 第一次。
  2. 引薦... extras.getString("referrer") ..是固定的,但內容可以是尊重HTTP GET語法的字符串值... referrer=thatsthevalue&thisisnot=xxx

上面的代碼是好的,只是一些說明來完成信息:

  1. Android Manifest。 <receiver>標籤必須位於 <application>標籤內。
  2. 正確的URL市場聯繫起來是不是著名的谷歌形式SDK

的結果,但這個

http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine

顯然,你需要按照從移動鏈接設備和完整測試的唯一方法是在市場上發佈測試應用程序。

最後還有個人筆記。

我不明白爲什麼這些信息完全被省略,我希望谷歌將詳細說明它。

+2

要測試,請參閱此答案:http://stackoverflow.com/questions/5890914/how-to-test-android-referral-tracking/6966718#6966718 – emmby 2011-10-26 14:59:46

+1

INSTALL_REFERRER作爲記錄和工作由「着名的Google表單」生成的網址沒有任何問題,因爲它們的設計被GA SDK收到。只有您計劃手動發佈到Google Analytics或與其他分析平臺集成時,您的代碼纔有效。如果您想查看推薦人並仍然使用GA SDK,請參閱上面的鏈接。 – 2011-12-09 08:45:21

+0

_''標籤必須位於''標籤內。 這不在分析SDK開發指南中解釋,否則編譯失敗。所以,謝謝你,託比亞! – 2012-06-27 13:44:34

2

我同意Google的文檔不是最好的。不過,我只能通過將應用程序上傳到Market Place然後下載/安裝它來獲取意圖。意圖在下載/安裝後立即啓動 - 用戶不必啓動應用程序。我也使用它來啓動後臺服務。

+0

可以指出的Android版本,能夠實現這一目標嗎?這種行爲是否仍然適用於2.3.3和ICS(4.0)? – rycfung 2012-11-15 06:04:45

1

其實有可能是像市場的任何鏈接:// ...的http:// ...市場無論做工精細。 另外,引用者字段中的參數類型無關緊要。它適用於那裏的任何文本。

此事件類型「com.android.vending.INSTALL_REFERRER」未通過廣播發送的主要問題。此事件僅適用於剛剛安裝的應用程序。

UPD:只有一種方法可以測試它 - 將您的應用程序部署到市場中,然後將其安裝到手機上。

+0

我相信INSTALL_REFERRER不適用於http協議。至少,如果它以前沒有了。請參閱本文件,並注意點#2下的已知問題: https://developers.google.com/analytics/devguides/collection/android/v2/campaigns#known-issues – rycfung 2012-11-15 06:01:57

+0

@rycfung我認爲,只有意味着它在您點擊網絡上的「安裝」時不起作用,如果您通過網頁鏈接打開Play商店應用程序 – 2015-02-20 09:24:04

2

請注意,這不是第一個啓動意圖,但只是一個Android市場相關的意圖,這是發送我的谷歌Android市場。 如果您通過與android市場不同的資源安裝應用程序,它不會觸發。

使用它可以建立有鏈接:http://code.google.com/mobile/analytics/docs/android/#android-market-tracking 得到的意圖指引者,並把它拆開來獲得不同的參數

referrer = intent.getStringExtra("referrer"); 
Map<String, String> params = Toolbox.getQueryMap(referrer); 

附:您不需要閱讀閱讀deviceid/IMEI來執行此操作,就像某些應用程序一樣。你不應該想要窺探你的用戶。

5

我認爲這些答案必須是在Android 3.1之前編寫的 - 因爲事情已經改變了一種導入方式。

系統現在將應用程序標記爲休眠狀態 - 它們將不會收到INSTALL_REFERRER或任何其他廣播,直到用戶通過運行應用程序(或放置小部件)顯式激活應用程序爲止。

+0

支持此操作的任何文檔?我仍然沒有看到任何廣播儘管被引薦PARAM – rycfung 2012-11-15 06:00:25

+0

湯姆打開Play商店後,我啓動我安裝的應用程序之前,發送/,我覺得它的工作原理和4.x版已經測試由於引入了停止應用程序的Android 3.1啓動控件。 [http://developer.android.com/about/versions/android-3.1.html](http://developer.android.com/about/versions/android-3.1.html)請注意,該系統增加了FLAG_EXCLUDE_STOPPED_PACKAGES所有廣播intents.However後臺服務或應用程序可以通過添加FLAG_INCLUDE_STOPPED_PACKAGES標誌,廣播應該允許激活停止應用意圖覆蓋此行爲。希望這可能會有所幫助。在OS X鍵值對-e選項上的 – androidyue 2013-12-17 10:00:10

16

這可能是晚了一點,但你可以測試安裝參照不使用谷歌播放,只需要使用亞行:)從adb.exe

adb shell 

am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test" 

運行此如果你已經登錄設置在您的BroadcastReceiver中,您會看到它在LogCat中彈出。

希望這會有所幫助!

+5

不需要用雙重代碼括起來。所以上面的命令將是: 'ADB殼AM廣播-a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es引薦test_referrer = test' – 2016-06-20 13:41:10

相關問題