半亩花草 发表于 2025-4-18 22:22:03

iOS swift开辟系列--收到通知后有哪些函数大概被调用,什么环境下调用。

当你收到通知时,有几个函数大概会被调用,具体取决于应用的状态(前台、背景或终止)以及用户如何与通知交互。以下是这些函数及其触发条件:
1. userNotificationCenter(_:willPresent:withCompletionHandler:)
触发条件:当应用在前台运行而且吸收到本地或长途通知时。
用途:允许应用决定如何处理通知(例如,显示横幅、播放声音等)。
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    // 处理通知
    print("Will present notification: \(notification)")
    
    // 决定如何显示通知
    completionHandler([.alert, .sound])
}
2. userNotificationCenter(_:didReceive:withCompletionHandler:)
触发条件:当用户点击通知时(无论应用是在前台、背景照旧已终止)。
用途:处理用户与通知的交互,例如打开特定的视图控制器或实行某些操作。
 
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
    // 处理用户点击通知后的逻辑
    let userInfo = response.notification.request.content.userInfo
    print("Received notification: \(userInfo)")
    // 完成处理
    completionHandler()
}
3. application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
触发条件:当应用在背景运行而且吸收到长途推送通知时。
用途:允许应用在背景处理通知数据,并决定是否叫醒应用以更新内容。
func application(_ application: UIApplication,
                 didReceiveRemoteNotification userInfo: ,
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // 处理长途通知
    print("Received remote notification: \(userInfo)")
    
    // 完成处理
    completionHandler(.newData)
}
4. scene(_:willConnectTo:options:) 和 scene(_:continue:)
触发条件:在使用场景(Scene)委托的环境下,当应用从背景恢复或通过通知启动时。
用途:处理应用的启动和恢复逻辑。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    if let notification = connectionOptions.notificationResponse?.notification.request.content.userInfo {
        print("Received notification in scene: \(notification)")
    }
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
        print("Continuing activity with URL: \(url)")
    }
}
 更多全文请至:IOS SWIFT开辟系列–收到通知后有哪些函数大概被调用,什么环境下调用? – Idea, Programming ,Share

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: iOS swift开辟系列--收到通知后有哪些函数大概被调用,什么环境下调用。