12

我正在学习 Swift,并希望显示一个简单的用户通知作为测试。
我的构建成功,但没有显示横幅,而是将通知静默添加到通知列表中。我已经验证“请勿打扰”已关闭,我在 AppleScript 中尝试过同样的操作,成功地,有一次在NSUserNotificationAlertStyle我的应用程序的 info.plist 中摆弄代码时,我得到了一个成功的、非静音的警报(不是横幅)。
然而,这种情况只发生过一次。

我创建了一个新项目,其中包含 Swift 文件且没有情节提要。我的 AppDelegate.swift 包含

import Cocoa

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!


    func applicationDidFinishLaunching(aNotification: NSNotification?) {
        var notification:NSUserNotification = NSUserNotification()
        notification.title = "Title"
        notification.subtitle = "Subtitle"
        notification.informativeText = "Informative text"

        notification.soundName = NSUserNotificationDefaultSoundName

        notification.deliveryDate = NSDate(timeIntervalSinceNow: 5)
        var notificationcenter:NSUserNotificationCenter = NSUserNotificationCenter.defaultUserNotificationCenter()
        if let notificationCenter = NSUserNotificationCenter.defaultUserNotificationCenter() {
            notificationcenter.scheduleNotification(notification)
        }
    }

    func applicationWillTerminate(aNotification: NSNotification?) {
        // Insert code here to tear down your application
    }


}

而且我的 info.plist 不包含NSUserNotificationAlertStyle前面提到的内容,因为我相信这对于横幅来说不是必需的。

最后,是的,应用程序“测试”(因为这是我给它命名的)设置为显示横幅。 通知系统面板的屏幕截图
总结:我的应用程序成功发出通知,这些将被添加到通知列表中,但不会显示为横幅。(我使用的是 OS X Yosemite 10.10,希望这个问题与 beta 无关)

4

1 回答 1

22

如果应用程序在发送通知时是前台/活动应用程序,则不会显示某些通知。有关更多信息,请参见NSUserNotificationpresented属性

例如,当您在 iTunes 中并且开始播放一首新歌曲时,您已经看到正在播放的是哪首歌曲,并且不需要显示横幅。

请注意,您仍然可以通过向 提供委托来presented在传递(和检查)通知时收到通知,包括通过实现来覆盖表示行为。NSUserNotificationCenteruserNotificationCenter:shouldPresentNotification:

于 2014-08-14T08:45:24.820 回答