didReceiveRemoteNotification 未调用,iOS 10

objectiveIOS

1个回答

写回答

zzzsw45

2025-07-07 13:00

+ 关注

IOS
IOS

IOS 10 是苹果公司于2016年推出的操作系统版本,它引入了许多新的功能和改进,以提高用户体验和开发者的便利性。其中一个变化是在推送通知的处理上,苹果对于应用程序在后台或未运行时接收推送通知的方式进行了调整。在过去,我们可以通过实现 didReceiveRemoteNotification 方法来处理远程推送通知,但在 IOS 10 中,该方法并不总是被调用。

在 IOS 10 中,苹果推出了 UserNotifications 框架,它提供了一种新的方式来处理推送通知。通过使用 UserNotifications 框架,我们可以更加灵活地管理和展示推送通知,以及处理用户对推送通知的交互。相比之前的方法,UserNotifications 框架提供了更多的自定义选项,使开发者能够根据自己的需求来处理推送通知。

使用 UserNotifications 框架处理推送通知

要在 IOS 10 中使用 UserNotifications 框架处理推送通知,我们需要先导入 UserNotifications 框架,并在 app delegate 中注册通知设置。以下是一个简单的示例代码:

Swift

import UserNotifications

@UIApplicationMAIn

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

// 注册通知设置

let center = UNUserNotificationCenter.current()

center.delegate = self

center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in

if granted {

print("用户同意接收通知")

} else {

print("用户拒绝接收通知")

}

}

application.registerForRemoteNotifications()

return true

}

// 接收到推送通知时调用

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

// 处理推送通知的交互

let userInfo = response.notification.request.content.userInfo

// 进行相应的操作

completionHandler()

}

}

在上述代码中,我们首先导入了 UserNotifications 框架,并在 app delegate 中实现了 UNUserNotificationCenterDelegate 协议。在 application(_:didFinishLaunchingWithOptions:) 方法中,我们注册了通知设置,并请求用户授权接收通知。然后,我们调用 application.registerForRemoteNotifications() 方法来注册远程通知。

当应用程序接收到推送通知时,userNotificationCenter(_:didReceive:withCompletionHandler:) 方法会被调用。我们可以在这个方法中处理推送通知的交互,例如打开指定页面、执行特定操作等。

灵活处理推送通知

使用 UserNotifications 框架后,我们可以更加灵活地管理和展示推送通知。我们可以自定义推送通知的内容、声音、角标等,以及处理用户对推送通知的交互。

例如,我们可以在推送通知中添加一个按钮,让用户直接进行某项操作。要实现这个功能,我们需要在推送通知的 payload 中添加一个自定义的字段,用来标识按钮的操作。然后,在 userNotificationCenter(_:didReceive:withCompletionHandler:) 方法中根据用户的操作做出相应的响应。

Swift

// 接收到推送通知时调用

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

// 处理推送通知的交互

let userInfo = response.notification.request.content.userInfo

if let action = userInfo["action"] as? String {

if action == "doSomething" {

// 执行某项操作

}

}

completionHandler()

}

通过上述代码示例,我们可以看到如何在 IOS 10 中使用 UserNotifications 框架来处理推送通知。该框架提供了更多的自定义选项,并且使得处理推送通知的交互更加方便。开发者可以根据自己的需求,灵活地处理推送通知,提升应用程序的用户体验。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号