背景 :Google Play要求在2020年3月1日前切换到Play Install Referrer API
由于上架项目上架到google play,需要统计下载的渠道来源,所以需要获取到Google Play 商店传的referrer值。
首先先看下之前的获取示例
- 自定义个广播并在mainfest里面注册
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent data) {
String rawReferrer = data.getStringExtra(REFERRER); /// 你想要的referrer值
if (null == rawReferrer) {
return;
}
}
}
mainfest 的application里面
<receiver
android:name=".broadcast.InstallReferrerReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.INSTALL_PACKAGES">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
使用新的Install Referrer API, 官方文档
- 在 build.gradle 中添加依赖
dependencies {
...
implementation 'com.android.installreferrer:installreferrer:1.0'
}
- 获取方法
try {
final InstallReferrerClient installReferrerClient = InstallReferrerClient.newBuilder(context).build();
installReferrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// Connection established, get referrer
if (installReferrerClient != null) {
try {
ReferrerDetails response = installReferrerClient.getInstallReferrer();
String referrer = response.getInstallReferrer();// 你要得referrer值
if (!TextUtils.isEmpty(referrer)) {
}
installReferrerClient.endConnection();
} catch (Exception ex) {
Log.e("InstallReferrerHelper", ex.toString());
}
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app
Log.d("InstallReferrerHelper", "FEATURE_NOT_SUPPORTED");
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection could not be established
Log.d("InstallReferrerHelper", "SERVICE_UNAVAILABLE");
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
} catch (Exception ex) {
Log.e("InstallReferrerHelper", ex.toString());
}
网友评论