了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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 di notifiche a un dispositivo di sviluppo quando l'app è in background sul dispositivo. Questa pagina elenca tutti i passaggi per raggiungere questo obiettivo, dall'installazione alla verifica: potrebbe coprire i passaggi che hai già completato 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à di Firebase per la tua app. Per FCM in particolare, dovrai caricare la tua chiave di autenticazione APNs 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:
      • iOS 11
      • Mac OS 10.13
      • tv OS 12
      • watch OS 6
  • Configura un dispositivo Apple fisico per eseguire la tua app e completa queste attività:

    • Ottieni una chiave di autenticazione per le 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 Capire i progetti Firebase per saperne di più 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 di Firebase .

  2. Al centro della pagina della 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 bundle della tua app nel campo ID bundle .

  4. (Facoltativo) Inserisci altre informazioni sull'app: nickname dell'app e ID dell'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 Firebase Apple ( GoogleService-Info.plist ).

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

Se disponi di più ID bundle nel tuo progetto, 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 .

Aggiungi 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 Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Scegli la libreria Firebase Cloud Messaging.
  5. 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.
  6. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

Carica la tua chiave di autenticazione APNs

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

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

  2. Nella chiave di autenticazione APN in Configurazione app iOS , fai clic sul pulsante Carica .

  3. Passare alla posizione in cui è stata salvata la chiave, selezionarla e fare clic su Apri . Aggiungi l'ID chiave per la chiave (disponibile nell'Apple Developer Member Center ) 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 nel tuo UIApplicationDelegate , così come qualsiasi altro modulo Firebase utilizzato dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e l'autenticazione:

    SwiftUI

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

    Rapido

    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()

    Rapido

    // 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 disabilitare lo scorrimento del delegato dell'app. Per ulteriori informazioni, consulta le istruzioni 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 nel flusso dell'applicazione, registra la tua app per le notifiche remote. Chiamare registerForRemoteNotifications come mostrato:

Rapido


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é per completare questo tutorial dovrai inserire il token in un campo nel compositore delle notifiche , 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 APNs, questo token ti consente di inviare notifiche mirate a qualsiasi particolare istanza 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 l'avvio iniziale dell'app e ogni volta che il token viene aggiornato o invalidato. In tutti i casi, FCM SDK 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 della messaggistica

Per ricevere i token di registrazione, implementa il protocollo del 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, è possibile impostare il delegato su application:didFinishLaunchingWithOptions: su se stesso.

Rapido

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 generalmente chiamato 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 è richiesto solo per nuovi abbonamenti o per situazioni in cui l'utente ha reinstallato l'app.

Puoi recuperare il token direttamente usando token(completion:) . Viene fornito un errore non nullo se il recupero del token non è riuscito in alcun modo.

Rapido

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

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 appropriato:

Rapido

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 invece di fornire un metodo delegato. La proprietà token ha sempre il valore del 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 Messaggi .

  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. Selezionare 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 Prova .

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

Per informazioni sulla consegna dei messaggi alla tua app, consulta la 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, vedi: