UNUserNotificationCenter 需要willPresent代码
UNUserNotificationCenter need to willPresent code
我有一个用 Swift 编写的应用程序,它使用 UNUserNotificationCenter,当应用程序在前台运行时我会显示通知。
我想要做的是在通知已发送并且应用程序位于前台后更新 UI 下面显示通知就好了,但是当它显示时,我也想执行一个名为 updateUI() 的函数,因为通知日期在我的 UI 中,我想在通知出现后立即清除它。
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert,.sound])
}
我不知道如何在完成处理程序中添加对 updateUI() 的调用。
您可以 POST
来自您的新通知 AppDelegate
并在您的控制器文件中添加 Observer 以在 UI 中进行更改。
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
UIApplication.shared.applicationIconBadgeNumber = 0
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "NewNotification") , object: nil, userInfo: response.notification.request.content.userInfo)
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
}
在你的控制器文件中添加 Notification Observer :
NotificationCenter.default.addObserver(self, selector: #selector(pushNotificationHandler(_:)) , name: NSNotification.Name(rawValue: "NewNotification"), object: nil)
然后调用UI更新方法:
func pushNotificationHandler(_ notification : NSNotification) {
self.updateUI()
}
我有一个用 Swift 编写的应用程序,它使用 UNUserNotificationCenter,当应用程序在前台运行时我会显示通知。
我想要做的是在通知已发送并且应用程序位于前台后更新 UI 下面显示通知就好了,但是当它显示时,我也想执行一个名为 updateUI() 的函数,因为通知日期在我的 UI 中,我想在通知出现后立即清除它。
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert,.sound])
}
我不知道如何在完成处理程序中添加对 updateUI() 的调用。
您可以 POST
来自您的新通知 AppDelegate
并在您的控制器文件中添加 Observer 以在 UI 中进行更改。
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
UIApplication.shared.applicationIconBadgeNumber = 0
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "NewNotification") , object: nil, userInfo: response.notification.request.content.userInfo)
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
}
在你的控制器文件中添加 Notification Observer :
NotificationCenter.default.addObserver(self, selector: #selector(pushNotificationHandler(_:)) , name: NSNotification.Name(rawValue: "NewNotification"), object: nil)
然后调用UI更新方法:
func pushNotificationHandler(_ notification : NSNotification) {
self.updateUI()
}