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

Per iniziare a utilizzare FCM, crea lo scenario d'uso più semplice: invia un messaggio di notifica di test dal composer 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 includere 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à 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 16.2 o versioni successive
  • Assicurati che il tuo progetto soddisfi i seguenti requisiti:

    • Il tuo 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 queste attività:

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

Se non hai già 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 Apple, devi creare un progetto Firebase a cui connetterti. Visita la pagina Informazioni sui progetti Firebase per scoprire di più su questi progetti.

Registrare l'app con Firebase

Per utilizzare Firebase nella tua app Apple, devi registrarla nel tuo progetto Firebase. La registrazione dell'app viene 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 della 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 bundle della tua app nel campo ID bundle.

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

  5. Fai clic su Registra app.

Aggiungere un file di configurazione di Firebase

  1. Fai clic su Scarica GoogleService-Info.plist per ottenere il file di configurazione Firebase della tua app (GoogleService-Info.plist).

  2. Sposta il file di configurazione nella root del progetto Xcode. Se richiesto, seleziona l'opzione per aggiungere il file di configurazione a tutti i target.

Se nel tuo 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 proprio file GoogleService-Info.plist.

Aggiungere 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 (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 build 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 dell'IDFA o con raccolta dell'IDFA. Consulta le nostre domande frequenti sull'organizzazione più recente dei moduli in Google Analytics per l'SDK Firebase.
  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 membri 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 APN nella sezione Configurazione app iOS, fai clic sul pulsante Carica.

  3. Sfoglia fino alla posizione in cui hai salvato la chiave, selezionala e fai clic su Apri. Aggiungi l'ID chiave (disponibile nel Developer Member Center di Apple) 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 di seguito:

  1. Importa il modulo FirebaseCore nel tuo UIApplicationDelegate, nonché tutti gli altri moduli Firebase utilizzati dal delegato dell'app. 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 struttura App tramite UIApplicationDelegateAdaptor o NSApplicationDelegateAdaptor. Devi anche disattivare lo swizzling del delegato dell'app. Per ulteriori informazioni, consulta le istruzioni per SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

Registrarsi per ricevere notifiche da remoto

All'avvio o nel punto desiderato del flusso dell'applicazione, registra l'app per le notifiche remote. Chiama registerForRemoteNotifications come mostrato di seguito:

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 composer 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. Analogamente al token dispositivo APN, questo token ti consente di inviare notifiche mirate a una particolare istanza della tua app.

Nello stesso modo in cui le piattaforme Apple in genere forniscono un token dispositivo APN all'avvio dell'app, FCM fornisce un token di registrazione tramite il metodo FIRMessagingDelegate messaging:didReceiveRegistrationToken:. L'SDK FCM recupera un token nuovo o esistente durante l'avvio iniziale dell'app e ogni volta che il token viene aggiornato o invalidato. 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 delegato di messaggistica e imposta 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.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Recupero del token di registrazione attuale in corso…

I token di registrazione vengono inviati tramite il metodo messaging:didReceiveRegistrationToken:. Questo metodo viene chiamato in genere una volta per 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.
  • Sottoscrivi il 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:). Se il recupero del token non è riuscito, viene fornito un errore diverso da null.

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 dei 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 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 denominato 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 questo è il tuo primo messaggio, seleziona Crea la tua prima campagna.

    1. Seleziona Messaggi di notifica Firebase e poi 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 etichettato Aggiungi un token di registrazione FCM, inserisci il token di registrazione che hai ottenuto in una sezione precedente di questa guida.

  9. Seleziona Test.

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

Per informazioni sulla distribuzione dei messaggi alla tua app, consulta la dashboard dei report FCM, 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 altri comportamenti più avanzati alla tua app, consulta: