Pourquoi les notifications Firebase Cloud Messaging (FCM) ne sont-elles pas conservées en mode arrière-plan sur iOS ?

Susan Sarandon
Libérer: 2024-10-20 15:22:02
original
925 Les gens l'ont consulté

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

Firebase Cloud Messaging (FCM) : notifications non reçues lorsque l'application est en mode arrière-plan sur iOS

FCM permet aux développeurs d'envoyer des notifications push à Appareils iOS et Android. Ce problème se produit lorsque les notifications ne sont pas reçues lorsque l'application est en arrière-plan.

Causes possibles :

  • Code PHP incorrect pour l'envoi de notifications.
  • Manque de prise en charge du mode arrière-plan dans l'application iOS.

Solution :

Code PHP :

  • Ajoutez les champs suivants à votre charge utile PHP :

    • 'content_available' => true (à déclencher lorsque l'application iOS est en arrière-plan)
    • 'priority' => 'haute'
    • 'notification' => $data (remplacez $data par les données de notification souhaitées)
  • Définissez $data pour inclure à la fois les clés « message » et « corps » avec des valeurs personnalisées.

Application iOS :

  1. Vérifiez si le fichier .gcm est inclus dans votre projet Xcode.
  2. Assurez-vous qu'AppDelegate est conforme à GCMReceiverDelegate.
  3. Remplacez les méthodes applicationDidBecomeActive et applicationDidEnterBackground pour (re)connecter et déconnecter du FCM, respectivement.
  4. Inscrivez-vous aux notifications à l'aide de UIRemoteNotificationType.
  5. Implémentez la méthode application:didReceiveRemoteNotification : pour gérer les notifications reçues, même lorsque l'application est en arrière-plan.
  6. Si nécessaire, implémentez la méthode application:didReceiveRemoteNotification:fetchCompletionHandler : pour gérer davantage les notifications reçues en arrière-plan.

Code PHP mis à jour :

<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>
Copier après la connexion

Application iOS mise à jour :

<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>
Copier après la connexion

Remarque :

  • Assurer que vous avez activé les notifications push pour votre application dans le portail des développeurs Apple.
  • Ajoutez le certificat de notification push dans les paramètres de votre projet FCM.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!