Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden Firebase Cloud Messaging (FCM)-Benachrichtigungen unter iOS nicht im Hintergrundmodus beibehalten?

Warum werden Firebase Cloud Messaging (FCM)-Benachrichtigungen unter iOS nicht im Hintergrundmodus beibehalten?

Susan Sarandon
Susan SarandonOriginal
2024-10-20 15:22:021026Durchsuche

Why Are Firebase Cloud Messaging (FCM) Notifications Not Retained in Background Mode on iOS?

Firebase Cloud Messaging (FCM): Benachrichtigungen werden nicht empfangen, wenn sich die App unter iOS im Hintergrundmodus befindet

FCM ermöglicht Entwicklern das Senden von Push-Benachrichtigungen an iOS- und Android-Geräte. Dieses Problem tritt auf, wenn Benachrichtigungen nicht empfangen werden, während die App im Hintergrund läuft.

Mögliche Ursachen:

  • Falscher PHP-Code zum Senden von Benachrichtigungen.
  • Fehlende Unterstützung für den Hintergrundmodus in der iOS-Anwendung.

Lösung:

PHP-Code:

  • Fügen Sie die folgenden Felder zu Ihrer PHP-Nutzlast hinzu:

    • 'content_available' => true (wird ausgelöst, wenn die iOS-App im Hintergrund läuft)
    • 'priority' => 'hoch'
    • 'notification' => $data (ersetzen Sie $data durch Ihre gewünschten Benachrichtigungsdaten)
  • Legen Sie $data so fest, dass sowohl die Schlüssel „Nachricht“ als auch „Text“ mit benutzerdefinierten Werten enthalten sind.

iOS-Anwendung:

  1. Überprüfen Sie, ob die .gcm-Datei in Ihrem Xcode-Projekt enthalten ist.
  2. Stellen Sie sicher, dass AppDelegate GCMReceiverDelegate entspricht.
  3. Überschreiben Sie die Methoden „applicationDidBecomeActive“ und „applicationDidEnterBackground“, um die Verbindung zum FCM (erneut) bzw. zu trennen.
  4. Registrieren Sie sich für Benachrichtigungen mit UIRemoteNotificationType.
  5. Implementieren Sie die Methode „application:didReceiveRemoteNotification:“, um empfangene Benachrichtigungen zu verarbeiten wenn sich die App im Hintergrund befindet.
  6. Implementieren Sie bei Bedarf die Methode application:didReceiveRemoteNotification:fetchCompletionHandler:, um im Hintergrund empfangene Benachrichtigungen weiter zu verarbeiten.

Aktualisierter PHP-Code :

<code class="php"><?php

$data = array(
    'message' => 'Hello World!',
    'body' => 'Hello World!'
);

$post = array(
    'registration_ids' => $ids,
    'data' => $data,
    'content_available' => true,
    'priority' => 'high',
    'notification' => $data
);

// ... Remaining code</code>

Aktualisierte iOS-Anwendung:

<code class="objc">// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, GCMReceiverDelegate>

// AppDelegate.m
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...
    // Register for remote notifications
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
        UIRemoteNotificationType allNotificationTypes =
        (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge);
        [application registerForRemoteNotificationTypes:allNotificationTypes];
    } else {
        UIUserNotificationType allNotificationTypes =
        (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
        UIUserNotificationSettings *settings =
        [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }
    // ...
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [[GCMService sharedInstance] disconnect];
    _connectedToGCM = NO;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[GCMService sharedInstance] connectWithHandler:^(NSError *error) {
        // ...
    }];
}

// ...</code>

Hinweis:

  • Stellen Sie sicher dass Sie Push-Benachrichtigungen für Ihre App im Apple Developer Portal aktiviert haben.
  • Fügen Sie das Push-Benachrichtigungszertifikat in Ihren FCM-Projekteinstellungen hinzu.

Das obige ist der detaillierte Inhalt vonWarum werden Firebase Cloud Messaging (FCM)-Benachrichtigungen unter iOS nicht im Hintergrundmodus beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn