| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import SwiftUI
- import UIKit
- import UserNotifications
- class AppDelegate: NSObject, UIApplicationDelegate, ObservableObject, UNUserNotificationCenterDelegate {
- func application(
- _ application: UIApplication,
- didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
- ) -> Bool {
- application.registerForRemoteNotifications()
- return true
- }
- func application(
- _: UIApplication,
- didReceiveRemoteNotification userInfo: [AnyHashable: Any],
- fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
- ) {
- debug(.remoteControl, "Received notification")
- do {
- let jsonData = try JSONSerialization.data(withJSONObject: userInfo)
- let pushMessage = try JSONDecoder().decode(PushMessage.self, from: jsonData)
- Task {
- await TrioRemoteControl.shared.handleRemoteNotification(pushMessage: pushMessage)
- completionHandler(.newData)
- }
- } catch {
- debug(.remoteControl, "Error decoding push message: \(error.localizedDescription)")
- completionHandler(.failed)
- }
- }
- func application(
- _: UIApplication,
- didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
- ) {
- let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
- let token = tokenParts.joined()
- Task {
- await TrioRemoteControl.shared.handleAPNSChanges(deviceToken: token)
- }
- }
- func application(
- _: UIApplication,
- didFailToRegisterForRemoteNotificationsWithError error: Error
- ) {
- debug(.remoteControl, "Failed to register for remote notifications: \(error.localizedDescription)")
- }
- }
|