我正在针对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()
方法,但不会出现通知。更糟糕的是,我可以在通知中心看到通知。
任何人都可以提供帮助吗?谢谢。
答案 0 :(得分:0)
要单独显示,每个通知必须具有唯一的标识符。
notification.identifier = "different_kind"
从文档中(重点是我的):
标识符对于通知是唯一的。通知已发送 与现有通知相同的标识符替换了 现有通知,而不是导致显示新通知 通知。
发布新通知的速度也有限制,请注意这一点。
最后,如果您是为Mojave开发的,则不建议使用UNUserNotificationCenter
,因此您应该考虑使用NSUserNotificationCenter
。