Catch up on everthing we announced at this year's Firebase Summit. Learn more

Envoyer un message de test à une application Apple en arrière-plan

Pour commencer avec la FCM, construire le cas le plus simple d'utilisation: l' envoi d' un message de notification de test du Notifications compositeur à un dispositif de développement lorsque l'application est en arrière - plan sur l'appareil. Cette page répertorie toutes les étapes pour y parvenir, de la configuration à la vérification - il peut couvrir les étapes que vous avez terminé déjà si vous avez mis en place une application client d' Apple pour la FCM.

Ajouter Firebase à votre projet Apple

Cette section couvre les tâches que vous avez peut-être effectuées si vous avez déjà activé d'autres fonctionnalités Firebase pour votre application. Pour la FCM précisément, vous devrez télécharger votre clé d'authentification APNs et inscrivez -vous pour les notifications à distance .

Conditions préalables

  • Installez les éléments suivants :

    • Xcode 12.5 ou version ultérieure
  • Assurez-vous que votre projet répond aux exigences suivantes :

    • Votre projet doit cibler ces versions de plate-forme ou ultérieures :
      • iOS 10
      • macOS 10.12
      • tvOS 12
      • regarderOS 6
  • Mettre en place un appareil Apple physique pour exécuter votre application, et effectuez les tâches suivantes :

    • Obtenir un Apple Push Notification clé d' authentification pour votre compte Apple Developer .
    • Activer les notifications Push dans XCode sous App> Capacités.

Si vous ne possédez pas déjà un projet Xcode et que vous voulez juste essayer un produit Firebase, vous pouvez télécharger un de nos échantillons de démarrage rapide .

Créer un projet Firebase

Avant de pouvoir ajouter Firebase à votre application Apple, vous devez créer un projet Firebase pour vous connecter à votre application. Visitez Comprendre Firebase projets pour en savoir plus sur les projets Firebase.

Enregistrez votre application avec Firebase

Une fois que vous avez un projet Firebase, vous pouvez y ajouter votre application Apple.

Visitez Comprendre Firebase projets pour en savoir plus sur les meilleures pratiques et considérations pour ajouter des applications à un projet Firebase, y compris la façon de traiter les variantes multiples de construction.

  1. Allez à la console Firebase .

  2. Au centre de la page d'aperçu du projet, cliquez sur l'icône iOS + pour lancer le flux de travail de configuration.

    Si vous avez déjà ajouté une application à votre projet Firebase, cliquez sur Ajouter application pour afficher les options de plate - forme.

  3. Entrez ID paquet de votre application dans le champ ID bundle.

  4. (Facultatif) Entrez les autres informations de l' application: surnom App et App ID Store.

  5. Cliquez sur l' application de vous inscrire.

Ajouter un fichier de configuration Firebase

  1. Cliquez sur Télécharger GoogleService-Info.plist pour obtenir votre fichier de plates - formes d' Apple Firebase ( GoogleService-Info.plist ).

  2. Déplacez votre fichier de configuration à la racine de votre projet Xcode. Si vous y êtes invité, sélectionnez pour ajouter le fichier de configuration à toutes les cibles.

Si vous avez plusieurs ID de paquet dans votre projet, vous devez associer chaque ID bundle avec une application enregistrée dans la console Firebase afin que chaque application peut avoir son propre GoogleService-Info.plist fichier.

Ajouter des SDK Firebase à votre application

Utilisez Swift Package Manager pour installer et gérer les dépendances de Firebase.

  1. Dans Xcode, avec votre projet d'application ouvert, accédez à Fichier> Paquets Swift> Ajouter un package de dépendance.
  2. Lorsque vous y êtes invité, ajoutez le référentiel SDK des plates-formes Firebase Apple :
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Choisissez la bibliothèque Firebase Cloud Messaging.
  5. Pour une expérience optimale avec Firebase Nuage de messagerie, nous vous recommandons de permettre à Google Analytics dans votre projet Firebase et en ajoutant le SDK Firebase Google Analytics à votre application. Vous pouvez sélectionner la bibliothèque sans collection IDFA ou avec la collection IDFA.
  6. Une fois terminé, Xcode commencera automatiquement à résoudre et à télécharger vos dépendances en arrière-plan.

Téléchargez votre clé d'authentification APNs

Téléchargez votre clé d'authentification APNs sur Firebase. Si vous ne possédez pas déjà une clé d'authentification APNs, assurez - vous de créer un dans le Apple Developer Member Center .

  1. A l' intérieur de votre projet dans la console Firebase, sélectionnez l'icône d'engrenage, sélectionnez Paramètres du projet, puis sélectionnez l'onglet Nuage de messagerie.

  2. Dans clé d'authentification APNs sous la configuration iOS app, cliquez sur le bouton Ajouter.

  3. Accédez à l'emplacement où vous avez enregistré votre clé, sélectionnez - le et cliquez sur Ouvrir. Ajoutez l'ID de la touche (disponible dans le membre Apple Developer Centre ) et cliquez sur Télécharger.

Initialiser Firebase dans votre application

Vous devrez ajouter le code d'initialisation Firebase à votre application. Importez le module Firebase et configurez une instance partagée comme indiqué :

  1. Importer le module Firebase dans votre UIApplicationDelegate :

    Rapide

    import Firebase

    Objectif c

    @import Firebase;
  2. Configurer une FirebaseApp instance partagée, généralement dans votre application application:didFinishLaunchingWithOptions: méthode:

    Rapide

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];

S'inscrire aux notifications à distance

Soit au démarrage, soit au point souhaité dans le flux de votre application, enregistrez votre application pour les notifications à distance. Appel registerForRemoteNotifications comme indiqué:

Rapide

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

Objectif c

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

Accéder au jeton d'inscription

Pour envoyer un message à un appareil spécifique, vous devez connaître le jeton d'enregistrement de cet appareil. Parce que vous devrez entrer le jeton dans un champ dans le Notifications compositeur pour compléter ce tutoriel, assurez - vous de copier le jeton ou stocker en toute sécurité après vous récupérer.

Par défaut, le SDK FCM génère un jeton d'enregistrement pour l'instance d'application cliente au lancement de l'application. Semblable au jeton d'appareil APNs, ce jeton vous permet d'envoyer des notifications ciblées à n'importe quelle instance particulière de votre application.

De la même façon que les plates - formes d' Apple offrent généralement un dispositif de jeton APNs au démarrage de l' application, la FCM fournit un enregistrement jeton via FIRMessagingDelegate de messaging:didReceiveRegistrationToken: méthode. Le SDK FCM récupère un jeton nouveau ou existant lors du lancement initial de l'application et chaque fois que le jeton est mis à jour ou invalidé. Dans tous les cas, le FCM SDK appelle la messaging:didReceiveRegistrationToken: avec un jeton valide.

Le jeton d'enregistrement peut changer lorsque :

  • L'application est restaurée sur un nouvel appareil
  • L'utilisateur désinstalle/réinstalle l'application
  • L'utilisateur efface les données de l'application.

Définir le délégué de messagerie

Pour recevoir des jetons d'enregistrement, mettre en œuvre le protocole de délégué de messagerie et définir FIRMessaging du delegate des biens après avoir appelé [FIRApp configure] . Par exemple, si votre délégué de demande est conforme au protocole délégué de messagerie, vous pouvez définir le délégué sur application:didFinishLaunchingWithOptions: elle - même.

Rapide

Messaging.messaging().delegate = self

Objectif c

[FIRMessaging messaging].delegate = self;

Récupération du jeton d'enregistrement actuel

Jetons d'inscription sont livrés par la méthode messaging:didReceiveRegistrationToken: . Cette méthode est appelée généralement une fois par démarrage d'application avec le jeton d'enregistrement. Lorsque cette méthode est appelée, c'est le moment idéal pour :

  • Si le jeton d'enregistrement est nouveau, envoyez-le à votre serveur d'applications.
  • Abonnez le jeton d'inscription aux sujets. Ceci n'est requis que pour les nouveaux abonnements ou pour les situations où l'utilisateur a réinstallé l'application.

Vous pouvez récupérer le jeton directement à l' aide de jetons (fin :) . Une erreur non nulle est fournie si la récupération du jeton a échoué de quelque manière que ce soit.

Rapide

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Objectif c

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

Vous pouvez utiliser cette méthode à tout moment pour accéder au jeton au lieu de le stocker.

Surveiller l'actualisation du jeton

Pour être averti à chaque mise à jour du jeton, fournissez un délégué conforme au protocole de délégation de messagerie. L'exemple suivant enregistre le délégué et ajoute la méthode de délégué appropriée :

Rapide

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("FCMToken"),
    object: nil,
    userInfo: dataDict
  )
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Objectif c

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Vous pouvez écouter un NSNotification nommé kFIRMessagingRegistrationTokenRefreshNotification plutôt que de fournir une méthode de délégué. La propriété token a toujours la valeur actuelle du token.

Envoyer un message de notification

  1. Installez et exécutez l'application sur l'appareil cible. Vous devrez accepter la demande d'autorisation pour recevoir des notifications à distance.

  2. Assurez-vous que l'application est en arrière-plan sur l'appareil.

  3. Ouvrez le Notifications compositeur et sélectionnez Nouvelle notification.

  4. Saisissez le texte du message.

  5. Sélectionnez un message de test Envoyer.

  6. Dans le champ Ajouter un jeton d'enregistrement de la FCM, entrez l'enregistrement jeton que vous avez obtenu dans une section précédente de ce guide.

  7. Cliquez sur test

Après avoir cliqué sur Test, le dispositif client ciblé (avec l'application en arrière - plan) doit recevoir la notification dans le centre de notification.

Pour un aperçu de la distribution des messages à votre application, consultez le tableau de bord des rapports FCM , qui enregistre le nombre de messages envoyés et ouvert sur les appareils Apple et Android, ainsi que des données pour « impressions » (notifications vues par les utilisateurs) pour les applications Android.

Prochaines étapes

Pour aller au-delà des messages de notification et ajouter d'autres comportements plus avancés à votre application, consultez :