【发布时间】:2019-12-11 01:21:23
【问题描述】:
我正在尝试创建一个非常基本的 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()
【问题讨论】:
标签: swift macos command-line-interface nsnotificationcenter macos-darkmode