我正在学习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。我希望这个问题与测试版无关)
答案 0 :(得分:21)
如果应用程序是通知发送时的前台/活动应用程序,则不会显示某些通知。有关详细信息,请参阅NSUserNotification
's presented
property。
例如,当您在iTunes中并且新歌开始播放时,您已经看到正在播放的歌曲,并且不需要显示横幅。
请注意,在providing a delegate to NSUserNotificationCenter
发送通知(并检查presented
)后,您仍然可以收到通知,包括通过实施userNotificationCenter:shouldPresentNotification:
来覆盖演示行为。