Check out what’s new from Firebase at Google I/O 2022. Learn more

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, dalla configurazione 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 13.3.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 10
      • macOS 10.12
      • tvOS 12
      • watchOS 6
  • Configura un dispositivo Apple fisico per eseguire la tua app e completa queste attività:

    • Ottieni una chiave di autenticazione di notifica 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 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 è 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 dell'App Store .

  5. Fare clic su Registra app .

Aggiungi un file di configurazione di Firebase

  1. Fare 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, seleziona per aggiungere il file di configurazione a tutte le destinazioni.

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

Aggiungi Firebase SDK alla tua app

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

  1. In Xcode, con il progetto dell'app aperto, vai su File > Aggiungi pacchetti .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  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 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 in Configurazione 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 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 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:

    Veloce

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Obiettivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configura un'istanza condivisa FirebaseApp , in genere nell'inizializzatore App o nel metodo dell'applicazione del delegato application(_:didFinishLaunchingWithOptions:) :

    Veloce

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

    Obiettivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Registrati per le notifiche a distanza

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

Veloce

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

Obiettivo-C

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[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 di 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 istanza particolare della tua app.

Allo stesso modo in cui le piattaforme Apple in genere forniscono un token del dispositivo APNs all'avvio dell'app, FCM fornisce un token di registrazione tramite il metodo messaging:didReceiveRegistrationToken: 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, 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.

Imposta il delegato di messaggistica

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, è possibile impostare il delegato in 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 generalmente chiamato 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.
  • Sottoscrivi il token di registrazione agli argomenti. Questo è richiesto solo per i nuovi abbonamenti o per le 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.

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.

Monitora l'aggiornamento del token

Per essere avvisato 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 del token corrente.

Invia un messaggio di notifica

  1. Installa ed esegui l'app sul dispositivo di destinazione. Dovrai accettare la richiesta di autorizzazione per ricevere le notifiche remote.

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

  3. Apri il compositore di notifiche e seleziona Nuova notifica .

  4. Inserisci il testo del messaggio.

  5. Seleziona Invia messaggio di prova .

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

  7. Fare clic su Prova

Dopo aver fatto clic su Test , il dispositivo client di destinazione (con l'app in background) dovrebbe ricevere la notifica nel centro notifiche.

Per informazioni dettagliate 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: