Para começar a usar o FCM, crie o caso de uso mais simples: enviar uma mensagem de notificação de teste do Editor do Notificações a um dispositivo de desenvolvimento quando o app estiver em segundo plano. Esta página descreve todas as etapas para fazer isso, desde a configuração até a verificação. Talvez ela aborde etapas que você já concluiu, se configurou um app cliente da Apple para o FCM.
Adicionar o Firebase ao seu projeto da Apple
Esta seção aborda tarefas que você talvez tenha realizado se já ativou outros recursos do Firebase no app. Especificamente para o FCM, você precisa fazer upload da chave de autenticação dos APNs e registrar o app para receber notificações remotas.
Pré-requisitos
Instale o seguinte:
- Xcode 14.1 ou versões mais recentes
Verifique se o projeto atende a estes requisitos:
- O projeto precisa ser direcionado a estas versões da plataforma ou versões mais recentes:
- iOS 11
- macOS 10.13
- tvOS 12
- watchOS 6
- O projeto precisa ser direcionado a estas versões da plataforma ou versões mais recentes:
Configure um dispositivo Apple físico para executar o app e concluir estas tarefas:
- Conseguir uma chave de autenticação de notificação push da Apple para sua conta do Apple Developer.
- Ativar as notificações push no Xcode em App > Capabilities.
- Faça login no Firebase usando a conta do Google.
Se você ainda não tem um projeto do Xcode e quer testar um produto do Firebase, faça o download de uma das nossas amostras introdutórias.
Criar um projeto do Firebase
Antes de adicionar o Firebase ao seu app da Apple, crie um projeto do Firebase para conectá-lo ao app. Acesse Noções básicas sobre projetos do Firebase para saber mais.
Registrar o app no Firebase
Para usar o Firebase no seu app da Apple, é necessário registrá-lo no projeto do Firebase. Registrar o app também quer dizer "adicionar" o app ao projeto.
Acesse o Console do Firebase.
No centro da página de visão geral do projeto, clique no ícone iOS+ para iniciar o fluxo de trabalho de configuração.
Se você já adicionou um app ao seu projeto do Firebase, clique em Adicionar app para exibir as opções da plataforma.
Insira o ID do pacote do seu app no campo ID do pacote.
(Opcional) Insira outras informações do aplicativo: apelido do aplicativo e ID da App Store.
Clique em Registrar app.
Adicionar um arquivo de configuração do Firebase
Clique em Fazer o download do GoogleService-Info.plist para solicitar o arquivo de configuração do Firebase para plataformas Apple (
GoogleService-Info.plist
).Mova o arquivo de configuração para a raiz do seu projeto XCode. Se solicitado, selecione a opção para adicionar o arquivo de configuração a todos os destinos.
Se o projeto tiver vários IDs de pacotes, associe cada ID
a um app registrado no Console do Firebase para que tenha
o próprio arquivo GoogleService-Info.plist
.
Adicionar SDKs do Firebase ao seu app
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.
- No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
- Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
- Escolha a biblioteca do Firebase Cloud Messaging.
- Para uma experiência ideal com o Firebase Cloud Messaging, recomendamos ativar o Google Analytics no projeto do Firebase e adicionar o SDK do Firebase para Analytics ao seu app. Você pode selecionar a biblioteca com ou sem o recurso de coleta de IDFAs.
- Quando terminar, o Xcode começará a resolver e fazer o download das dependências em segundo plano automaticamente.
https://github.com/firebase/firebase-ios-sdk
Fazer upload da chave de autenticação de APNs
Faça upload da chave de autenticação de APNs para o Firebase. Se você ainda não tiver uma chave de autenticação de APNs, crie uma no Apple Developer Member Center.
-
No seu projeto no Console do Firebase, selecione o ícone de engrenagem, Configurações do projeto e a guia Cloud Messaging.
-
Acesse a Configuração do app iOS. Em Chave de autenticação de APNs, clique no botão Fazer upload.
-
Navegue até o local onde você salvou a chave, selecione-a e clique em Abrir. Adicione o ID da chave disponível no Apple Developer Member Center e clique em Fazer upload.
Inicializar o Firebase no seu app
É necessário adicionar o código de inicialização do Firebase ao seu app. Importe o módulo do Firebase e configure uma instância compartilhada da seguinte maneira:
- Importe o módulo
FirebaseCore
noUIApplicationDelegate
, assim como qualquer outro módulo do Firebase usado pelo delegado do app. Por exemplo, para usar o Cloud Firestore e o 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; // ...
- Configure uma
instância compartilhada do
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
do delegado do 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];
- Se você estiver usando a SwiftUI, crie um delegado do aplicativo e o anexe
ao struct
App
viaUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Também é necessário desativar o swizzling do delegado do app. Para mais informações, consulte as instruções da SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Registrar o app para receber notificações remotas
Na inicialização ou no ponto desejado do fluxo do seu aplicativo, registre-o para receber notificações remotas. ChameregisterForRemoteNotifications
conforme mostrado:
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];
Acessar o token de registro
Para enviar uma mensagem a um dispositivo específico, é necessário saber o token de registro dele. Como você precisa informar o token em um campo do Editor do Notificações para concluir este tutorial, copie e armazene-o em local seguro após a recuperação.
Por padrão, o SDK do FCM gera um token de registro para a instância do app cliente na inicialização do seu app. Semelhante ao token do dispositivo de APNs, este token permite que você envie notificações direcionadas a instâncias particulares do seu app.
Da mesma forma que as plataformas da Apple normalmente entregam um token de dispositivo de APNs ao iniciar o app,
o FCM fornece um token de registro usando o
método messaging:didReceiveRegistrationToken:
de FIRMessagingDelegate
.
O SDK do FCM recupera um token novo ou atual durante a inicialização do aplicativo e
sempre que o token é atualizado ou invalidado.
Em todos os casos, o SDK do FCM chama messaging:didReceiveRegistrationToken:
com um token válido.
Esse token pode mudar quando:
- o app é restaurado em um novo dispositivo;
- o usuário desinstala/reinstala o app;
- o usuário limpa os dados do app.
Definir a delegação de mensagens
Para receber tokens de registro, implemente o protocolo de delegação
de mensagens e defina a propriedade delegate
do FIRMessaging
depois de chamar
[FIRApp configure]
.
Por exemplo, se o delegado do aplicativo estiver em conformidade com o protocolo de delegação
de mensagens, você vai poder configurá-lo como seu próprio delegado em
application:didFinishLaunchingWithOptions:
.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
Como encontrar o token de registro atual
Os tokens de registro são enviados usando o método
messaging:didReceiveRegistrationToken:
. Normalmente, esse método é chamado uma vez
a cada inicialização do app com um token de registro. Depois dessa chamada é o momento ideal para:
- se o token de registro for novo, enviá-lo para o servidor de aplicativos;
- inscrever o token de registro em tópicos. Isso é necessário apenas para novas assinaturas ou em situações em que o usuário tenha reinstalado o app.
É possível recuperar o token diretamente usando token(completion:). Um erro não nulo será fornecido se a recuperação do token falhar.
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; } }];
Você pode usar esse método a qualquer momento para acessar o token em vez de armazená-lo.
Monitorar a atualização do token
Se você quiser receber notificações sempre que o token for atualizado, forneça um delegado em conformidade com o protocolo de delegação de mensagens. O exemplo a seguir registra o delegado e adiciona o método apropriado:
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. }
Como alternativa, você pode detectar uma NSNotification
denominada
kFIRMessagingRegistrationTokenRefreshNotification
em vez de fornecer um método delegado. A propriedade do token tem sempre o valor do token atual.
Enviar uma mensagem de notificação
Instale e execute o app no dispositivo de destino. Para dispositivos Apple, será necessário aceitar a solicitação de permissão para receber notificações remotas.
Verifique se o app está em segundo plano no dispositivo.
No Console do Firebase, abra a página "Mensagens".
Se esta for sua primeira mensagem, selecione Criar primeira campanha.
- Selecione Mensagens do Firebase Notificações e clique em Criar.
Se não for sua primeira mensagem, selecione Nova campanha e depois Notificações na guia Campanhas.
Digite o texto da mensagem. Todos os outros campos são opcionais.
Selecione Enviar mensagem de teste no painel à direita.
No campo Adicionar um token de registro do FCM, insira o token de registro obtido na seção anterior deste guia.
Selecione Testar.
Depois de selecionar Testar, o dispositivo cliente de destino com o app em segundo plano receberá a notificação.
Veja insights sobre a entrega de mensagens ao app no painel de relatórios do FCM, que registra o número de mensagens enviadas e abertas em dispositivos Apple e Android, além de dados de "impressões" (notificações vistas pelos usuários) de apps Android.
Próximas etapas
Para ir além das mensagens de notificação e adicionar outros comportamentos mais avançados ao app, consulte: