ThimraTV/MoviaBox/AppDelegate/AppDelegate+APNS.swift
2025-05-08 13:39:30 +08:00

77 lines
2.5 KiB
Swift

//
// AppDelegate+APNS.swift
// MoviaBox
//
// Created by on 2025/4/30.
//
import UIKit
import FirebaseMessaging
import FirebaseCore
extension AppDelegate {
func registerAPNS() {
FirebaseApp.configure()
Messaging.messaging().delegate = self
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.badge, .sound, .alert]) { grant, error in
if grant {
// SPRewardsAPI.requestUploadOpenNotify(completer: nil)
}
}
UIApplication.shared.registerForRemoteNotifications()
}
}
extension AppDelegate: UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
}
///APP
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.badge, .banner])
}
///app
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
if #available(iOS 16.0, *) {
UNUserNotificationCenter.current().setBadgeCount(0)
} else {
UIApplication.shared.applicationIconBadgeNumber = 0
}
let userInfo = response.notification.request.content.userInfo
if let shortPlayId = userInfo["short_play_id"] as? String {
let vc = SPPlayerDetailViewController()
vc.shortPlayId = shortPlayId
SPAPPTool.topViewController()?.navigationController?.pushViewController(vc, animated: true)
}
completionHandler()
}
}
//MARK: -------------- MessagingDelegate --------------
extension AppDelegate: MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
if let token = fcmToken {
SPApnsAPI.requestUploadDeviceToken(token: token)
}
let dataDict: [String: String] = ["token": fcmToken ?? ""]
NotificationCenter.default.post(
name: Notification.Name("FCMToken"),
object: nil,
userInfo: dataDict
)
}
}