1

我在我的应用程序中实现了自定义 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。

如果有人遇到同样的问题,请帮助了解差距并提供解决方案。

感谢您的时间和帮助。

4

0 回答 0