swift - 为什么 Mac 上不显示本地通知?

标签 swift macos cocoa unusernotificationcenter

我正在尝试从我的 Mac 应用程序发送本地通知(使用 Cocoa 以 swift 编写) 到目前为止我已经编写了这个函数

func scheduleNotification() {
        let content = UNMutableNotificationContent()
        content.title = "Test"
        content.body = "This is a test"
        content.sound = .default
        content.badge = 1
        let now = Date()
        let int = timePicker.dateValue.timeIntervalSince(now)
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: int, repeats: false)
        let request = UNNotificationRequest(identifier: "Test notification", content: content, trigger: trigger)
        center.add(request) { (err) in
            if err == nil {
                print("Success")
            }
        }

    }

但由于某种原因,它在通知中心没有显示横幅或任何内容。是我的代码有问题还是其他原因导致了这种情况? (我查了一下,该应用有发送通知的权限) 另外,macOS 上的等效项是什么 iOS 上的 UIApplication.shared.applicationBadgeNumber = 0

最佳答案

如果应用程序位于前台,则必须使用 UNUserNotificationCenterDelegate。

UNUserNotificationCenter.current().delegate = self

首先在viewDidLoad中通知该委托(delegate)。

extension ViewController: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification,
                            withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    return completionHandler([.alert, .sound, .badge])
}

}

然后你就可以像这样使用委托(delegate)了。查看此帖子的更多信息 -> Local Notifications

关于swift - 为什么 Mac 上不显示本地通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634405/

相关文章:

html - 在swift 4.2中加载动态html页面时,如何在iOS上实现wkWebview的本地自定义字体?

ios - Swift - 在 TableView 上降序打印数组

macos - Mac OS X : no target found 上的 Makefile 问题

ios - AudioKit实时录音和播放

swift - 如何显示和隐藏标签?

macos - Mach-O 文件 LC_FUNCTION_STARTS 加载命令

有人可以解释一下这段代码的作用吗?

cocoa 在不同屏幕上绘图会损失性能

xcode - 如何使用自动布局将容器 View 中的 2 个 View 居中

ios - 从可变字典中删除对象会引发异常