我们需要向后端发送一些推送通知的收据确认,这些通知是使用 Firebase 发送的。为了实现这一点,我们发送后台通知,然后将消息 id 发送到后端并在
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
中显示通知。由于某种原因,这停止工作,因为 didReceiveRemoteNotification
似乎从未被调用。
我们基本上发送需要确认的消息,如下所示:
final var apnsConfig =
ApnsConfig.builder()
.setAps(Aps.builder().setContentAvailable(true).build())
.putAllHeaders(Map.of("apns-push-type", "background", "apns-priority", "5"))
.putCustomData("customDataKey", "customDataValue")
.build();
final var multicastMessageBuilder =
MulticastMessage.builder()
.setApnsConfig(apnsConfig)
.addAllTokens(
fcmEntities.stream()
.map(FcmMessageEntity::getFcmRegistrationToken)
.toList());
multicastMessageBuilder.putAllData(
Map.of(
"notificationTitle",
notificationTitle,
"notificationBody",
notificationBody));
final var batchResponse =
FirebaseMessaging.getInstance(firebaseService.getFirebaseApp())
.sendEachForMulticast(multicastMessageBuilder.build());
“常规”(可见)通知发送良好。
我们使用 Capacitor 及其 PushNotifications 插件以防相关。
我们错过了什么/做错了什么?
我们尝试按照一些搜索结果的建议禁用 FirebaseAppDelegateProxy,但没有成功。
我们还尝试将
UNUserNotificationCenterDelegate
添加到我们的 AppDelegate,这导致仅当应用程序位于前台时才在可见通知上调用 didReceiveRemoteNotification
。
看来问题是我们在模拟器上测试的。
在实际设备上运行良好。