AppsFlyer 集成测试失败
AppsFlyer integration test fails
我正在使用 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>
因此根据文档,我使用以下作为第一个接收器(意味着它是在 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 而不是集成测试应用程序显示成功集成。
在这种情况下有人可以帮我吗
基本上,SingleInstallBroadcastReceiver 是为了在您有另一个接收器时使用,该接收器是具有相同意图过滤器的其他现有接收器的'supportive'(例如,将捕获意图然后重新广播它以用于其他可能的可能监听相同意图过滤器的接收者)。
这是因为 SingleInstallBroadcastReceiver 不是这样的。
另一方面,MultipleInstallBroadcastReceiver 被认为是 'supportive' 其他具有相同意图的过滤器接收器(不确定这是否是正确的术语),如果与另一个 'supportive' 接收器结合使用,它可能会导致接收者之间无限传播意图。
这就是为什么你有这两种接收器。
但是,以下是您可以通过声明一个接收者(并对过程有更多控制)来实现相同目的的方法:
实施您自己的 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 上声明您在上面配置的接收器,并且 确保这是您清单上唯一具有该 intent-filter 的接收器(如果你还有其他人,只需在你的接收者的 onReceive 方法上调用它们):
<receiver
android:name="yourpackagename.MyCombinedReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
我正在使用 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>
因此根据文档,我使用以下作为第一个接收器(意味着它是在 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 而不是集成测试应用程序显示成功集成。
在这种情况下有人可以帮我吗
基本上,SingleInstallBroadcastReceiver 是为了在您有另一个接收器时使用,该接收器是具有相同意图过滤器的其他现有接收器的'supportive'(例如,将捕获意图然后重新广播它以用于其他可能的可能监听相同意图过滤器的接收者)。 这是因为 SingleInstallBroadcastReceiver 不是这样的。
另一方面,MultipleInstallBroadcastReceiver 被认为是 'supportive' 其他具有相同意图的过滤器接收器(不确定这是否是正确的术语),如果与另一个 'supportive' 接收器结合使用,它可能会导致接收者之间无限传播意图。 这就是为什么你有这两种接收器。
但是,以下是您可以通过声明一个接收者(并对过程有更多控制)来实现相同目的的方法:
实施您自己的 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 上声明您在上面配置的接收器,并且 确保这是您清单上唯一具有该 intent-filter 的接收器(如果你还有其他人,只需在你的接收者的 onReceive 方法上调用它们):
<receiver
android:name="yourpackagename.MyCombinedReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>