gpt4 book ai didi

Swift 命令行工具未接收 DistributedNotificationCenter 通知

转载 作者:行者123 更新时间:2023-11-30 10:30:50 36 4
gpt4 key购买 nike

我正在尝试创建一个非常基本的 Swift 命令行应用程序,当 macOS UI 更改为亮/暗模式时,该应用程序会使用 WebSocket 向另一个应用程序发出信号。

出于某种原因,命令行工具未从 DistributedNotificationCenter 接收任何通知,特别是 AppleInterfaceThemeChangedNotification。但是,在 applicationDidFinishLaunching 上的 Cocoa UI 应用程序中运行完全相同的代码效果非常好。

我发现了一个old Obj-C CLI project on Github这意味着打印出每个通知,但这也没有做任何事情。这让我怀疑苹果可能改变了一些东西,但我似乎在网上找不到任何相关信息。我需要设置某些 Xcode 项目设置吗?

// main.swift

import Foundation

class DarkModeObserver {

func observe() {
print("Observing")
DistributedNotificationCenter.default.addObserver(
forName: Notification.Name("AppleInterfaceThemeChangedNotification"),
object: nil,
queue: nil,
using: self.interfaceModeChanged(notification:)
)
}

func interfaceModeChanged(notification: Notification) {
print("Notification", notification)
}

}

let observer = DarkModeObserver.init()
observer.observe()


RunLoop.main.run()

最佳答案

我设法让 iTunes 通知正常工作,所以只是主题更改通知不起作用。鉴于此,我怀疑 Apple 只将通知发送到 UI/NSApplication 应用程序。因此,将上面的最后 3 行替换为以下内容:

let app = NSApplication.shared

class AppDelegate: NSObject, NSApplicationDelegate {

func applicationDidFinishLaunching(_ notification: Notification) {
let observer = DarkModeObserver.init()
observer.observe()
}

}

let delegate = AppDelegate()
app.delegate = delegate
app.run()

关于Swift 命令行工具未接收 DistributedNotificationCenter 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277634/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com