苹果系统。如何在每个应用程序上请求访问系统事件?

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 在属性列表视图的弹出菜单中。

&lt;string&gt; 值是任意描述。

此外,在启用强化运行时的 Xcode 11 中,您必须选中 Apple Events 复选框

【讨论】:

我们如何检查用户是否拒绝或接受了权限。比如,我们是否可以检查用户是否拒绝了该权限,并且我们可以再次手动显示弹出窗口以让用户知道此权限是强制性的? AFAIK 你不能。用户收到无法发送 Apple 事件的警报。

以上是关于苹果系统。如何在每个应用程序上请求访问系统事件?的主要内容,如果未能解决你的问题,请参考以下文章

同步关注点的事件溯源

苹果mac如何启动项?

苹果手机不正规软件卸载方法

关于ios苹果系统的中的右键事件,查遍了全网都没有的小技巧。

苹果手机开启wifi,电脑连上之后,没网络不能上网,无线网络状态ipv6无网络访问权限

windows系统电脑与苹果Ipadmini2之间怎么传输文件