苹果系统。如何在每个应用程序上请求访问系统事件?
Posted
技术标签:
【中文标题】苹果系统。如何在每个应用程序上请求访问系统事件?【英文标题】:MacOs. How can I ask access for System Events on every app? 【发布时间】:2019-10-01 23:52:38 【问题描述】:我需要我的 Mac Swift 应用程序使用系统事件(通过 Applescript)来关闭用户添加到列表中的任何应用程序。 我在我的系统偏好设置中看到很多应用程序在自动化面板中具有系统事件访问权限(例如“Google 的备份和同步”或“Divvy”)。我该如何请求权限?
【问题讨论】:
您不能以编程方式将项目添加到安全首选项中,需要用户参与。除了普通的沙盒权利外,您的应用还需要在其 Info.plist 中有一个NSAppleEventsUsageDescription
键,这是系统在应用首次运行时用来提示用户的键。跨度>
是的,我知道是必须同意的用户。我只是想知道如何触发该请求。我会试试这个。谢谢!
【参考方案1】:
在 Info.plist 中,在 Source Code 视图中添加键 NSAppleEventsUsageDescription
<key>NSAppleEventsUsageDescription</key>
<string>$(PRODUCT_NAME) needs to control System Events</string>
或Privacy - AppleEvents Sending Usage Description
在属性列表视图的弹出菜单中。
<string>
值是任意描述。
此外,在启用强化运行时的 Xcode 11 中,您必须选中 Apple Events
复选框
【讨论】:
我们如何检查用户是否拒绝或接受了权限。比如,我们是否可以检查用户是否拒绝了该权限,并且我们可以再次手动显示弹出窗口以让用户知道此权限是强制性的? AFAIK 你不能。用户收到无法发送 Apple 事件的警报。以上是关于苹果系统。如何在每个应用程序上请求访问系统事件?的主要内容,如果未能解决你的问题,请参考以下文章
关于ios苹果系统的中的右键事件,查遍了全网都没有的小技巧。