【问题标题】:NSRunningApplication terminate() returning falseNSRunningApplication terminate() 返回 false
【发布时间】:2019-03-29 04:00:12
【问题描述】:

构建一个获取当前活动的NSRunningApplication 的 macOS 应用程序。

public func findActiveApp() -> NSRunningApplication? {
    for app in NSWorkspace.shared.runningApplications {
        if app.isActive {
            return app
        }
    }
    return nil
}

在那之后,我只是想终止应用程序使用

let app = findActiveApp()
app.terminate()

它不会终止应用程序并返回 false(这适用于任何应用程序,而不仅仅是特定应用程序)。

我也试过app.forceTerminate()

请注意,我已将我的应用程序添加到系统偏好设置的辅助功能列表中。

你知道这可能是什么原因吗?

谢谢!

【问题讨论】:

  • 如果有人能告诉我代码签名、应用沙盒和运行方案是否与允许我终止 NSRunningApplication 有任何关系,我将不胜感激。

标签: swift macos nsrunningapplication


【解决方案1】:

对于沙盒应用,您需要添加“com.apple.security.temporary-exception.apple-events”权利,例如:

<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>com.my.company.AppId</string>
</array>

但请注意,除非您对权利的需要有充分的解释,否则它可能会被应用商店提交拒绝。

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2014-10-18
    • 2015-08-02
    • 2012-05-17
    • 2013-10-26
    • 2013-01-06
    相关资源
    最近更新 更多