前言:很多时候我们将app在googleplay发布之后需要以广告的形式进行推广,这个时候我们可能会和多个渠道进行合作推广,那么不同渠道同时推广同一个app我们要如何对安装用户进行区分呢?这个时候我们就要用到Play Install Referrer了。
1.集成
要获取Referrer有两种方法,下面逐一介绍:
第一种方法:
- 在app级别的build.gradle中加入如下远程依赖:
compile 'com.android.installreferrer:installreferrer:1.0'
2. 在想要获取Referrer的地方(有效期90天内随时获取)通过以下代码进行获取:
InstallReferrerClient mReferrerClient = InstallReferrerClient.newBuilder(this).build();
mReferrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// Connection established 已建立连接
ReferrerDetails response = null;
try {
response = mReferrerClient.getInstallReferrer();
response.getInstallReferrer();
response.getReferrerClickTimestampSeconds();
response.getInstallBeginTimestampSeconds();
Log.v("ReferrerDemo",response.getInstallReferrer());
} catch (RemoteException e) {
e.printStackTrace();
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app 已安装的Play Store应用程序不支持的Referrer API
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection could not be established 由不正确的用法引起的一般错误
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
第二种方法:
1.在app级别的build.gradle中加入如下远程依赖:
compile 'com.google.android.gms:play-services-analytics:12.0.0'
2.在项目中创建一个BroadcastReceiver继承CampaignTrackingReceiver并在Menifast中加入如下代码:
<receiver android:name=".MyRefferReceiver"
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" />
3.在BroadcastReceiver中获取引荐来源信息(这种方法在从googleplay安装app后第一次打开app是会收到一条广播):
@Override
public void onReceive(final Context context, Intent intent) {
super.onReceive(context, intent);
String referrer = intent.getStringExtra("referrer");
Log.v("ReferrerDemo", referrer);
}
2.测试:
注意:第一种集成方法可以直接测试获取引荐来源信息,默认获取的信息为:utm_source=google-play&utm_medium=organic
第二种集成方法可以通过以下两种方法进行测试。
1.打开android studio在terminal中直接通过adb命令发送测试广播(第一种集成方法无法通过此方法测试):
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es referrer "utm_source=ReferrerDemo&anid=admob"
然后在BroadcastReceiver中会收到广播通过 intent.getStringExtra("referrer");可以获取到引荐来源信息。
2.上传googleplay测试渠道并创建引荐来源链接,然后通过创建的引荐来源链接下载app