具有多种跟踪服务的自定义 INSTALL_REFERRER 接收器

Custom INSTALL_REFERRER receiver with multiple tracking services

更新后 google 播放服务到 7.0.3 我的自定义 INSTALL_REFERRER 广播接收器坏了。 我使用 CampaignTrackingService(它也得到了更新)将意图转发给 google 分析。

在AndroidManifest.xml

    <receiver
        android:name="myapp.analytics.installReferrer.InstallReferrerBroadcastReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

还有我的自定义 BroadCastReceiver(这就是问题所在):

    public class InstallReferrerBroadcastReceiver extends BroadcastReceiver{

private final static String TAG = InstallReferrerBroadcastReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
    // Send to Different Analytics services

    // Send to Google Analytics
    CampaignTrackingService campaignTrackingService = new CampaignTrackingService();
    // I used onHandleIntent() in google-play services 7.0.0, in 7.3.0 its gone
    campaignTrackingService.onHandleIntent(intent);
    }
}

尝试扩展 CampaignTrackingReceiver 而不是 BroadcastReceiver。然后在你的 onReceive 方法中调用 super.onReceive(context, intent);您还从接收方调用服务。 Analytics 同时提供 CampaignTrackingService 和 CampaignTrackingReceiver。当您提供自己的接收器实现时,您应该将调用传递给 Analytics CampaignTrackingReceiver.onReceive 而不是直接调用该服务。 Android 保证您的应用程序进程不会在您 return 从 onReceive 之前被终止,但应用程序进程可能会在服务启动之前被终止,您将失去活动。 Analytics provided receiver 将正确地切换到服务以避免此问题(它需要部分唤醒锁定权限)。