В моем проекте я использую две библиотеки для обработки двух разных типов push-уведомлений: Localytics и response-native-push-уведомлений.
У меня есть пользовательский FirebaseMessagingService, который проверяет, является ли это push-уведомлением Localyticsзатем пусть Localytics справится с этим с помощью предоставленных им методов.Но если это не push-уведомление Localytics, мне нужно передать эти push-данные в RNPushNotificationListenerService реагировать-native-push-уведомления, который также является FirebaseMessagingService.
Я пытаюсь запустить RNPushNotificationListenerService, но, похоже, он не запускается, потому что никогда не отправляет push.Я тоже пытался установить точки останова, но не повезло.
AndroidManifest.xml
<!-- push notifications -->
<service android:name=".fcm.CustomFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationRegistrationService"/>
<service
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- push notifications end -->
CustomFirebaseMessagingService.java
public class CustomFirebaseMessagingService extends FirebaseMessagingService {
public CustomFirebaseMessagingService() {
super();
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Map<String, String> data = remoteMessage.getData();
try {
if (!Localytics.handleFirebaseMessage(data)) {
forwardPushNotification(remoteMessage);
}
} catch (Exception e) {
Timber.e(e, "Failed to extract Push Message", remoteMessage.getMessageId());
}
}
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
}
@Override
public void onMessageSent(String msgId) {
super.onMessageSent(msgId);
}
@Override
public void onSendError(String msgId, Exception e) {
super.onSendError(msgId, e);
}
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Localytics.setPushRegistrationId(token);
}
private void forwardPushNotification(RemoteMessage remoteMessage) {
Map<String, String> data = remoteMessage.getData();
data.put("from", remoteMessage.getFrom());
Intent intent = new Intent(this, RNPushNotificationListenerService.class);
Bundle extraData = new Bundle(data.size());
for (Map.Entry<String, String> entry : data.entrySet()) {
extraData.putString(entry.getKey(), entry.getValue());
}
intent.putExtras(extraData);
startService(intent);
}
}
У меня такое чувство, что я не запускаю службу правильно?
Мне также известно, что AndroidManifest будет игнорировать объявление com.google.firebase.MESSAGING_EVENT
для RNPushNotificationListenerService
.
Я попытался заставить отдельные библиотеки работать без моего пользовательского FirebaseMessagingService, и они оба работают правильно.Мне просто нужно выяснить, как запустить RNPushNotificationListenerService, когда у меня есть обе настройки с моим пользовательским FirebaseMessagingService.