Page 1 of 1

(stille) Push-Benachrichtigungen lösen keine didReceiveRemoteNotification aus

Posted: 15 Jan 2025, 14:16
by Guest
Für einige unserer Push-Benachrichtigungen, die wir über Firebase versenden, müssen wir eine Empfangsbestätigung an unser Backend senden. Um dies zu erreichen, senden wir Hintergrundbenachrichtigungen, senden dann die Nachrichten-ID an unser Backend und zeigen die Benachrichtigung in application(_:didReceiveRemoteNotification:fetchCompletionHandler:) an. Aus irgendeinem Grund funktionierte dies nicht mehr, da didReceiveRemoteNotification nie aufgerufen zu werden scheint.
Wir senden die Nachrichten, für die wir eine Bestätigung benötigen, im Wesentlichen wie folgt:

Code: Select all

        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());
Wir haben die Hintergrundmodi „Hintergrundabruf“ und „Remote-Benachrichtigungen“ aktiviert:
Image
„Regelmäßige“ (sichtbare) Benachrichtigungen werden einwandfrei zugestellt.
Wir verwenden Capacitor und sein PushNotifications-Plugin, falls das relevant ist.
Was übersehen wir/machen wir falsch?
Wir haben versucht, es zu deaktivieren der FirebaseAppDelegateProxy, wie in einigen Suchergebnissen vorgeschlagen, war jedoch erfolglos.
Wir haben auch versucht, UNUserNotificationCenterDelegate zu unserem AppDelegate hinzuzufügen, was dazu führte didReceiveRemoteNotification wird nur für sichtbare Benachrichtigungen aufgerufen, während die App im Vordergrund ist.