引入 AppDelegate、显式 Info.plist 与 entitlements,并将 PushNotificationManager 接入登录生命周期,用于 device token 上报与通知处理。 Co-authored-by: Cursor <cursoragent@cursor.com>
42 lines
1.2 KiB
Swift
42 lines
1.2 KiB
Swift
//
|
||
// AppDelegate.swift
|
||
// suixinkan
|
||
//
|
||
// Created by Codex on 2026/6/26.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
/// AppDelegate 承接 APNs 系统回调,SwiftUI App 入口通过 adaptor 注入。
|
||
final class AppDelegate: NSObject, UIApplicationDelegate {
|
||
func application(
|
||
_ application: UIApplication,
|
||
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
|
||
) {
|
||
Task { @MainActor in
|
||
PushNotificationManager.shared.handleDeviceToken(deviceToken)
|
||
}
|
||
}
|
||
|
||
func application(
|
||
_ application: UIApplication,
|
||
didFailToRegisterForRemoteNotificationsWithError error: Error
|
||
) {
|
||
Task { @MainActor in
|
||
PushNotificationManager.shared.handleRegistrationError(error)
|
||
}
|
||
}
|
||
|
||
func application(
|
||
_ application: UIApplication,
|
||
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
|
||
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
|
||
) {
|
||
let payload = PushPayload(userInfo: userInfo)
|
||
Task { @MainActor in
|
||
PushNotificationManager.shared.handleRemoteNotification(payload)
|
||
completionHandler(.newData)
|
||
}
|
||
}
|
||
}
|