gpt4 book ai didi

cocoa - 以编程方式启用(或禁用)应用程序的 AppleScript 支持

转载 作者:行者123 更新时间:2023-12-03 17:37:31 27 4
gpt4 key购买 nike

我有一个 App Store 应用程序,其中免费版本不可编写脚本,但高级版本可以。 AppleScript 支持是主要区别之一。我知道 App Store 审核者越来越倾向于免费 + 应用内购买,这将有助于整理 App Store。好吧,我去打球。

现在我需要以编程方式做一些我一直在构建中工作的事情。

  • 如果我的 OSAScriptingDefinitionNSAppleScriptEnabled 在我的 Info.plist< 中设置,是否可以禁用 AppleScript/?这仍然允许人们打开词典,也许他们会喜欢他们所看到的内容并考虑激活升级。或者,

  • 有没有办法在事后启用 AppleScript??显然,对于代码签名,我无法执行诸如修改 Info.plist 或稍后将我的 SDEF 添加到 bundle 之类的操作。但也许如果 SDEF 位于非标准位置,我可以从 bundle 中加载它并手动告知系统。

SDEF 必须存在于我的 bundle 中吗?如果没有,我不确定如何指向沙箱中用户的应用程序支持目录。我还考虑过 xinclude 是一个可以在事后安装的 SDEF,但同样,SDEF 和 plist 需要实际的目录路径而不是函数。

我尝试了一些方法,例如尝试将 NSScriptSuiteRegistry 的单例设置为 nil,但没有效果。

因为 OSAScriptingDefinitionNSAppleScriptEnabled 启用“自动”支持,如果不在 plist 中,当然必须有一种手动方法使它们生效,并且希望能够通过公共(public)方式API。

这里有什么想法吗?谢谢!

最佳答案

几点说明:

  • 所有AppleScript命令都是NSScriptCommand的子类
  • 所有 AppleScript 对象均由以下子类表示NSScriptObjectSpecifier
  • 应用的脚本能力由其共享的 NSScriptSuiteRegistry 实例控制

这为您提供了一些选择。例如,您可以尝试覆盖 NSScriptSuiteRegistry setSharedScriptSuiteRegistry: 并将其设置为 nil 对于免费版本。您还可以在 NSScriptCommand 和/或 NSScriptObjectSpecifier 上编写一个类别来进行版本检查。这将为您提供细粒度的控制:您可以从处理脚本命令或返回脚本对象的任何方法调用它,并动态决定您想要允许哪些内容以及想要阻止哪些内容;甚至可能会弹出一个“支付完整 AppleScript 访问权限”对话框。

关于cocoa - 以编程方式启用(或禁用)应用程序的 AppleScript 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com