NotificationManager
public class NotificationManager : NSObject, UNUserNotificationCenterDelegate, @unchecked Sendable
通知管理器
-
单例模式
Declaration
Swift
public static let shared: NotificationManager
-
通知代理,设置后优先调用
Declaration
Swift
public weak var delegate: UNUserNotificationCenterDelegate?
-
授权选项,默认[.badge, .sound, .alert]
Declaration
Swift
public var authorizeOptions: UNAuthorizationOptions { get set }
-
异步查询通知权限状态,主线程回调
Declaration
Swift
public func authorizeStatus(_ completion: (@MainActor @Sendable (AuthorizeStatus) -> Void)?)
-
执行通知权限授权,主线程回调
Declaration
Swift
public func requestAuthorize(_ completion: (@MainActor @Sendable (AuthorizeStatus) -> Void)?)
-
清空图标通知计数
Declaration
Swift
@MainActor public func clearNotificationBadges()
-
设置远程推送处理句柄,参数为userInfo和原始通知对象
Declaration
Swift
public var remoteNotificationHandler: (@MainActor @Sendable ([AnyHashable : Any]?, Any) -> Void)?
-
设置本地推送处理句柄,参数为userInfo和原始通知对象
Declaration
Swift
public var localNotificationHandler: (@MainActor @Sendable ([AnyHashable : Any]?, Any) -> Void)?
-
注册通知处理器,iOS10+生效,iOS10以下详见UIApplicationDelegate
Declaration
Swift
public func registerNotificationHandler()
-
处理远程推送通知,支持NSDictionary|UNNotification|UNNotificationResponse
Declaration
Swift
public func handleRemoteNotification(_ notification: Any)
-
处理本地通知,支持NSDictionary|UNNotification|UNNotificationResponse
Declaration
Swift
public func handleLocalNotification(_ notification: Any)
-
注册本地通知,badge为0时不改变,sound为default时为默认声音,timeInterval为触发时间间隔(0为立即触发),block为自定义内容句柄,iOS15+支持时效性通知,需entitlements配置开启
Declaration
Swift
public func registerLocalNotification( _ identifier: String, title: String?, subtitle: String?, body: String?, userInfo: [AnyHashable: Any]?, badge: Int, sound: Any?, timeInterval: TimeInterval, repeats: Bool, block: ((UNMutableNotificationContent) -> Void)? = nil )
-
批量删除本地通知(未发出和已发出)
Declaration
Swift
public func removeLocalNotification(_ identifiers: [String])
-
删除所有本地通知(未发出和已发出)
Declaration
Swift
public func removeAllLocalNotifications()
-
前台收到推送,notification.request.trigger为UNPushNotificationTrigger时为远程推送,否则本地推送
Declaration
Swift
public func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
-
后台收到推送,response.notification.request.trigger为UNPushNotificationTrigger时为远程推送,否则本地推送
Declaration
Swift
public func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)
-
打开推送设置
Declaration
Swift
public func userNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?)
-
authorizeStatus()
Asynchronous异步查询通知权限状态
Declaration
Swift
public func authorizeStatus() async -> AuthorizeStatus
-
requestAuthorize()
Asynchronous执行通知权限授权
Declaration
Swift
public func requestAuthorize() async -> AuthorizeStatus