Googleさんがインストールリファラ・ブロードキャストをやめてしまったので、ライブラリを導入することになりました。
当時の導入時のメモです。
まずはライブラリ導入
dependencies {
...
implementation 'com.android.installreferrer:installreferrer:1.1'
}
実装します。
Android Developerでは、
と、さらっとかいてあります。
これくらいケアしてくれよ!っと、若干イラっとしますがぐっとこらえて。
APIからのレスポンス受信後、SharedPreferenceで「処理済み」フラグを保存します。
public void handleGooglePlayReferrer(Context context) {
// Google recommends only calling this API the first time you need it:
// https://developer.android.com/google/play/installreferrer/library#install-referrer
// Store a boolean in SharedPreferences to ensure we only call it once.
final SharedPreferences prefs = context.getSharedPreferences("acquisition", 0);
if (prefs != null &&
prefs.getBoolean("referrerHasBeenProcessed", false)) {
return;
}
final InstallReferrerClient referrerClient =
InstallReferrerClient.newBuilder(context.getApplicationContext()).build();
referrerClient.startConnection(new InstallReferrerStateListener() {
private boolean complete = false;
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// connection is established
complete();
try {
final ReferrerDetails details = referrerClient.getInstallReferrer();
// pass the install referrer url to the SDK
Analytics.processGooglePlayInstallReferrerUrl(details.getInstallReferrer());
} catch (final RemoteException ex) {
//Log.w("Acquisition - RemoteException while retrieving referrer information (%s)", ex.getLocalizedMessage() == null ? "unknown" : ex.getLocalizedMessage());
} finally {
referrerClient.endConnection();
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
default:
// API not available in the Play Store app - nothing to do here
complete();
referrerClient.endConnection();
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
if (!complete) {
referrerClient.startConnection(this);
}
}
void complete() {
complete = true;
SharedPreferences.Editor editor =
context.getSharedPreferences("acquisition", 0).edit();
editor.putBoolean("referrerHasBeenProcessed", true);
editor.apply();
}
});
}
いじょ。
参考:https://developer.android.com/google/play/installreferrer/library