繁体   English   中英

如果在application:continueUserActivity:restorationHandler中调用,NSUserNotification仅显示一次

[英]NSUserNotification only display once if invoked in application:continueUserActivity:restorationHandler

我正在针对macO开发一个简单的Spotlight扩展。 我的应用程序会将一些内容编入索引。 当我输入一些关键字时,spotlight将触发应用程序的application:continueUserActivity:restorationHandler 并且application()将发送本地通知。 代码如下:

func application(_ application: NSApplication, continue userActivity: NSUserActivity, restorationHandler: ([NSUserActivityRestoring]) -> Void) -> Bool {
    let notification = NSUserNotification()

    notification.title = "title"
    notification.subtitle = "subtitle"
    notification.soundName = NSUserNotificationDefaultSoundName

    NSUserNotificationCenter.default
        .deliver(notification)
}

我使用macOs 10.14.3

如果我的应用程序未运行,并且我在Spotlight中键入关键字,则Spotlight将启动我的应用程序并运行application() 而且我会正确看到通知。

但是,如果我再次键入关键字(我的应用程序正在后台运行),则聚光灯仍然会触发application()方法,但不会出现通知。 更糟糕的是,我可以在通知中心看到通知。

有人可以帮忙吗? 谢谢。

要单独显示,每个通知必须具有唯一的标识符。

notification.identifier = "different_kind"

从文档(重点是我的):

标识符对于通知是唯一的。 使用与现有通知相同的标识符传递的通知将替换现有通知,而不是导致显示新通知。

关于发布新通知的速度也有限制,因此请注意。

最后,如果您正在开发Mojave,则您可能应该考虑使用UNUserNotificationCenter ,因为NSUserNotificationCenter已过时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM