Тест интеграции AppsFlyer не пройден

Я использую AppsFlyer для отслеживания установки и удаления. Я просмотрел документы и интегрировал их. Я использовал их Интеграционное тестовое приложение для проверки интеграции.

Согласно документу необходимо использовать 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, то приложение тестирования интеграции показывает успешную интеграцию.

может ли кто-нибудь помочь мне в этом случае

1 ответ

Решение

По сути, SingleInstallBroadcastReceiver предназначен для использования, когда у вас есть другой получатель, который "поддерживает" другие существующие получатели с тем же фильтром намерений (например, перехватит намерение, а затем повторно передаст его другим возможным получателям, которые могут прослушивать тот же самый фильтр). фильтр намерений). Это связано с тем, что SingleInstallBroadcastReceiver не является таковым.

MultipleInstallBroadcastReceiver, с другой стороны, считается "поддерживающим" других приемников с тем же фильтром намерений (не уверен, что это правильный термин), и в сочетании с другим "поддерживающим" приемником он может вызывать бесконечную передачу намерения между приемники. Вот почему у вас есть эти два вида приемников.

Однако вот как вы можете добиться того же, используя объявление одного получателя (и больше контролировать процесс):

Реализуйте свой собственный BroadcastReceiver и вызовите onReceive(контекст, намерение) любого получателя, который вам нужен:

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>
Другие вопросы по тегам