Я реализовал механизм реферера установки в своем приложении, и я получаю его в InstallReferrerReceiver::onReceive()
следующим образом:
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String referrer = intent.getStringExtra("referrer");
Log.v(Constants.APP_TAG, "InstallReferrerReceiver: " + referrer);
// And then how to pass referrer to my App?
}
}
Судя по тому, что я вижу, он вызывается сразу после завершения установки, но приложение еще не запущено, так как это будет сделано, когда я нажму open
в магазине приложений GooglePlay.
Итак, как я могу передать строку реферера моему приложению для ее обработки?
Я пытался сохранить его в defaultSharedPreferences
, но не могу прочитать, когда приложение запущено.
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v(Constants.APP_TAG, "Version code: " + BuildConfig.VERSION_CODE);
String referrer = intent.getStringExtra("referrer");
Log.v(Constants.APP_TAG, "InstallReferrerReceiver: " + referrer);
Log.v(Constants.APP_TAG, "Store referrer in " + PreferenceManager.getDefaultSharedPreferencesName(context.getApplicationContext()));
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
sharedPreferences.edit().putString(Constants.REFERRAL, referrer).apply();
Log.v(Constants.APP_TAG, "Stored referrer is " + sharedPreferences.getString(Constants.REFERRAL, null));
}
}
Но кажется, что getDefaultSharedPreferences
относится к ограниченному контексту в InstallReferrerReceiver
, отличному от того, который используется в приложении.
Так как же решить эту проблему? Я просто использую его для личных параметров, это не касается какой-либо кампании!