Я использую свой собственный широковещательный приемник для отслеживания параметров UTM следующим образом.
<receiver
android:name=".services.CustomInstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
public class CustomInstallListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.hasExtra("referrer")) {
String data = intent.getStringExtra("referrer");
String referrers[] = data.split("&");
for (String referrerValue : referrers) {
String keyValue[] = referrerValue.split("=");
if (keyValue.length > 0) {
if (keyValue[0].equalsIgnoreCase("utm_campaign")) {
... something
}
}
}
}
Я также реализовал InstallReferralClient следующим образом
referrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
ReferrerDetails response = null;
try {
response = referrerClient.getInstallReferrer();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
}
});
И я использовал Google Play Url Builder для создания этого URL.
Теперь я пробовал использовать как URL-адреса HTTP, так и https, а также пробовал некоторые другие решения, отвечая на некоторые другие вопросы по StackOverflow, но, похоже, ничего не работает.
Для всех параметров UTM, переданных в URL-адресе магазина воспроизведения, я получаю значение (не% 20set). Я также попытался использовать URL-адрес в глубокой ссылке из ветки и динамических ссылок firebase, и у меня такая же ошибка.
Но я уверен, что код для этого правильный, поскольку он возвращает кампанию и среднее значение как Google и обычный соответственно при прямой установке из Play Store.