AppsFlyer集成测试失败

时间:2017-12-20 16:52:03

标签: android appsflyer appsflyer-android-sdk appsflyer-ios-sdk appsflyer-cordova-sdk

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

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

  <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>

因此根据我使用以下作为FIRST接收器的文件(意味着它是在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而不是集成测试应用程序显示成功集成。

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

1 个答案:

答案 0 :(得分:4)

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

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

但是,通过使用声明一个接收器(并且可以更好地控制该过程),您可以实现相同的目标:

实现您自己的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>