作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只想在前台显示一些选定的 UIViewControllers 的通知。
但是当我将 NotificationCenter 设置为在前台接收特定 UIViewController 的通知时,Swift 会在全局范围内执行此操作。在某些屏幕中,我不想看到通知出现在前台,为此我必须在每个屏幕中指定是否在前台显示通知,这会导致很多代码通常不受管理。
最佳答案
您可以将条件放在通知委托(delegate)方法中以显示或不显示特定 View Controller 的通知。
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let navigationController: UINavigationController = self.window?.rootViewController as! UINavigationController
if (navigationController.topViewController is FirstViewController) || (navigationController.topViewController is SecondViewController) {
//Show notification for First and Second ViewController
completionHandler([.alert, .badge, .sound])
}
else {
//Do whatever when you don't want to show notification
}
}
关于ios - 如何仅为某些 UIViewControllers 启用前台通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611619/
我是一名优秀的程序员,十分优秀!