Per iniziare a utilizzare FCM, crea il caso d'uso più semplice: invia un messaggio di notifica di test dal Editor di notifiche a un dispositivo di sviluppo quando l'app è in background sul dispositivo. In questa pagina sono elencati tutti i passaggi per raggiungere questo obiettivo, dalla configurazione alla verifica. Potrebbero essere inclusi i passaggi che hai già completato se hai configurato un'app client Apple per FCM.
Aggiungi Firebase al tuo progetto Apple
Questa sezione riguarda le attività che potresti aver completato se hai già attivato altre funzionalità di Firebase per la tua app. In particolare, per FCM, dovrai caricare la chiave di autenticazione del servizio APN e registrarti per le notifiche remote.
Prerequisiti
Installa quanto segue:
- Xcode 15.2 o versioni successive
Assicurati che il progetto soddisfi i seguenti requisiti:
- Il progetto deve avere come target queste versioni della piattaforma o versioni successive:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- Il progetto deve avere come target queste versioni della piattaforma o versioni successive:
Configura un dispositivo Apple fisico per eseguire l'app e completa le seguenti attività:
- Ottieni una chiave di autenticazione delle notifiche push di Apple per il tuo account sviluppatore Apple.
- Attiva le notifiche push in XCode in App > Funzionalità.
- Accedi a Firebase utilizzando il tuo Account Google.
Se non disponi già di un progetto Xcode e vuoi semplicemente provare un prodotto Firebase, puoi scaricare uno dei nostri esempi di guida rapida.
Crea un progetto Firebase
Prima di poter aggiungere Firebase alla tua app per Apple, devi creare un progetto Firebase per connetterti all'app. Per saperne di più sui progetti Firebase, consulta Informazioni sui progetti Firebase.
Registra la tua app con Firebase
Per utilizzare Firebase nella tua app per Apple, devi registrare l'app con il tuo progetto Firebase. La registrazione dell'app è spesso chiamata "aggiunta" dell'app al progetto.
Vai alla console Firebase.
Al centro della pagina di riepilogo del progetto, fai clic sull'icona iOS+ per avviare il flusso di lavoro di configurazione.
Se hai già aggiunto un'app al tuo progetto Firebase, fai clic su Aggiungi app per visualizzare le opzioni della piattaforma.
Inserisci l'ID gruppo della tua app nel campo ID gruppo.
(Facoltativo) Inserisci altre informazioni sull'app: Nickname dell'app e ID App Store.
Fai clic su Registra app.
Aggiungi un file di configurazione Firebase
Fai clic su Scarica GoogleService-Info.plist per ottenere il file di configurazione delle piattaforme Apple Firebase (
GoogleService-Info.plist
).Sposta il file di configurazione nella directory principale del progetto Xcode. Se richiesto, seleziona l'opzione per aggiungere il file di configurazione a tutti i target.
Se nel progetto hai più ID pacchetto, devi associare ogni ID pacchetto a un'app registrata nella console Firebase, in modo che ogni app possa avere il proprio file GoogleService-Info.plist
.
Aggiungere gli SDK Firebase all'app
Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Aggiungi pacchetti.
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la raccolta Firebase Cloud Messaging.
- Aggiungi il flag
-ObjC
alla sezione Altri flag linker delle impostazioni di build del target. - Per un'esperienza ottimale con Firebase Cloud Messaging, ti consigliamo di attivare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app. Puoi selezionare la libreria senza raccolta IDFA o con raccolta IDFA.
- Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
Carica la chiave di autenticazione del servizio APN
Carica la chiave di autenticazione del servizio APN su Firebase. Se non hai ancora una chiave di autenticazione APN, assicurati di crearne una nel Centro per gli sviluppatori Apple.
-
All'interno del progetto nella console Firebase, seleziona l'icona a forma di ingranaggio, seleziona Impostazioni progetto e poi la scheda Cloud Messaging.
-
In Chiave di autenticazione del servizio APN in Configurazione app per iOS, fai clic sul pulsante Carica.
-
Vai alla posizione in cui hai salvato la chiave, selezionala e fai clic su Apri. Aggiungi l'ID chiave per la chiave (disponibile nel Centro membri Apple Developer) e fai clic su Carica.
Inizializza Firebase nella tua app
Dovrai aggiungere il codice di inizializzazione di Firebase alla tua applicazione. Importa il modulo Firebase e configura un'istanza condivisa come mostrato:
- Importa il modulo
FirebaseCore
inUIApplicationDelegate
, nonché eventuali altri moduli Firebase utilizzati dal tuo app delegate. Ad esempio, per utilizzare Cloud Firestore e 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; // ...
- Configura un'istanza condivisa
FirebaseApp
nel metodoapplication(_:didFinishLaunchingWithOptions:)
del delegato dell'app: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];
- Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e collegarlo alla tua struct
App
tramiteUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. Devi anche disattivare lo scambio del delegato dell'app. Per maggiori informazioni, consulta le istruzioni di SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Registrati per ricevere notifiche remote
All'avvio o nel punto desiderato del flusso di applicazione, registra la tua app per le notifiche remote. ChiamaregisterForRemoteNotifications
come mostrato:
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];
Accedi al token di registrazione
Per inviare un messaggio a un dispositivo specifico, devi conoscere il token di registrazione di quel dispositivo. Poiché dovrai inserire il token in un campo del Editor di notifiche per completare questo tutorial, assicurati di copiarlo o di memorizzarlo in modo sicuro dopo averlo recuperato.
Per impostazione predefinita, l'SDK FCM genera un token di registrazione per l'istanza dell'app client all'avvio dell'app. Analogamente al token dispositivo APN, questo token ti consente di inviare notifiche mirate a qualsiasi istanza specifica della tua app.
Come le piattaforme Apple in genere forniscono un token dispositivo APN all'avvio dell'app,
FCM fornisce un token di registrazione tramite il metodo messaging:didReceiveRegistrationToken:
di FIRMessagingDelegate
.
L'SDK FCM recupera un token nuovo o esistente durante il lancio iniziale dell'app e ogni volta che il token viene aggiornato o reso non valido.
In tutti i casi, l'SDK FCM chiama messaging:didReceiveRegistrationToken:
con un token valido.
Il token di registrazione può cambiare quando:
- L'app viene ripristinata su un nuovo dispositivo
- L'utente disinstalla/reinstalla l'app
- L'utente cancella i dati dell'app.
Impostare il delegato per i messaggi
Per ricevere i token di registrazione, implementa il protocollo del delegato per i messaggi e imposta la proprietà delegate
di FIRMessaging
dopo aver chiamato [FIRApp configure]
.
Ad esempio, se il tuo delegato dell'applicazione è conforme al protocollo del delegato per la messaggistica, puoi impostare il delegato su application:didFinishLaunchingWithOptions:
su se stesso.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
Recupero del token di registrazione attuale
I token di registrazione vengono inviati tramite il metodo
messaging:didReceiveRegistrationToken:
. Questo metodo viene chiamato in genere una volta per ogni avvio dell'app con il token di registrazione. Quando viene chiamato questo metodo, è il momento ideale per:
- Se il token di registrazione è nuovo, invialo al server delle applicazioni.
- Abbonati al token di registrazione agli argomenti. Questo è necessario solo per i nuovi abbonamenti o per le situazioni in cui l'utente ha reinstallato l'app.
Puoi recuperare il token direttamente utilizzando token(completion:). Viene fornito un errore non nullo se il recupero del token non è riuscito in alcun modo.
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; } }];
Puoi utilizzare questo metodo in qualsiasi momento per accedere al token anziché memorizzarlo.
Monitorare l'aggiornamento del token
Per ricevere una notifica ogni volta che il token viene aggiornato, fornisci un delegato conforme al protocollo del delegato di messaggistica. L'esempio seguente registra il delegato e aggiunge il metodo del delegato appropriato:
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. }
In alternativa, puoi ascoltare un NSNotification
chiamato
kFIRMessagingRegistrationTokenRefreshNotification
anziché fornire un metodo delegato. La proprietà token ha sempre il valore del token corrente.
Inviare un messaggio di notifica
Installa ed esegui l'app sul dispositivo di destinazione. Sui dispositivi Apple, dovrai accettare la richiesta di autorizzazione per ricevere notifiche remote.
Assicurati che l'app sia in background sul dispositivo.
Nella console Firebase, apri la pagina Messaggistica.
Se è il tuo primo messaggio, seleziona Crea la tua prima campagna.
- Seleziona Messaggi di notifica Firebase e Crea.
In caso contrario, nella scheda Campagne, seleziona Nuova campagna e poi Notifiche.
Inserisci il testo del messaggio. Tutti gli altri campi sono facoltativi.
Seleziona Invia messaggio di prova dal riquadro a destra.
Nel campo Aggiungi un token di registrazione FCM, inserisci il token di registrazione ottenuto in una sezione precedente di questa guida.
Seleziona Testa.
Dopo aver selezionato Test, il dispositivo client di destinazione (con l'app in background) dovrebbe ricevere la notifica.
Per informazioni sull'invio dei messaggi alla tua app, consulta la FCMdashboard dei report, che registra il numero di messaggi inviati e aperti su dispositivi Apple e Android, nonché i dati relativi alle "impressioni" (notifiche visualizzate dagli utenti) per le app per Android.
Passaggi successivi
Per andare oltre i messaggi di notifica e aggiungere un altro comportamento più avanzato alla tua app, consulta: