最近项目有个需求,就是统计统计安装来源,而且还得传相关参数给新安装的用户,之前项目已经加了这一块的功能(CampaignTrackingReceiver),但是看运维那边一直没有反馈过这个功能.
趁这机会研究一下
实现原理
当您的应用在 Google Play 商店中被下载时,Play 商店应用会在您的应用安装期间向其广播一条 INSTALL_REFERRER Intent。此 Intent 中包含 referrer 参数的值(如果有),此参数来自将用户引荐到您应用的 Google Play 商店页面的链接。
为了将某次应用下载归因到某个广告系列,您需要在指向 Google Play 商店的所有链接中添加 referrer 参数,并在您的应用中添加一个 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(分析)广告系列参数添加到 Google Play 网址
接下来,请将 referrer 参数添加到直接指向 Google Play 商店的所有网址,并将该参数的值设置为用来描述来源的 Google Analytics(分析)广告系列参数字符串,如下例所示:
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 网址构建工具
- 测试
使用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验证了一下
验证广告系列数据已收到
logcat输出会显示下面这个:
GAv4: Found relevant installation campaign: source=testSource
- 怎么获取参数
我这边自定义了一个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:广告网络
* utm_source:广告系列来源(原始引荐来源,例如 google、citysearch、newsletter4)
* utm_medium:广告系列媒介(营销媒介,例如 cpc、banner、email)
* utm_term:广告系列字词(付费关键字,例如 running+shoes)
* utm_content:广告系列内容(广告特有的内容,用于区分不同的广告)
* utm_campaign:广告系列名称(产品、促销代码或标语)
*/
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);