1

我正在使用 AppsFlyer 进行安装和卸载跟踪。我已经浏览了文档并整合了它。我使用他们的 Interation 测试应用程序进行集成验证。

根据文档,如果我们已经有一个接收器正在侦听 INSTALL_REFERRER,则需要使用 MultipleInstallBroadcastReceiver。我已经在使用

  <receiver
   android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER" />
            </intent-filter>
        </receiver>

因此,根据我使用以下作为第一个接收者的文件(意味着它是在 CampaignTrackingReceiver 之前编写的)

<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
  <intent-filter>
     <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>

但他们的集成测试显示错误。如果我使用 SingleInstallBroadcastReceiver 而不是 MultipleInstallBroadcastReceiver 而不是集成测试应用程序显示成功集成。

在这种情况下有人可以帮助我吗

4

1 回答 1

7

基本上 SingleInstallBroadcastReceiver 是指当您有另一个接收器“支持”相同意图过滤器的其他现有接收器时使用(例如,将捕获意图,然后为其他可能的接收器重新广播它)意图过滤器)。这是因为 SingleInstallBroadcastReceiver 不是这样的。

另一方面,MultipleInstallBroadcastReceiver 被认为是其他相同意图过滤器接收器的“支持”(不确定这是否是正确的术语),如果与另一个“支持”接收器结合使用,它可能会导致意图之间的无限广播接收器。这就是为什么你有这两种接收器的原因。

但是,您可以通过以下方式通过声明一个接收者来实现相同的目的(并且可以更好地控制该过程):

实现您自己的 BroadcastReceiver 并调用您需要的任何接收器的onReceive(context, intent) :

public class MyCombinedReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Google Analytics receiver
        new CampaignTrackingReceiver().onReceive(context, intent);

        // AppsFlyer SingleInstallBroadcastReceiver
        new SingleInstallBroadcastReceiver().onReceive(context, intent);
    }
}

在您的 AndroidManifest.xml 声明您在上面配置的接收器,并确保这是您在清单中使用该意图过滤器的唯一接收器(如果您有其他接收器,只需在接收器的onReceive方法上调用它们):

<receiver
    android:name="yourpackagename.MyCombinedReceiver"
    android:exported="true" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>
于 2017-12-22T00:24:24.630 回答