在屏幕上激活应用程序解锁

时间:2018-01-16 17:39:40

标签: swift xcode macos cocoa

我正在为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")
    }

2 个答案:

答案 0 :(得分:1)

com.apple.screenIsUnlocked通知被发布到DistributedNotificationCenter而不是NSWorkspace的{​​{1}},因此应这样添加观察者:

notificationCenter

答案 1 :(得分:-1)

我认为苹果不允许你在后台运行任何应用程序。