我正在为macOS编写应用程序,我希望它能够检测屏幕何时解锁,然后使自己成为活动应用程序。 我尝试使用" com.apple.screenIsUnlocked",但它似乎无法正常工作(该功能甚至无法运行)。我也尝试使用NSWorkspaceDidWakeNotification,我得到了运行的功能,但应用程序没有实际激活(可能是因为屏幕仍然被锁定)。 这是我目前所拥有的(我使用 Xcode 9.2和Swift 4 ):
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(AppDelegate.screenDidUnlock), name: NSNotification.Name(rawValue: "com.apple.screenIsUnlocked"), object: nil)
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
@objc func screenDidUnlock() {
NSApplication.shared.activate(ignoringOtherApps: true)
print("Did Run")
}
答案 0 :(得分:1)
com.apple.screenIsUnlocked
通知被发布到DistributedNotificationCenter
而不是NSWorkspace
的{{1}},因此应这样添加观察者:
notificationCenter
答案 1 :(得分:-1)
我认为苹果不允许你在后台运行任何应用程序。