Para começar a usar o FCM, crie o caso de uso mais simples: enviar uma mensagem de notificação de teste do compositor de Notificações para um dispositivo de desenvolvimento quando o aplicativo estiver em segundo plano no dispositivo. Esta página lista todas as etapas para fazer isso, desde a configuração até a verificação. Ela pode abranger etapas que você já concluiu se tiver configurado um aplicativo cliente Apple para FCM.
Adicione o Firebase ao seu projeto Apple
Esta seção aborda tarefas que você pode ter concluído se já tiver habilitado outros recursos do Firebase para seu aplicativo. Especificamente para o FCM, você precisará carregar sua chave de autenticação de APNs e registrar-se para receber notificações remotas .
Pré-requisitos
Instale o seguinte:
- Xcode 14.1 ou posterior
Certifique-se de que seu projeto atenda a estes requisitos:
- Seu projeto deve ter como alvo estas versões de plataforma ou posteriores:
- iOS 11
- macOS 10.13
- tvOS 12
- watchOS 6
- Seu projeto deve ter como alvo estas versões de plataforma ou posteriores:
Configure um dispositivo Apple físico para executar seu aplicativo e conclua estas tarefas:
- Obtenha uma chave de autenticação de notificação push da Apple para sua conta de desenvolvedor Apple .
- Habilite notificações push no XCode em App > Capabilities .
- Faça login no Firebase usando sua conta do Google.
Se você ainda não tem um projeto Xcode e deseja apenas testar um produto Firebase, baixe um de nossos exemplos de início rápido .
Crie um projeto do Firebase
Antes de adicionar o Firebase ao seu aplicativo Apple, você precisa criar um projeto do Firebase para se conectar ao seu aplicativo. Visite Entenda os projetos do Firebase para saber mais sobre os projetos do Firebase.
Registre seu aplicativo no Firebase
Para usar o Firebase em seu aplicativo Apple, você precisa registrar seu aplicativo em seu projeto Firebase. Registrar seu aplicativo geralmente é chamado de "adicionar" seu aplicativo ao projeto.
Vá para 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 aplicativo ao seu projeto do Firebase, clique em Adicionar aplicativo para exibir as opções da plataforma.
Insira o ID do pacote do seu aplicativo no campo ID do pacote .
Um ID de pacote identifica exclusivamente um aplicativo no ecossistema da Apple.
Encontre o ID do seu pacote: abra seu projeto no Xcode, selecione o aplicativo de nível superior no navegador do projeto e selecione a guia Geral .
O valor do campo Identificador de Pacote é o ID do pacote (por exemplo,
com.yourcompany.yourproject
).Esteja ciente de que o valor do ID do pacote diferencia maiúsculas de minúsculas e não pode ser alterado para este aplicativo do Firebase depois de registrado no seu projeto do Firebase.
(Opcional) Insira outras informações do aplicativo: apelido do aplicativo e ID da App Store .
Apelido do aplicativo : um identificador interno e prático que só fica visível para você no Console do Firebase
ID da App Store : usado pelo Firebase Dynamic Links para redirecionar os usuários para sua página da App Store e pelo Google Analytics para importar eventos de conversão para o Google Ads . Se o seu aplicativo ainda não tiver um ID da App Store, você poderá adicionar o ID posteriormente nas configurações do projeto .
Clique em Registrar aplicativo .
Adicione um arquivo de configuração do Firebase
Clique em Baixar GoogleService-Info.plist para obter o arquivo de configuração das plataformas Firebase Apple (
GoogleService-Info.plist
).O arquivo de configuração do Firebase contém identificadores exclusivos, mas não secretos, para o seu projeto. Para saber mais sobre esse arquivo de configuração, visite Entenda os projetos do Firebase .
Você pode fazer download do arquivo de configuração do Firebase novamente a qualquer momento.
Certifique-se de que o nome do arquivo de configuração não contenha caracteres adicionais, como
(2)
.
Mova seu arquivo de configuração para a raiz do seu projeto Xcode. Se solicitado, selecione para adicionar o arquivo de configuração a todos os destinos.
Se você tiver vários IDs de pacote no seu projeto, deverá associar cada ID de pacote a um aplicativo registrado no Console do Firebase para que cada aplicativo possa ter seu próprio arquivo GoogleService-Info.plist
.
Adicione SDKs do Firebase ao seu aplicativo
Use o Swift Package Manager para instalar e gerenciar dependências do Firebase.
- No Xcode, com o projeto do seu aplicativo aberto, navegue até File > Add Packages .
- Quando solicitado, adicione o repositório SDK das plataformas Apple do Firebase:
- Escolha a biblioteca Firebase Cloud Messaging.
- Adicione o sinalizador
-ObjC
à seção Outros sinalizadores de vinculador das configurações de compilação do seu destino. - Para uma experiência ideal com o Firebase Cloud Messaging, recomendamos ativar o Google Analytics no seu projeto do Firebase e adicionar o SDK do Firebase para Google Analytics ao seu aplicativo. Você pode selecionar a biblioteca sem coleção IDFA ou com coleção IDFA.
- Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Faça upload da sua chave de autenticação de APNs
Faça upload da sua chave de autenticação de APNs para o Firebase. Se você ainda não possui uma chave de autenticação de APNs, crie uma no Apple Developer Member Center .
Dentro do seu projeto no console do Firebase, selecione o ícone de engrenagem, selecione Configurações do projeto e selecione a guia Cloud Messaging .
Na chave de autenticação APNs em configuração do aplicativo iOS , clique no botão Upload .
Navegue até o local onde você salvou sua chave, selecione-o e clique em Abrir . Adicione o ID da chave (disponível no Apple Developer Member Center ) e clique em Upload .
Inicialize o Firebase no seu aplicativo
Você precisará adicionar o código de inicialização do Firebase ao seu aplicativo. Importe o módulo Firebase e configure uma instância compartilhada conforme mostrado:
- Importe o módulo
FirebaseCore
em seuUIApplicationDelegate
, bem como quaisquer outros módulos Firebase que seu delegado de aplicativo usa. Por exemplo, para usar o Cloud Firestore e o Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rápido
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objetivo-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma instância compartilhada
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
delegado do seu aplicativo:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
Objetivo-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se estiver usando SwiftUI, você deve criar um delegado de aplicativo e anexá-lo à sua estrutura
App
viaUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Você também deve desativar o swizzling de delegado do aplicativo. Para obter mais informações, consulte as instruções do SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Registre-se para receber notificações remotas
Na inicialização ou no ponto desejado no fluxo do seu aplicativo, registre seu aplicativo para notificações remotas. ChameregisterForRemoteNotifications
conforme mostrado:Rápido
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objetivo-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
Acesse o token de registro
Para enviar uma mensagem para um dispositivo específico, você precisa saber o token de registro desse dispositivo. Como você precisará inserir o token em um campo no compositor de Notificações para concluir este tutorial, copie o token ou armazene-o com segurança após recuperá-lo.
Por padrão, o SDK do FCM gera um token de registro para a instância do aplicativo cliente na inicialização do aplicativo. Semelhante ao token de dispositivo APNs, esse token permite enviar notificações direcionadas para qualquer instância específica do seu aplicativo.
Da mesma forma que as plataformas Apple normalmente entregam um token de dispositivo APNs na inicialização do aplicativo, o FCM fornece um token de registro por meio do método messaging:didReceiveRegistrationToken:
de FIRMessagingDelegate
. O SDK do FCM recupera um token novo ou existente 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.
O token de registro pode mudar quando:
- O aplicativo é restaurado em um novo dispositivo
- O usuário desinstala/reinstala o aplicativo
- O usuário limpa os dados do aplicativo.
Definir o delegado de mensagens
Para receber tokens de registro, implemente o protocolo de delegação de mensagens e defina a propriedade delegate
de FIRMessaging
após chamar [FIRApp configure]
. Por exemplo, se o delegado do seu aplicativo estiver em conformidade com o protocolo de delegado de mensagens, você poderá definir o delegado em application:didFinishLaunchingWithOptions:
para si mesmo.
Rápido
Messaging.messaging().delegate = self
Objetivo-C
[FIRMessaging messaging].delegate = self;
Buscando o token de registro atual
Os tokens de registro são entregues por meio do método messaging:didReceiveRegistrationToken:
. Este método é chamado geralmente uma vez por início do aplicativo com token de registro. Quando esse método é chamado, é o momento ideal para:
- Se o token de registro for novo, envie-o para o servidor de aplicativos.
- Assine o token de registro nos tópicos. Isso é necessário apenas para novas assinaturas ou para situações em que o usuário reinstalou o aplicativo.
Você pode recuperar o token diretamente usando token(completion:) . Um erro não nulo será fornecido se a recuperação do token falhar de alguma forma.
Rápido
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)" } }
Objetivo-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 atualização de token
Para ser notificado sempre que o token for atualizado, forneça um delegado em conformidade com o protocolo de delegado de mensagens. O exemplo a seguir registra o delegado e adiciona o método delegado adequado:
Rápido
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. }
Objetivo-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. }
Alternativamente, você pode ouvir um NSNotification
chamado kFIRMessagingRegistrationTokenRefreshNotification
em vez de fornecer um método delegado. A propriedade token sempre possui o valor do token atual.
Envie uma mensagem de notificação
Instale e execute o aplicativo no dispositivo de destino. Em dispositivos Apple, você precisará aceitar a solicitação de permissão para receber notificações remotas.
Certifique-se de que o aplicativo esteja em segundo plano no dispositivo.
No console do Firebase, abra a página Mensagens .
Se esta for sua primeira mensagem, selecione Crie sua primeira campanha .
- Selecione Mensagens de notificação do Firebase e selecione Criar .
Caso contrário, na guia Campanhas , selecione Nova campanha e depois Notificações .
Digite o texto da mensagem. Todos os outros campos são opcionais.
Selecione Enviar mensagem de teste no painel direito.
No campo denominado Adicionar um token de registro FCM , insira o token de registro obtido na seção anterior deste guia.
Selecione Teste .
Depois de selecionar Testar , o dispositivo cliente de destino (com o aplicativo em segundo plano) deverá receber a notificação.
Para obter informações sobre a entrega de mensagens no seu aplicativo, consulte o painel de relatórios do FCM , que registra o número de mensagens enviadas e abertas em dispositivos Apple e Android, juntamente com dados de "impressões" (notificações vistas pelos usuários) para aplicativos Android.
Próximos passos
Para ir além das mensagens de notificação e adicionar outros comportamentos mais avançados ao seu aplicativo, consulte: