【问题标题】:Showing notification banner on Mac with Swift使用 Swift 在 Mac 上显示通知横幅
【发布时间】:2018-08-29 14:39:36
【问题描述】:

我尝试使用 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"
}

【问题讨论】:

    标签: swift macos notifications


    【解决方案1】:

    如果您的应用位于前台,您将不会收到横幅。

    尝试使用…

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

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

    【讨论】:

    • 我在所有代码前面加了一个 sleep(5)。但这要好得多。谢谢!
    • "如果您的应用在前台,您将不会收到横幅。"在某处有这种效果的文档吗?
    • 您也可以在前台接收,需要在 willPresent 通知回调中使用 [.alert] 参数调用完成处理程序
    【解决方案2】:

    如果在发送通知时,发送通知的应用处于焦点位置,则通知不会显示为横幅。应用程序只有在前台不处于活动状态时才能发送横幅通知。

    您的代码运行良好当您的应用不是主要焦点时,我刚刚对其进行了测试。

    因此,因为您在单击按钮时发送通知,所以在发送通知时应用程序会获得焦点:通知只会发送到通知中心,不会显示为横幅。

    这是 Apple 故意制定的规则。

    【讨论】:

    • 谢谢伙计!我试过了,你是对的。我会寻找其他解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多