我正在使用我的自定义广播接收器来跟踪 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。
现在我尝试了 HTTP 和 https URL,并在 StackOverflow 上的一些其他问题之后尝试了其他一些解决方案,但似乎没有任何效果。
对于在 URL 中传递给播放商店的所有 UTM 参数,我将(not%20set)作为值。我还尝试在分支和firebase 动态链接的深层链接中使用 URL,但我遇到了同样的错误。
但我确信处理此问题的代码是正确的,因为它在直接从 Play 商店安装时分别返回作为Google和有机的广告系列和中等价值。