iOS Nativo
1. Crie uma aplicação iOS no console do Firebase
Na aba Cloud Messaging, encontrado no console do Firebase, crie uma aplicação iOS
Após criada, faça o download do arquivo GoogleService-Info.plist. Ele será adicionado em seu projeto Flutter a seguir:
2 - Adicione o arquivo google-services.plist em seu projeto
No seu projeto, dentro da pasta iOS/Runner adicione o arquivo google-services.plist
../Seuprojeto/ios/Runner/
3. No Xcode habilite o App para Notificações Remotas
4. Configuração no código do seu App
-
Gere os certificados exigidos pela Apple para receber notificações push seguindo this guide nos documentos do Firebase. Você pode pular a seção intitulada "Criar o perfil de provisionamento".
-
Usando o Firebase Console , adicione um aplicativo iOS ao seu projeto: Siga o assistente, baixe o arquivo GoogleService-Info.plist gerado, abra ios / Runner.xcworkspace com o Xcode e, no Xcode, coloque o arquivo dentro do ios / Runner. Não siga as etapas chamadas "Adicionar SDK do Firebase" e "Adicionar código de inicialização" no assistente do Firebase.
-
No Xcode, selecione Runner no Project Navigator. Na guia Capacidades, ative Notificações push e Modos em segundo plano e ative a busca em segundo plano e notificações remotas em Modos em segundo plano.
-
Siga as etapas na seção "Upload your APNs certificate"" dos documentos do Firebase.
- Alerta!!!!!: Se você precisar desativar o método swizzling feito pelo FCM iOS SDK (por exemplo, para que você possa usar este plug-in com outros plug-ins de notificação), adicione o seguinte ao arquivo Info.plist do seu aplicativo.
FirebaseAppDelegateProxyEnabled
- Após realizar a configuração acima, adicione as seguintes linhas de código a seu aplicativo no método AppDelegate.m/AppDelegate.swift:
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Swift
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
Objective-c
if (@available(iOS 10.0, *)) {
[UNUserNotificationCenter currentNotificationCenter].delegate = (id<UNUserNotificationCenterDelegate>) self;
}
Lembre-se
Voce precisa adicionar esta chave no ios/Runner/Info.plist
Para evitar problemas com a webview
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
- Configurando o AppDelegate e inicializando o Firebase: Vá até ios/Runner/AppDelegate.swift e inicializar o Firebase da seguinte forma:
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
Por default os emuladores em iOS não geram o Push Token válidos, o que irá dificultar os testes, mas voce pode testar num device fisico iOS ou android emulator. ☺️
5. Configuração Rich Push Notifications
Para poder receber e gerenciar imagens de notificação em um aplicativo iOS, você deve adicionar uma Notification Service Extension. A extensão do serviço de notificação permite que seu aplicativo reconheça a imagem enviada no payload do FCM antes de exibir a notificação ao usuário final.)
Você pode conferir o passo-a-passo oficial, fornecido na documentação do Firebase, clicando nesse link
Configure a Notification Service Extension.
Para adicionar uma extensão de serviço, execute as tarefas de configuração necessárias para modificar e apresentar notificações em APNs e, em seguida, adicione a API auxiliar de extensão FCM em NotificationService.m. Especificamente, em vez de completar o retorno de chamada com self.contentHandler (self.bestAttemptContent) ;, complete-o com FIRMessaging extensionHelper conforme mostrado:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you wish
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
- Se for um erro sobre o bitcode: abra o NotificationService de destino, aba Build Settings, encontre o bitcode -> selecione Não
Updated 11 months ago