在Mac上用Swift显示通知横幅

7

我想用Swift在Mac OS上显示一些通知横幅。但是我只能在通知中心看到它们,而不是作为横幅弹出。

你有什么想法吗?这是我的简单代码:

func showNotification() -> Void {
    let notification = NSUserNotification()
    notification.title = "Title of notification"
    notification.subtitle = "Subtitle of notification"
    notification.soundName = NSUserNotificationDefaultSoundName
    NSUserNotificationCenter.default.deliver(notification) 
}

@IBAction func btnPressed(_ sender: NSButton) {
    showNotification()
    testLbl.stringValue = "Button was pressed"
}
2个回答

8

如果您的应用程序在前台,则不会收到横幅通知。

尝试使用...

notification.deliveryDate = Date(timeIntervalSinceNow: 5)
NSUserNotificationCenter.default.scheduleNotification(notification)

然后切换到另一个应用程序


1
我在所有代码前面加了一个sleep(5)。但这样做更好。谢谢! - Heitkamp
1
如果您的应用程序在前台运行,您将不会收到横幅通知。是否有相关的文档记录这一点? - Dave Nottage
1
你可以在前台接收,需要在willPresent通知回调中调用带有[.alert]参数的completion handler。 - Oleg

2
如果在发送通知时,发送通知的应用程序处于焦点状态,则通知不会显示为横幅。只有当应用程序不活跃在前台时,才能传递横幅通知。您的代码在您的应用程序不是主要焦点时运行良好,我刚刚测试过。因此,由于您在单击按钮时发送通知,所以在发送通知时应用程序处于焦点状态:通知只会进入“通知中心”,而不会显示为横幅。这是苹果故意制定的规则。

1
谢谢老兄!我试了一下,你说得对。我会寻找另一种解决方案。 - Heitkamp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接