我在我的应用程序中实现了自定义 CampaignTrackingReceiver,下面提到了相同的代码:
public class ReferrerCatcher extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
//starting ReferralIntentService to further act on UTM source
ComponentName comp = new ComponentName(context.getPackageName(), ReferralIntentService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
new CampaignTrackingReceiver().onReceive(context, intent);
} catch (Exception e) {
}
}
}
我将 UTM_SOURCE 保存在 ReferralIntentService 中,如下所述:
public class ReferralIntentService extends IntentService {
private String referrer;
private Context context;
public ReferralIntentService() {
super("ReferralIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
try {
Bundle extras = intent.getExtras();
this.context = this;
if (extras != null) {
referrer = extras.getString("referrer");
if (referrer.contains("%26")) {
String array[] = referrer.split("%26");
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(Constants.UTM_SOURCE, array[0].split("%3D")[1]);
editor.commit();
} else {
String array[] = referrer.split("&");
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(Constants.UTM_SOURCE, array[0].split("=")[1]);
editor.commit();
}
// Release the wake lock provided by the WakefulBroadcastReceiver.
ReferrerCatcher.completeWakefulIntent(intent);
}
} catch (Exception e) {
Crashlytics.logException(e);
}
}
我的清单与这两个看起来像这样:
<receiver
android:name=".broadcastreciever.ReferrerCatcher"
android:enabled="true">
<intent-filter android:priority="2147483647">
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service
android:name=".services.ReferralIntentService"
android:exported="false" />
我已经使用以下 ADB 命令进行了相同的测试,并且可以按需要工作:
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n "package_name/receiver" --es referrer "tracking_id=123456789"
现在奇怪的是,实时它只为大约 20% 的用户工作,而在所有其他情况下,它根本没有命中。
我的应用程序的唯一下载来源是 google play。
如果有人遇到同样的问题,请帮助了解差距并提供解决方案。
感谢您的时间和帮助。