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

Per iniziare con FCM, costruire fuori il caso d'uso più semplice: l'invio di un messaggio di notifica di prova dal compositore notifiche a un dispositivo di sviluppo quando l'applicazione è in background sul dispositivo. Questa pagina elenca tutti i passi per raggiungere questo obiettivo, Dall'installazione alla verifica - si può coprire passaggi che è già completato se è stato impostato un client iOS per FCM.

Aggiungi Firebase al tuo progetto iOS

Questa sezione tratta le attività che potresti aver completato se hai già abilitato altre funzionalità di Firebase per la tua app. Per FCM nello specifico, è necessario caricare il tuo chiave di autenticazione APN e registrarsi per le notifiche a distanza .

Prerequisiti

  • Installa quanto segue:

    • Xcode 12.2 o successivo
    • CocoaPods 1.10.0 o successivo
  • Assicurati che il tuo progetto soddisfi questi requisiti:

    • Il tuo progetto deve avere come target iOS 10 o versioni successive.
  • Impostare un dispositivo iOS fisico per eseguire la vostra applicazione, e completare questi compiti:

    • Ottenere una spinta di notifica di Apple chiave di autenticazione per il vostro conto di Apple Developer .
    • Attiva notifiche push in XCode sotto App> Funzionalità.

Se non si dispone già di un progetto Xcode e vogliono solo provare un prodotto Firebase, è possibile scaricare uno dei nostri esempi rapidi .

Crea un progetto Firebase

Prima di poter aggiungere Firebase alla tua app iOS, devi creare un progetto Firebase per connetterti alla tua app iOS. Visita Capire Firebase progetti per saperne di più su progetti Firebase.

Registra la tua app con Firebase

Dopo aver creato un progetto Firebase, puoi aggiungere la tua app iOS.

Visita Capire Firebase Progetti per conoscere meglio le best practice e le considerazioni per l'aggiunta di applicazioni a un progetto Firebase, compreso il modo di gestire molteplici varianti di compilazione.

  1. Vai alla console Firebase .

  2. Al centro della pagina panoramica del progetto, fare clic sull'icona iOS ( ) per lanciare il flusso di lavoro di installazione.

    Se è già stato aggiunto un app per il vostro progetto Firebase, fare clic su Aggiungi app per visualizzare le opzioni di piattaforma.

  3. Inserire l'ID del fascio tua applicazione in iOS fascio campo ID.

  4. (Facoltativo) Immettere altre informazioni app: nick App e App Store ID.

  5. Fare clic su Registra app.

Aggiungi un file di configurazione Firebase

  1. Fare clic su Scarica GoogleService-Info.plist per ottenere il file di configurazione Firebase iOS ( 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 si dispone di più ID di bundle nel progetto, è necessario associare ogni ID fascio con un'applicazione registrato nella console Firebase in modo che ogni applicazione può avere il proprio GoogleService-Info.plist file.

Aggiungi gli SDK Firebase alla tua app

Si consiglia di utilizzare CocoaPods installare le librerie Firebase. Tuttavia, se si preferisce non utilizzare CocoaPods, è possibile integrare i quadri SDK direttamente o utilizzare Swift Package Manager , invece.

Si sta utilizzando uno dei esempi rapidi ? Il progetto Xcode e Podfile (con baccello) sono già presenti, ma avrete ancora bisogno di aggiungere il file di configurazione Firebase e installare i baccelli.

  1. Crea un Podfile se non ne hai già uno:

    cd your-project-directory
    pod init
  2. Al tuo Podfile, aggiungi i pod Firebase che desideri utilizzare nella tua app.

    È possibile aggiungere uno qualsiasi dei prodotti Firebase supportati al tuo iOS.

    Per un'esperienza ottimale con Firebase nube di messaggistica, si consiglia di consentire a Google Analytics nel progetto. Inoltre, come parte della configurazione di Analytics, devi aggiungere l'SDK Firebase per Analytics alla tua app.

    Analitica abilitata

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    
    # For Analytics without IDFA collection capability, use this pod instead
    # pod ‘Firebase/AnalyticsWithoutAdIdSupport’
    
    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'

    Scopri di più su IDFA, l'identificatore di pubblicità a livello di dispositivo, in Apple la privacy degli utenti e utilizzare i dati e App monitoraggio Trasparenza documentazione.

    Analitica non abilitata

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. Installare i baccelli, quindi aprire il .xcworkspace file per vedere il progetto in Xcode:

    pod install
    open your-project.xcworkspace

Carica la tua chiave di autenticazione APN

Carica la tua chiave di autenticazione APN su Firebase. Se non si dispone già di una chiave di autenticazione APNs, assicuratevi di crearne uno nel Centro membri di Apple Developer .

  1. Dentro il progetto nella console Firebase, selezionare l'icona dell'ingranaggio, selezionare Impostazioni di progetto e quindi selezionare la scheda di messaggistica cloud.

  2. In APN chiave di autenticazione in configurazione iOS, fare clic sul pulsante Carica.

  3. Individuare la posizione in cui è stata salvata la chiave, selezionarlo e fare clic su Apri. Aggiungere l'ID della chiave per la chiave (disponibile nel Stati Developer Center di Apple ) e fare 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. Importare il modulo Firebase nella vostra UIApplicationDelegate :

    Swift

    import Firebase

    Obiettivo-C

    @import Firebase;
  2. Configurare un FirebaseApp istanza condivisa, di solito in della tua app application:didFinishLaunchingWithOptions: Metodo:

    Swift

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

    Obiettivo-C

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

Registrati per le notifiche remote

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

Swift

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. Perché è necessario inserire il token in un campo nel compositore di notifiche per completare questo tutorial, assicurarsi di copiare il token o archiviare in modo sicuro dopo si recupera.

Per impostazione predefinita, l'SDK di 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 che iOS in genere fornisce un dispositivo APNs gettone su start app, FCM fornisce una registrazione gettone tramite FIRMessagingDelegate 's messaging:didReceiveRegistrationToken: metodo. L'SDK di 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, la 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.

Imposta il delegato di messaggistica

Per ricevere i token di registrazione, l'attuazione del protocollo di messaggistica delegato e impostare FIRMessaging s' delegate proprietà dopo aver chiamato [FIRApp configure] . Ad esempio, se il delegato applicazione conforme al protocollo di messaggistica delegato, è possibile impostare il delegato sulla application:didFinishLaunchingWithOptions: a se stesso.

Swift

Messaging.messaging().delegate = self

Obiettivo-C

[FIRMessaging messaging].delegate = self;

Recupero del token di registrazione corrente

Gettoni di registrazione sono forniti 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 tuo 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.

È possibile recuperare il token direttamente tramite gettone (completamento :) . 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)"
  }
}

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.

Monitora l'aggiornamento dei token

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

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

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, è possibile ascoltare un NSNotification nome kFIRMessagingRegistrationTokenRefreshNotification piuttosto che 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 notifiche remote.

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

  3. Aprire il compositore Notifiche e selezionare Nuovo notifica.

  4. Inserisci il testo del messaggio.

  5. Selezionare Invia messaggio di prova.

  6. Nel campo Aggiungi un token di registrazione FCM, immettere la registrazione di token si è ottenuto in una sezione precedente di questa guida.

  7. Fare clic su test

Dopo aver fatto clic di prova, il dispositivo client mirata (con l'applicazione in background) dovrebbe ricevere la notifica al centro di notifica.

Per spaccato il recapito di messaggi per la vostra applicazione, vedere la dashboard di reporting FCM , che registra il numero di messaggi inviati e aperto su dispositivi iOS e Android, insieme ai dati di "impressioni" (notifiche visti dagli utenti) per Android apps.

Prossimi passi

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