Pour commencer à utiliser FCM, créez le cas d'utilisation le plus simple: envoyer un message de notification de test à partir du compilateur de notifications vers un appareil de développement lorsque l'application est en arrière-plan sur l'appareil. Cette page liste toutes les étapes à suivre, de la configuration à la validation. Elle peut couvrir des étapes que vous avez déjà effectuées si vous avez configuré une application cliente Apple pour FCM.
Ajouter Firebase à votre projet Apple
Cette section décrit 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 FCM en particulier, vous devez importer votre clé d'authentification APNs et vous inscrire aux notifications à distance.
Prérequis
Installez les éléments suivants:
- Xcode 15.2 ou version ultérieure
Assurez-vous que votre projet répond aux exigences suivantes:
- Votre projet doit cibler les versions de plate-forme suivantes ou ultérieures :
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- Votre projet doit cibler les versions de plate-forme suivantes ou ultérieures :
Configurez un appareil Apple physique pour exécuter votre application, puis effectuez les tâches suivantes:
- Obtenez une clé d'authentification Apple Push Notification pour votre compte de développeur Apple.
- Activez les notifications push dans XCode sous App > Capabilities (Application > Fonctionnalités).
- Connectez-vous à Firebase avec votre compte Google.
Si vous ne disposez pas encore d'un projet Xcode et que vous souhaitez simplement tester un produit Firebase, vous pouvez télécharger l'un de nos exemples 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 y connecter. Pour en savoir plus sur les projets Firebase, consultez Comprendre les projets Firebase.
Enregistrer votre application auprès de Firebase
Pour utiliser Firebase dans votre application Apple, vous devez enregistrer votre application auprès de votre projet Firebase. L'enregistrement de votre application est souvent appelé "ajout" de votre application à votre projet.
Accédez à la console Firebase.
Au centre de la page de présentation du projet, cliquez sur l'icône iOS+ pour lancer le processus de configuration.
Si vous avez déjà ajouté une application à votre projet Firebase, cliquez sur Ajouter une application pour afficher les options de plate-forme.
Saisissez l'ID de votre application dans le champ ID du bundle.
(Facultatif) Saisissez d'autres informations sur l'application : le pseudo de l'application et l'ID de l'App Store.
Cliquez sur Enregistrer l'application.
Ajouter un fichier de configuration Firebase
Cliquez sur Télécharger GoogleService-Info.plist pour obtenir votre fichier de configuration des plates-formes Apple Firebase (
GoogleService-Info.plist
).Déplacez votre fichier de configuration à la racine de votre projet Xcode. Si vous y êtes invité, sélectionnez l'option permettant d'ajouter le fichier de configuration à toutes les cibles.
Si votre projet contient plusieurs ID de bundle, vous devez associer chaque ID de bundle à une application enregistrée dans la console Firebase afin que chaque application puisse disposer de son propre fichier GoogleService-Info.plist
.
Ajouter des SDK Firebase à votre application
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
- Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Packages (Fichier > Ajouter des packages).
- Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
- Choisissez la bibliothèque Firebase Cloud Messaging.
- Ajoutez l'indicateur
-ObjC
à la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible. - Pour une expérience optimale avec Firebase Cloud Messaging, nous vous recommandons d'activer Google Analytics dans votre projet Firebase et d'ajouter le SDK Firebase pour Google Analytics à votre application. Vous pouvez sélectionner la bibliothèque sans collecte de l'IDFA ou avec collecte de l'IDFA.
- Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.
https://github.com/firebase/firebase-ios-sdk.git
Importer votre clé d'authentification APNs
Importez votre clé d'authentification d'APN dans Firebase. Si vous ne possédez pas encore de clé d'authentification d'APN, veillez à en créer une dans le Centre des membres pour les développeurs Apple.
-
Dans la console Firebase, sélectionnez l'icône en forme de roue dentée, puis Paramètres du projet, puis l'onglet Cloud Messaging.
-
Dans Clés d'authentification d'APN, sous Configuration de l'application iOS, cliquez sur le bouton Importer.
-
Accédez à l'emplacement où vous avez enregistré votre clé, sélectionnez-la, puis cliquez sur Ouvrir. Ajoutez l'ID de la clé (disponible dans le Apple Developer Member Center) et cliquez sur Importer.
Initialiser Firebase dans votre application
Vous devez ajouter le code d'initialisation Firebase à votre application. Importez le module Firebase et configurez une instance partagée comme indiqué:
- Importez le module
FirebaseCore
dans votreUIApplicationDelegate
, ainsi que tous les autres modules Firebase utilisés par votre délégué d'application. Par exemple, pour utiliser Cloud Firestore et Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configurez une instance partagée
FirebaseApp
dans la méthodeapplication(_:didFinishLaunchingWithOptions:)
de votre délégué d'application:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Si vous utilisez SwiftUI, vous devez créer un délégué d'application et l'associer à votre struct
App
viaUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Vous devez également désactiver le mélange des délégués d'application. Pour en savoir plus, consultez les instructions SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
S'inscrire pour recevoir des notifications à distance
Au démarrage ou au point souhaité de votre flux d'application, enregistrez votre application pour les notifications à distance. AppelezregisterForRemoteNotifications
comme indiqué :
Swift
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objective-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
Accéder au jeton d'enregistrement
Pour envoyer un message à un appareil spécifique, vous devez connaître le jeton d'enregistrement de cet appareil. Comme vous devrez saisir le jeton dans un champ du compilateur de notifications pour suivre ce tutoriel, assurez-vous de le copier ou de le stocker de manière sécurisée après l'avoir récupéré.
Par défaut, le SDK FCM génère un jeton d'enregistrement pour l'instance de l'application cliente au démarrage de l'application. Comme le jeton d'appareil APN, ce jeton vous permet d'envoyer des notifications ciblées à n'importe quelle instance particulière de votre application.
De la même manière que les plates-formes Apple fournissent généralement un jeton d'appareil APN au démarrage de l'application, FCM fournit un jeton d'enregistrement via la méthode messaging:didReceiveRegistrationToken:
de FIRMessagingDelegate
.
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 SDK FCM appelle messaging:didReceiveRegistrationToken:
avec un jeton valide.
Le jeton d'enregistrement peut changer dans les cas suivants:
- 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, implémentez le protocole du délégué de messagerie et définissez la propriété delegate
de FIRMessaging
après avoir appelé [FIRApp configure]
.
Par exemple, si le délégué de votre application est conforme au protocole de délégué de messagerie, vous pouvez définir le délégué sur application:didFinishLaunchingWithOptions:
sur lui-même.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
Récupération du jeton d'enregistrement actuel
Les jetons d'enregistrement sont envoyés via la méthode messaging:didReceiveRegistrationToken:
. Cette méthode est généralement appelée une fois par démarrage de l'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'application.
- Abonnez le jeton d'enregistrement aux sujets. Cette opération n'est requise que pour les nouveaux abonnements ou lorsque l'utilisateur a réinstallé l'application.
Vous pouvez récupérer le jeton directement à l'aide de token(completion:). Une erreur non nulle est fournie si la récupération du jeton a échoué.
Swift
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)" } }
Objective-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 fois que le jeton est mis à jour, fournissez un délégué conforme au protocole de délégué de messagerie. L'exemple suivant enregistre le délégué et ajoute la méthode de délégué appropriée:
Swift
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. }
Objective-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 également écouter un NSNotification
nommé kFIRMessagingRegistrationTokenRefreshNotification
au lieu de fournir une méthode de délégué. La propriété de jeton contient toujours la valeur de jeton actuelle.
Envoyer un message de notification
Installez et exécutez l'application sur l'appareil cible. Sur les appareils Apple, vous devez accepter la demande d'autorisation pour recevoir des notifications à distance.
Assurez-vous que l'application s'exécute en arrière-plan sur l'appareil.
Dans la console Firebase, ouvrez la page Messaging (Messagerie).
S'il s'agit de votre premier message, sélectionnez Créer votre première campagne.
- Sélectionnez Messages de notification Firebase, puis Créer.
Sinon, dans l'onglet Campagnes, sélectionnez Nouvelle campagne, puis Notifications.
Saisissez le texte du message. Tous les autres sont facultatifs.
Sélectionnez Envoyer un message test dans le volet de droite.
Dans le champ Ajouter un jeton d'enregistrement FCM, saisissez le jeton d'enregistrement que vous avez obtenu dans une section précédente de ce guide.
Sélectionnez Tester.
Une fois que vous avez sélectionné Test, l'appareil client ciblé (avec l'application en arrière-plan) doit recevoir la notification.
Pour en savoir plus sur la distribution des messages dans votre application, consultez le tableau de bord de reporting FCM, qui enregistre le nombre de messages envoyés et ouverts sur des appareils Apple et Android, ainsi que les données sur les "impressions" (notifications vues par les utilisateurs) pour les applications Android.
Étapes suivantes
Pour aller au-delà des messages de notification et ajouter d'autres comportements plus avancés à votre application, consultez les pages suivantes: