首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >沙箱有权通过iTunes通过NSAppleScript编写脚本

沙箱有权通过iTunes通过NSAppleScript编写脚本
EN

Stack Overflow用户
提问于 2015-12-06 15:25:30
回答 1查看 920关注 0票数 2

我试图在我的Cocoa应用程序中从NSAppleScript中编写NSAppleScript脚本,以便向库中添加一个文件。

在“应享权利”文件中,我添加了以下内容:

代码语言:javascript
复制
<key>com.apple.security.scripting-targets</key>
    <dict>
        <key>com.apple.itunes</key>
        <array>
            <string>com.apple.itunes.library.read-write</string>
        </array>
    </dict>

然后,我像这样调用AppleScript:

代码语言:javascript
复制
var error: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"iTunes\" to add (POSIX file \"\(path)\") to library playlist 1")
let result = appleScript?.executeAndReturnError(&error)

但是它失败了,出现了一个错误-10004iTunes got an error: A privilege violation occurred.

我试着用两种方式(itunesiTunes)大写iTunes,但似乎没有什么效果。我还试着在读写权限的基础上添加read权限。最后,我尝试将读和写访问添加到用户的音乐文件夹(存储iTunes库的地方),这也没有帮助。

为了编写iTunes脚本,是否还有我不知道的另一个必需的权限?

我在我的搜索解决方案(链接)中找到了这个链接,但它要求用户在他的Library文件夹中选择一个特定的文件夹,以便让应用程序用户选择文件访问,然后它要求脚本位于一个单独的文件中,这对于我想要做的事情来说太多了。对于脚本文件的管理,我不信任用户,也不需要1行AppleScript代码的文件。另一个缺点是,正如我所理解的NSUserAppleScriptTask,您不能在多个调用中持久化脚本的状态,这在我的情况下不是问题,但可能是针对其他人的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 06:27:05

在与苹果公司的开发者技术支持部门联系后,我解决了这个问题,这实际上是两个问题之一。

首先,应享权利需要正确地大小写包标识符。对于iTunes,应享待遇必须如下(请注意iTunes中的大写T ):

代码语言:javascript
复制
<key>com.apple.security.scripting-targets</key>
<dict>
    <key>com.apple.iTunes</key>
    <array>
        <string>com.apple.iTunes.library.read-write</string>
    </array>
</dict>

然后,除非AppleScript代码在结尾处包含of source 1,否则将发生权限冲突:

代码语言:javascript
复制
tell application "iTunes" to add (POSIX file "your/path/to/mp3.mp3") to library playlist 1 of source 1

就是这样!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34119076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档