65 lines
2.3 KiB
Swift
65 lines
2.3 KiB
Swift
//e8DBOKOTPUGxtvK2mqZ-gy:APA91bGtJO3Jf8NxuvzSnfj4YyZllen29x1c_o3UtKHKTvnVcTz0TdHapCyjJH4ZsuiO9z2HhGW134165c-VXmrdKlYSBGz5-ZtU0lTWLe5LDLuZGDbqYdk
|
||
|
||
import Firebase
|
||
import FirebaseMessaging
|
||
import UserNotifications
|
||
import UIKit
|
||
|
||
class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate {
|
||
private let pushTokenManager = PushTokenManager.shared
|
||
|
||
func application(_ application: UIApplication,
|
||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||
|
||
print("hello")
|
||
FirebaseApp.configure()
|
||
|
||
UNUserNotificationCenter.current().delegate = self
|
||
Messaging.messaging().delegate = self
|
||
|
||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, _ in
|
||
if granted {
|
||
DispatchQueue.main.async {
|
||
UIApplication.shared.registerForRemoteNotifications()
|
||
}
|
||
}
|
||
}
|
||
|
||
return true
|
||
}
|
||
|
||
// Foreground notifications — вот это важное!
|
||
func userNotificationCenter(
|
||
_ center: UNUserNotificationCenter,
|
||
willPresent notification: UNNotification,
|
||
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
|
||
) {
|
||
// completionHandler([.banner, .sound, .badge]) // push
|
||
completionHandler([]) // no push
|
||
}
|
||
|
||
func application(_ application: UIApplication,
|
||
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
|
||
|
||
let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
|
||
print("📨 APNs device token:", token)
|
||
|
||
Messaging.messaging().apnsToken = deviceToken
|
||
}
|
||
|
||
func application(_ application: UIApplication,
|
||
didFailToRegisterForRemoteNotificationsWithError error: Error) {
|
||
print("❌ APNs registration failed:", error)
|
||
}
|
||
|
||
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
|
||
guard let fcmToken else {
|
||
if AppConfig.DEBUG { print("🔥 FCM token: NO TOKEN") }
|
||
return
|
||
}
|
||
|
||
if AppConfig.DEBUG { print("🔥 FCM token:", fcmToken) }
|
||
pushTokenManager.registerFCMToken(fcmToken)
|
||
}
|
||
}
|