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

问题描述 投票:0回答:1

我正在开发一个关于macOs的简单聚光灯扩展。我的应用会将一些内容编入索引。当我输入一些关键字时,聚光灯会触发应用程序的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。

如果我的应用程序没有运行,我在聚光灯下键入关键字,聚光灯将启动我的应用程序并运行application()。我会正确地看到通知。

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

有人可以帮忙吗?谢谢。

macos cocoa nsnotificationcenter corespotlight
1个回答
0
投票

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

notification.identifier = "different_kind"

从文档(强调我的):

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

您发布新通知的速度也有限制,因此请注意这一点。

最后,如果你正在开发Mojave,你可能应该关注UNUserNotificationCenter,因为NSUserNotificationCenter已被弃用。

© www.soinside.com 2019 - 2024. All rights reserved.