У меня есть простая задача: я хочу отслеживать идентификатор реферала установки приложения и передавать его на бэкэнд.
Что я сделал: я создал ссылку с дополнительным параметром referrer
и добавил ее к приглашающей ссылке. Когда он открывается, javascript
определяет, является ли браузер браузером Android, а затем готовит intent
и перенаправляет на это намерение. При подготовке намерения поле referrer
извлекается из URL-адреса и добавляется к intent
следующим образом:
intent://scan/#Intent;scheme=com.example.android;package=com.example.android&referrer=4;end
И вот мой код для BroadCastReceiver
:
public class InstallReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TinyDB tinyDB = new TinyDB(context);
String referrer = intent.getStringExtra("referrer");
tinyDB.putString(AppConstants.REFERRAL_ID, referrer);
tinyDB.putBoolean(AppConstants.REFERRAL_SENT, false);
}
}
Итак, то, что я ожидаю получить здесь как значение referrer
, равно 4
на основе вышеперечисленного intent
. Но значение, которое я получаю, это String utm_source=google-play&utm_medium=organic
Что я делаю неправильно и как его исправить, чтобы получить правильное значение для поля referrer
?
Edit
У меня нет проблем при создании URL-адреса или извлечении значений из поля referrer
после установки приложения.
Как только ссылка на приглашение нажата на любую кнопку, нажмите или откроется непосредственно в мобильном браузере, я использую выше, чтобы "либо открыть приложение, если оно уже установлено, либо открыть страницу приложения в приложении Play Store для пользователей, чтобы установить его".
Проблема заключается в том, как передать значение поля referrer из ссылки приглашения в приложение Play Store с помощью вышеуказанного намерения, чтобы Play Store получил это значение и передал его в приложение, когда оно установлено.