Invia un messaggio di prova a un'app Apple in background

Per iniziare con FCM, crea il caso d'uso più semplice: inviare un messaggio di notifica di prova dal compositore delle notifiche a un dispositivo di sviluppo quando l'app è in background sul dispositivo. Questa pagina elenca tutti i passaggi per raggiungere questo obiettivo, dalla configurazione alla verifica: potrebbe coprire i passaggi già completati se hai configurato un'app client Apple per FCM.

Aggiungi Firebase al tuo progetto Apple

Questa sezione copre le attività che potresti aver completato se hai già abilitato altre funzionalità Firebase per la tua app. Per FCM in particolare, dovrai caricare la chiave di autenticazione APN e registrarti per le notifiche remote .

Prerequisiti

  • Installa quanto segue:

    • Xcode 14.1 o successivo
  • Assicurati che il tuo progetto soddisfi questi requisiti:

    • Il tuo progetto deve avere come target queste versioni della piattaforma o successive:
      • iOS11
      • macOS 10.13
      • tvOS 12
      • watchOS 6
  • Configura un dispositivo Apple fisico per eseguire la tua app e completa queste attività:

    • Ottieni una chiave di autenticazione delle notifiche push Apple per il tuo account sviluppatore Apple .
    • Abilita le notifiche push in XCode in App > Funzionalità .

Se non disponi già di un progetto Xcode e desideri semplicemente provare un prodotto Firebase, puoi scaricare uno dei nostri esempi di avvio rapido .

Crea un progetto Firebase

Prima di poter aggiungere Firebase alla tua app Apple, devi creare un progetto Firebase per connetterti alla tua app. Visita Comprendere i progetti Firebase per ulteriori informazioni sui progetti Firebase.

Registra la tua app con Firebase

Per utilizzare Firebase nella tua app Apple, devi registrare la tua app con il tuo progetto Firebase. La registrazione della tua app viene spesso chiamata "aggiunta" della tua app al tuo progetto.

  1. Vai alla console Firebase .

  2. Al centro della pagina di panoramica 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.

  3. Inserisci l'ID pacchetto della tua app nel campo ID pacchetto .

  4. (Facoltativo) Inserisci altre informazioni sull'app: nickname dell'app e ID App Store .

  5. Fai clic su Registra app .

Aggiungi un file di configurazione Firebase

  1. Fai clic su Scarica GoogleService-Info.plist per ottenere il file di configurazione delle piattaforme Apple Firebase ( GoogleService-Info.plist ).

  2. Sposta il file di configurazione nella radice del tuo progetto Xcode. Se richiesto, seleziona per aggiungere il file di configurazione a tutte le destinazioni.

Se nel tuo progetto sono presenti più ID pacchetto, devi associare ciascun ID pacchetto a un'app registrata nella console Firebase in modo che ciascuna app possa avere il proprio file GoogleService-Info.plist .

Aggiungi gli SDK Firebase alla tua app

Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.

  1. In Xcode, con il progetto dell'app aperto, vai a File > Add Packages .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Scegli la libreria Firebase Cloud Messaging.
  5. Aggiungi il flag -ObjC alla sezione Altri flag del linker delle impostazioni di build del tuo target.
  6. Per un'esperienza ottimale con Firebase Cloud Messaging, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app. È possibile selezionare la libreria senza raccolta IDFA o con raccolta IDFA.
  7. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

Carica la chiave di autenticazione APN

Carica la chiave di autenticazione APN su Firebase. Se non disponi già di una chiave di autenticazione APN, assicurati di crearne una nell'Apple Developer Member Center .

  1. All'interno del tuo progetto nella console Firebase, seleziona l'icona a forma di ingranaggio, seleziona Impostazioni progetto e quindi seleziona la scheda Messaggistica cloud .

  2. Nella chiave di autenticazione APN nella configurazione dell'app iOS , fai clic sul pulsante Carica .

  3. Individua la posizione in cui hai salvato la chiave, selezionala e fai clic su Apri . Aggiungi l'ID della chiave (disponibile nel Centro membri per sviluppatori Apple ) e fai clic su Carica .

Inizializza Firebase nella tua app

Dovrai aggiungere il codice di inizializzazione Firebase alla tua applicazione. Importa il modulo Firebase e configura un'istanza condivisa come mostrato:

  1. Importa il modulo FirebaseCore nel tuo UIApplicationDelegate , così come tutti gli altri moduli Firebase utilizzati dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e l'autenticazione:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Veloce

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Obiettivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configura un'istanza condivisa FirebaseApp nel metodo application(_:didFinishLaunchingWithOptions:) del delegato dell'app:

    SwiftUI

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

    Veloce

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

    Obiettivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e allegarlo alla struttura App tramite UIApplicationDelegateAdaptor o NSApplicationDelegateAdaptor . È inoltre necessario disattivare lo swizzling del delegato dell'app. Per ulteriori 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 le notifiche remote

All'avvio o nel punto desiderato del flusso dell'applicazione, registra la tua app per le notifiche remote. registerForRemoteNotifications chiamateForRemoteNotifications come mostrato:

Veloce


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Obiettivo-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 nel compositore delle notifiche per completare questo tutorial, assicurati di copiare il token o di archiviarlo 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. Simile al token del dispositivo APN, questo token ti consente di inviare notifiche mirate a qualsiasi istanza particolare della tua app.

Allo stesso modo in cui le piattaforme Apple in genere forniscono un token del 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 invalidato. In tutti i casi, l'SDK di 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.

Imposta il delegato della messaggistica

Per ricevere i token di registrazione, implementare il protocollo delegato di messaggistica e impostare la proprietà delegate di FIRMessaging dopo aver chiamato [FIRApp configure] . Ad esempio, se il delegato dell'applicazione è conforme al protocollo del delegato di messaggistica, puoi impostare il delegato su application:didFinishLaunchingWithOptions: su se stesso.

Veloce

Messaging.messaging().delegate = self

Obiettivo-C

[FIRMessaging messaging].delegate = self;

Recupero del token di registrazione corrente

I token di registrazione vengono consegnati tramite il metodo messaging:didReceiveRegistrationToken: . Questo metodo viene chiamato generalmente una volta per ogni app avviata con il token di registrazione. Quando viene chiamato questo metodo, è il momento ideale per:

  • Se il token di registrazione è nuovo, invialo al server dell'applicazione.
  • Sottoscrivere il token di registrazione agli argomenti. Ciò è necessario solo per i nuovi abbonamenti o per le situazioni in cui l'utente ha reinstallato l'app.

È possibile recuperare il token direttamente utilizzando token(completion:) . Viene fornito un errore non nullo se il recupero del token non è riuscito in qualche modo.

Veloce

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)"
  }
}

Obiettivo-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 invece di archiviarlo.

Monitorare l'aggiornamento del token

Per ricevere una notifica ogni volta che il token viene aggiornato, fornire un delegato conforme al protocollo del delegato di messaggistica. L'esempio seguente registra il delegato e aggiunge il metodo delegato corretto:

Veloce

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.
}

Obiettivo-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 una NSNotification denominata kFIRMessagingRegistrationTokenRefreshNotification anziché fornire un metodo delegato. La proprietà token ha sempre il valore token corrente.

Invia un messaggio di notifica

  1. Installa ed esegui l'app sul dispositivo di destinazione. Sui dispositivi Apple dovrai accettare la richiesta di autorizzazione per ricevere notifiche remote.

  2. Assicurati che l'app sia in background sul dispositivo.

  3. Nella console Firebase, apri la pagina Messaggistica .

  4. Se questo è il tuo primo messaggio, seleziona Crea la tua prima campagna .

    1. Seleziona Messaggi di notifica Firebase e seleziona Crea .
  5. Altrimenti, nella scheda Campagne , seleziona Nuova campagna e poi Notifiche .

  6. Inserisci il testo del messaggio. Tutti gli altri campi sono facoltativi.

  7. Seleziona Invia messaggio di prova dal riquadro di destra.

  8. Nel campo denominato Aggiungi un token di registrazione FCM , inserisci il token di registrazione ottenuto in una sezione precedente di questa guida.

  9. Seleziona Prova .

Dopo aver selezionato Test , il dispositivo client di destinazione (con l'app in background) dovrebbe ricevere la notifica.

Per informazioni dettagliate sulla consegna dei messaggi alla tua app, consulta il dashboard dei rapporti FCM , che registra il numero di messaggi inviati e aperti su dispositivi Apple e Android, insieme ai dati per le "impressioni" (notifiche visualizzate dagli utenti) per le app Android.

Prossimi passi

Per andare oltre i messaggi di notifica e aggiungere altri comportamenti più avanzati alla tua app, consulta: