33 lines
1.3 KiB
Swift
33 lines
1.3 KiB
Swift
import Flutter
|
|
import Firebase
|
|
import FirebaseMessaging
|
|
import UIKit
|
|
|
|
@main
|
|
@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
|
|
override func application(
|
|
_ application: UIApplication,
|
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
|
) -> Bool {
|
|
// Explicitly register for remote notifications on every launch so iOS always
|
|
// calls didRegisterForRemoteNotificationsWithDeviceToken, ensuring Firebase
|
|
// receives a fresh APNs token regardless of whether permission was already granted.
|
|
application.registerForRemoteNotifications()
|
|
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
|
}
|
|
|
|
func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
|
|
GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
|
|
}
|
|
|
|
// FlutterImplicitEngineDelegate can interfere with Firebase's method swizzling,
|
|
// preventing it from capturing the APNs token. Forward it explicitly instead.
|
|
override func application(
|
|
_ application: UIApplication,
|
|
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
|
|
) {
|
|
Messaging.messaging().apnsToken = deviceToken
|
|
super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
|
|
}
|
|
}
|