【问题标题】:How can I know the Apple Event Access Groups used by an application?我如何知道应用程序使用的 Apple 事件访问组?
【发布时间】:2014-02-07 19:43:21
【问题描述】:

Apples 的 Sandobox 应该使用 Apple 事件访问组,它允许应用程序相互通信,如 WWDC 视频“Session 206 Secure Automation Techniques In OS X”中所述

但是,没有提到(我在 Xcode 5.x 文档中找不到对它的引用)是如何我可以找出哪些 Apple 事件访问组是为特定应用程序定义的。

例如,如果我希望我的应用程序与 Pages(或 Photoshop、或 Firefox 等)通信,我如何找到有关其 Apple 事件访问组的文档?它们是在哪里定义的,我可以使用什么工具来找到它们?

【问题讨论】:

    标签: macos cocoa appstore-sandbox appleevents


    【解决方案1】:

    沙盒应用程序中的 Apple 事件通常使用 Apple 脚本完成。这里有所需权利的文档:

    https://developer.apple.com/library/ios/Documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW25

    要查找哪个应用程序提供访问组有点麻烦,而且可用的应用程序并不多。使用终端和sdef 找出答案。这将为您提供一个 XML,您可以阅读并查找访问组

    例如在控制台中:

    sdef /Applications/Mail.app > mail.sdef.xml
    open mail.sdef.xml 
    

    然后你会看到这条线

    <access-group identifier="com.apple.mail.compose" access="rw"/>
    

    【讨论】:

    • 我在 Apple 提交了一个雷达,用于访问组的 GUI。请在openradar.me/14734642 找到一份副本并提交一份。
    • 感谢您的回答。我会支持你,但系统告诉我我没有足够的声望点:-/(我是 Stack Overflow 的新手。这是我的第一个问题。)
    • 如果有更好的方法来查看应用程序的访问组,那就太好了,但不要太费劲。据我所知,整个 Mavericks 有两个应用程序,包括访问组(邮件和 iTunes)。希望他们能在未来的版本中改进这一点。
    • 如果 sdef 不是苹果应用程序并且它没有 怎么办?
    • @stanliu 我刚刚使用这个答案来发现 Spotify (com.spotify.client) 的脚本目标。所以至少在 2020 年,一些非 Apple 应用也会在 sdef 文件中提供这些信息。正如文档所建议的那样,在权利文件中使用 com.apple.security.scripting-targets 键比 com.apple.security.temporary-exception.apple-events 更可取。
    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 2012-01-14
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多