在Mac上使用Swift显示通知横幅

时间:2018-08-29 14:39:36

标签: swift macos notifications

我试图在使用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 个答案:

答案 0 :(得分:1)

如果在发送通知时,发送通知的应用程序处于焦点状态,则通知将不会显示为横幅。如果应用程序在前台未处于活动状态,则该应用程序只能传递横幅通知。

您的代码效果很好当您的应用不是主要关注对象时,我已经对其进行了测试。

因此,由于您单击按钮后发送通知,因此发送通知时应用程序将处于焦点状态:通知仅转到通知中心,而不会显示为横幅。

这是Apple故意制定的规则。

答案 1 :(得分:0)

如果您的应用程序位于前台,则不会显示横幅。

尝试使用…

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

然后切换到另一个应用