最近公司的項目需要用Google Analytics來獲取廣告渠道信息,老大當時把該需求丟給我時,我也是一臉懵逼,摸索了好幾天,才摸清一丟丟套路。想著以后可能還會用到,就隨筆記下,好了,廢話不多說了,come baby!
首先
-獲取google-services.json放至src目錄
-在項目級build.gradle下放入google-services,一定要是最新版本
dependencies {
classpath 'com.google.gms:google-services:3.1.0'
}
-在應用級build.gradle末尾加上
apply plugin: 'com.google.gms.google-services'
-在應用級build.gradle的dependencies中加上
compile 'com.google.android.gms:play-services-analytics:11.0.4'
compile 'com.google.android.gms:play-services-places:11.0.4'
compile 'com.google.android.gms:play-services-ads:11.0.4'
其次
在AndroidManifest.xml里面加上:
<receiver android:name=".receiver.PlayCampaignReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<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" />
<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.AnalyticsService" android:enabled="true" android:exported="false"/>
com.google.android.gms.analytics.CampaignTrackingReceiver
com.google.android.gms.analytics.CampaignTrackingService
com.google.android.gms.analytics.AnalyticsReceiver
com.google.android.gms.analytics.AnalyticsService
以上四個配置是Google官方需要配置的
PlayCampaignReceiver是我自定義用來接收GooglePlay通過CampaignTrackingReceiver中的<action android:name="com.android.vending.INSTALL_REFERRER" />的“referrer”
發(fā)送渠道消息,所以com.android.vending.INSTALL_REFERRER一定要寫。
最后
在自定義的PlayCampaignReceiver中接收“referrer”參數
public class PlayCampaignReceiver extends BroadcastReceiver {
private static final String LOGTAG = "PlayCampaignReceiver";
/**
* anid:廣告網絡
* utm_source:廣告系列來源(原始引薦來源,例如 google、citysearch、newsletter4)
* utm_medium:廣告系列媒介(營銷媒介,例如 cpc、banner、email)
* utm_term:廣告系列字詞(付費關鍵字,例如 running+shoes)
* utm_content:廣告系列內容(廣告特有的內容,用于區(qū)分不同的廣告)
* utm_campaign:廣告系列名稱(產品、促銷代碼或標語)
*/
@Override
public void onReceive(Context context, Intent intent) {
new CampaignTrackingReceiver().onReceive(context, intent);
Log.i(LOGTAG, "onReceive intent=" + intent);
//處理referrer參數
String referrer = "";
Bundle extras = intent.getExtras();
if (extras != null) {
referrer = extras.getString("referrer");
// 得到相應的廣告信息 是url 參數格式,需要解析
// 格式: utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=11
Toast.makeText(context, "谷歌的Referer is: " + referrer, Toast.LENGTH_SHORT).show();
}
}
}
測試
通過adb測試,在Android\sdk\platform-tools中打開cmd即可
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n 你的包名/你的包名.receiver.PlayCampaignReceiver --es "referrer" "utm_source%3Dgoogle%26utm_medium%3Dbanner%26utm_term%3Drunning%252Bshoes%26utm_content%3Dtextlink%26utm_campaign%3Dspring_sale"
adb測試結果
D:\AppData\Local\Android\sdk\platform-tools>adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n 應用包名/應用包名.receiver.PlayCampaignReceiver --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=應用包名/.receiver.PlayCampaignReceiver (has extras) }
Broadcast completed: result=0
打印logcat(需要真機接入USB才能打印)
adb logcat -v time -s GAv4
將應用發(fā)送到Google play測試
這個時候,你就需要Google的 Google Play 網址構建工具了,然后官網會告訴你怎么填寫信息,如何測試。
注意:只有通過生成工具生成出來的二維碼或者點擊網址下載下來的應用才能獲取渠道信息。當然這個信息就是你通過Google Play 網址構建工具生成出來的信息,只有在下載下來第一次啟動應用的時候才會獲取到,有時候會不穩(wěn)定,可能獲取不到也有可能,如果刷新了你剛生成的信息,也有可能獲取不到。我自定義的廣播一直獲取不到,我就在應用進來的時候手動調用了一下廣播,具體想怎么實現(xiàn),看需求和個人吧。
Google Play測試結果
10-28 21:52:03.797 D/GAv4 (32036): Received installation campaign: adNetworkId=applovin, content=textlink, keyword= running+shoes, medium=banner, name=spring_sale, source=applovin
10-28 21:52:03.807 W/GAv4 (32036): Ignoring duplicate install campaign
10-28 21:52:40.027 W/GAv4 (32036): CampaignTrackingReceiver received unexpected intent without referrer extra
10-28 21:53:41.307 I/GAv4 (32459): Google Analytics 11.0.20 is starting up. To enable debug logging on a device run:
10-28 21:53:41.307 I/GAv4 (32459): adb shell setprop log.tag.GAv4 DEBUG
10-28 21:53:41.307 I/GAv4 (32459): adb logcat -s GAv4
結尾
好啦,終于嗶哩啪啦寫完了,這個功能,我也是測試了兩三天,注意需要翻墻的哦。如果有和我一樣有這樣需求的同學,送給你們,也送給我自己。
Google play 網址構建工具
Google Analytics官網
將 Google Analytics(分析)添加到 Android 應用中
Google play服務