最近項目有個需求,就是統(tǒng)計統(tǒng)計安裝來源,而且還得傳相關參數(shù)給新安裝的用戶,之前項目已經(jīng)加了這一塊的功能(CampaignTrackingReceiver),但是看運維那邊一直沒有反饋過這個功能.
趁這機會研究一下
實現(xiàn)原理
當您的應用在 Google Play 商店中被下載時漂辐,Play 商店應用會在您的應用安裝期間向其廣播一條 INSTALL_REFERRER Intent。此 Intent 中包含 referrer 參數(shù)的值(如果有),此參數(shù)來自將用戶引薦到您應用的 Google Play 商店頁面的鏈接颜武。
為了將某次應用下載歸因到某個廣告系列邑退,您需要在指向 Google Play 商店的所有鏈接中添加 referrer 參數(shù)绑洛,并在您的應用中添加一個 BroadcastReceiver敞贡,以便使用您的 Google Analytics(分析)跟蹤器來接收并設置 Intent 中所包含的廣告系列信息仍源。
代碼
- 將 Google Analytics(分析)接收器添加到 AndroidManifest.xml 文件
<application>
<!-- Used for Google Play Store Campaign Measurement-->
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.CampaignTrackingService"
android:enabled="true"
android:exported="false" />
</application>
- 將 Google Analytics(分析)廣告系列參數(shù)添加到 Google Play 網(wǎng)址
接下來心褐,請將 referrer 參數(shù)添加到直接指向 Google Play 商店的所有網(wǎng)址,并將該參數(shù)的值設置為用來描述來源的 Google Analytics(分析)廣告系列參數(shù)字符串笼踩,如下例所示:
https://play.google.com/store/apps/details?id=com.example.application
&referrer=utm_source%3Dgoogle
%26utm_medium%3Dcpc
%26utm_term%3Drunning%252Bshoes
%26utm_content%3Dlogolink
%26utm_campaign%3Dspring_sale
這里Google提供了構建工具.Google Play 網(wǎng)址構建工具
- 測試
使用adb工具
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n [包名]/[CampaignTrackingReceiver路徑] --es "referrer" "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"
官方上說如果配置正確的話就會返回:
Broadcasting: Intent { act=com.android.vending.INSTALL_REFERRER cmp=[包名]/[CampaignTrackingReceiver路徑] (has extras) }
Broadcast completed: result=0
ps:但是我這邊不管怎么修改都會返回這個,后面還是上傳了一個測試的包到Google Play驗證了一下
驗證廣告系列數(shù)據(jù)已收到
logcat輸出會顯示下面這個:
GAv4: Found relevant installation campaign: source=testSource
- 怎么獲取參數(shù)
我這邊自定義了一個BroadcastReceiver
public class TrackingReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
/**
*
* utm_source=google&utm_medium=cpc&utm_term=test1&utm_content=test2&utm_campaign=test3&anid=admob
*
* anid:廣告網(wǎng)絡
* utm_source:廣告系列來源(原始引薦來源逗爹,例如 google、citysearch嚎于、newsletter4)
* utm_medium:廣告系列媒介(營銷媒介掘而,例如 cpc、banner于购、email)
* utm_term:廣告系列字詞(付費關鍵字袍睡,例如 running+shoes)
* utm_content:廣告系列內(nèi)容(廣告特有的內(nèi)容,用于區(qū)分不同的廣告)
* utm_campaign:廣告系列名稱(產(chǎn)品肋僧、促銷代碼或標語)
*/
String referrer = intent == null ? null : intent.getStringExtra("referrer");
Log.d("ga_referrer", referrer == null ? "null" : referrer);
com.google.android.gms.analytics.CampaignTrackingReceiver googleReceiver = new com.google.android.gms.analytics.CampaignTrackingReceiver();
googleReceiver.onReceive(context, intent);