Pour commencer avec FCM, créez le cas d'utilisation le plus simple: envoyer un message de notification de test du compositeur de notifications à un appareil 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 - elle peut couvrir les étapes que vous avez déjà effectuées si vous avez configuré une application client iOS pour FCM.
Ajoutez Firebase à votre projet iOS
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 FCM en particulier, vous devrez télécharger votre clé d'authentification APN et vous inscrire aux notifications à distance .
Conditions préalables
Installez ce qui suit:
- Xcode 12.2 ou version ultérieure
- CocoaPods 1.10.0 ou version ultérieure
Assurez-vous que votre projet répond à ces exigences:
- Votre projet doit cibler iOS 10 ou version ultérieure.
Configurez un appareil iOS physique pour exécuter votre application et effectuez ces tâches:
- Obtenez une clé d'authentification Apple Push Notification pour votre compte de développeur Apple .
- Activez les notifications push dans XCode sous App> Capabilities .
- Connectez-vous à Firebase à l' aide de votre compte Google.
Si vous ne possédez pas encore de projet Xcode et que vous souhaitez simplement essayer 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 iOS, vous devez créer un projet Firebase pour vous connecter à votre application iOS. Consultez Comprendre les projets Firebase 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 iOS.
Consultez Comprendre les projets Firebase pour en savoir plus sur les bonnes pratiques et les considérations relatives à l'ajout d'applications à un projet Firebase, notamment sur la gestion de plusieurs variantes de build.
Accédez à la console Firebase .
Au centre de la page de
du projet, cliquez sur l'icône iOS ( ) pour lancer le workflow de configuration.Si vous avez déjà ajouté une application à votre projet Firebase, cliquez sur Ajouter une application pour afficher les options de la plate-forme.
Saisissez l'ID du bundle de votre application dans le champ ID du bundle iOS .
Un ID de bundle identifie de manière unique une application dans l'écosystème Apple.
Trouvez votre ID de bundle: ouvrez votre projet iOS dans Xcode, sélectionnez l'application de niveau supérieur dans le navigateur de projet, puis sélectionnez l'onglet Général .
La valeur du champ Identifiant du bundle est l'ID du bundle iOS (par exemple,
com.yourcompany.yourproject
).Sachez que la valeur de l'ID du bundle est sensible à la casse et qu'elle ne peut pas être modifiée pour cette application Firebase iOS après son enregistrement auprès de votre projet Firebase.
(Facultatif) Saisissez d'autres informations sur l'application: le pseudo de l' application et l' identifiant de l'App Store .
Pseudo de l'application : identifiant interne pratique qui n'est visible que par vous dans la console Firebase
ID App Store : utilisé par Firebase Dynamic Links pour rediriger les utilisateurs vers votre page App Store et par Google Analytics pour importer les événements de conversion dans Google Ads . Si votre application n'a pas encore d'identifiant App Store, vous pouvez l'ajouter ultérieurement dans les paramètres de votre projet .
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 Firebase iOS (
GoogleService-Info.plist
).Le fichier de configuration Firebase contient des identifiants uniques mais non secrets pour votre projet. Pour en savoir plus sur ce fichier de configuration, consultez la page Comprendre les projets Firebase .
Vous pouvez télécharger à nouveau votre fichier de configuration Firebase à tout moment.
Assurez-vous que le nom du fichier de configuration n'est pas ajouté avec des caractères supplémentaires, comme
(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 bundle dans votre projet, vous devez associer chaque ID de bundle à une application enregistrée dans la console Firebase afin que chaque application puisse avoir son propre fichier GoogleService-Info.plist
.
Ajoutez des SDK Firebase à votre application
Nous vous recommandons d'utiliser CocoaPods pour installer les bibliothèques Firebase. Cependant, si vous préférez ne pas utiliser CocoaPods, vous pouvez intégrer directement les frameworks SDK ou utiliser la version bêta de Swift Package Manager .
Utilisez-vous l'un des exemples de démarrage rapide ? Le projet Xcode et Podfile (avec pods) sont déjà présents, mais vous devrez toujours ajouter votre fichier de configuration Firebase et installer les pods.
Créez un Podfile si vous n'en avez pas déjà un:
cd your-project-directory
pod init
À votre Podfile, ajoutez les pods Firebase que vous souhaitez utiliser dans votre application.
Vous pouvez ajouter l'un des produits Firebase pris en charge à votre application iOS.
Pour une expérience optimale avec Firebase Cloud Messaging, nous vous recommandons d' activer Google Analytics dans votre projet. De plus, dans le cadre de la configuration d'Analytics, vous devez ajouter le SDK Firebase pour Analytics à votre application.
Analytics activé
# Add the Firebase pod for Google Analytics pod 'Firebase/Analytics'
# Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'Analytics non activé
# Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'
Installez les pods, puis ouvrez votre fichier
.xcworkspace
pour voir le projet dans Xcode:pod install
open your-project.xcworkspace
Téléchargez votre clé d'authentification APN
Téléchargez votre clé d'authentification APN sur Firebase. Si vous ne disposez pas déjà d'une clé d'authentification APN, consultez Configuration des APN avec FCM .
Dans votre projet dans la console Firebase, sélectionnez l'icône d'engrenage, sélectionnez Paramètres du projet , puis sélectionnez l'onglet Cloud Messaging .
Dans la clé d'authentification APN sous la configuration de l'application iOS , cliquez sur le bouton Télécharger .
Accédez à l'emplacement où vous avez enregistré votre clé, sélectionnez-le et cliquez sur Ouvrir . Ajoutez l'ID de clé de la clé (disponible dans Certificats, identifiants et profils dans le Centre des membres pour les développeurs Apple ) et cliquez sur Télécharger .
Initialisez 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é:
- Importez le module Firebase dans votre
UIApplicationDelegate
:Rapide
import Firebase
Objectif c
@import Firebase;
- Configurez une instance partagée
FirebaseApp
, généralement dans l'application de votreapplication:didFinishLaunchingWithOptions:
method:Rapide
// Use Firebase library to configure APIs FirebaseApp.configure()
Objectif c
// Use Firebase library to configure APIs [FIRApp configure];
Inscrivez-vous aux notifications à distance
Soit au démarrage, soit au point souhaité dans le flux de votre application, enregistrez votre application pour les notifications à distance.registerForRemoteNotifications
appelsForRemoteNotifications 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. Étant donné que vous devrez entrer le jeton dans un champ dans l' éditeur de notifications pour terminer ce didacticiel, assurez-vous de copier le jeton ou de le stocker en toute sécurité après l'avoir récupéré.
Par défaut, le SDK FCM génère un jeton d'inscription 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 iOS fournit 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 SDK FCM 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é d'application est conforme au protocole de délégué de messagerie, vous pouvez définir le délégué sur l' application:didFinishLaunchingWithOptions:
sur lui-même.
Rapide
Messaging.messaging().delegate = self
Objectif c
[FIRMessaging messaging].delegate = self;
Récupération du jeton d'enregistrement actuel
Les jetons d'inscription sont délivrés via la méthode de messaging:didReceiveRegistrationToken:
Cette méthode est généralement appelée une fois par début d'application avec un 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. Cela n'est requis que pour les nouveaux abonnements ou pour les situations dans lesquelles l'utilisateur a réinstallé l'application.
Vous pouvez récupérer le token directement en utilisant token (completion :) . 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 des jetons
Pour être notifié 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:
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 également écouter une NSNotification
nommée kFIRMessagingRegistrationTokenRefreshNotification
plutôt que de fournir une méthode déléguée. La propriété token a toujours la valeur actuelle du token.
Envoyer un message de notification
Installez et exécutez l'application sur l'appareil cible. Vous devrez accepter la demande d'autorisation pour recevoir des notifications à distance.
Assurez-vous que l'application est en arrière-plan sur l'appareil.
Ouvrez l' éditeur de notifications et sélectionnez Nouvelle notification .
Saisissez le texte du message.
Sélectionnez Envoyer un message de test .
Dans le champ intitulé Ajouter un jeton d'enregistrement FCM , saisissez le jeton d'enregistrement que vous avez obtenu dans une section précédente de ce guide.
Cliquez sur Test
Une fois que vous avez cliqué sur Tester , l'appareil client ciblé (avec l'application en arrière-plan) doit recevoir la notification dans le centre de notifications.
Pour obtenir un aperçu de la livraison des messages à votre application, consultez le tableau de bord de création de rapports FCM , qui enregistre le nombre de messages envoyés et ouverts sur les appareils iOS et Android, ainsi que les données relatives aux «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: