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

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. Questa pagina elenca tutti i passaggi da seguire, dalla configurazione alla verifica. Potrebbe includere passaggi che hai già completato se hai configurato un'app client Apple per FCM.

Aggiungere Firebase al progetto Apple

Questa sezione illustra 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 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
  • 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à.

Se non hai ancora un progetto Xcode e vuoi solo 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 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.

  1. Vai alla console Firebase.

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

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

  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 di 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 directory principale del progetto Xcode. Se richiesto, seleziona l'opzione per aggiungere il file di configurazione a tutti i target.

Se nel progetto sono presenti più ID bundle, devi associare ogni ID bundle a un'app registrata nella console Firebase in modo che ogni app possa avere il suo file GoogleService-Info.plist.

Aggiungere gli SDK Firebase all'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 > Aggiungi pacchetti.
  2. Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Scegli la raccolta Firebase Cloud Messaging.
  5. Aggiungi il flag -ObjC alla sezione Altri flag del linker delle impostazioni di compilazione del target.
  6. 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.
  7. Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.

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 APNs, assicurati di crearne una nel Centro per gli sviluppatori Apple.

  1. All'interno del progetto nella console Firebase, seleziona l'icona a forma di ingranaggio, seleziona Impostazioni progetto e poi la scheda Cloud Messaging.

  2. In Chiave di autenticazione del servizio APN in Configurazione app per iOS, fai clic sul pulsante Carica.

  3. 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:

  1. Importa il modulo FirebaseCore in UIApplicationDelegate, 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;
    // ...
          
  2. Configura un'istanza condivisa FirebaseApp nel metodo application(_: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];
  3. Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e collegarlo alla tua struct App tramite UIApplicationDelegateAdaptor o NSApplicationDelegateAdaptor. 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 le notifiche da remoto

All'avvio o nel punto desiderato del flusso di applicazione, registra la tua app per le notifiche remote. Chiama registerForRemoteNotifications 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];

Accedere al token di registrazione

Per inviare un messaggio a un dispositivo specifico, devi conoscere il token di registrazione del 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 al momento dell'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

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

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

  3. Nella console Firebase, apri la pagina Messaggistica.

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

    1. Seleziona Messaggi di notifica Firebase e Crea.
  5. In caso contrario, 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 a destra.

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

  9. 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: