【问题标题】:Swift NSUserNotification doesn't show while app is active应用程序处于活动状态时,Swift NSUserNotification 不显示
【发布时间】:2018-05-29 11:21:19
【问题描述】:

我是 OSX 开发的新手,我正在制作一个应用程序,它会在发生某些事情时触发通知。但是当应用程序是关键应用程序时,它不会显示通知,因为它是默认行为。即使应用程序是关键应用程序,我也想向他们展示。 然而,我只找到了用 Objective-c 编写的解决方案,但现在我正在使用 Swift。我想知道如何使用 Swift 实现它。

【问题讨论】:

  • 您是否将应用程序委托设置为 NSUserNotificationCenterDelegate?
  • 我没有。我看到你需要这样做。但是我该如何做进一步的步骤呢?

标签: swift osx-yosemite nsusernotification nsusernotificationcenter


【解决方案1】:

为确保始终显示通知,您需要为NSUserNotificationCenter 设置委托并实现userNotificationCenter(center:shouldPresentNotification:) -> Booldocumentation 表示这条消息是

当用户通知中心决定不发送给委托人 展示您的通知。

您可以在您选择的任何类中实现委托。这是一个例子:

class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        NSUserNotificationCenter.defaultUserNotificationCenter().delegate = self
    }

    func userNotificationCenter(center: NSUserNotificationCenter, shouldPresentNotification notification: NSUserNotification) -> Bool {
        return true
    }

【讨论】:

  • 这成功了!谢谢!所以箭头就像一个返回类型?就像我说的,我是 OSX 和 Swift 开发的新手,我正在努力学习。
  • 是的,->表示函数的返回类型。
  • 啊,我明白了。我更习惯于 C# 和 PHP,所以快速学习很有挑战性。感谢您的帮助。
  • 我通过使用扩展使其工作:(swift 3) gist.github.com/eonist/903e46b811c5eeeef84da2015c567b1b
猜你喜欢
  • 2016-02-04
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
相关资源
最近更新 更多