【问题标题】:iTunes scripting with Scripting Bridge & Sandboxing使用 Scripting Bridge 和 Sandboxing 编写 iTunes 脚本
【发布时间】:2013-05-07 13:18:25
【问题描述】:

我有一个应用程序告诉 iTunes 使用 ScriptingBridge 框架播放音乐。该应用程序要么告诉 iTunes 播放播放列表或某个曲目。该应用程序也被沙盒化。

要播放播放列表,这就是我所拥有的:

iTunesPlaylist* playlist = ...
[playlist playOnce: YES];

播放曲目也很简单:

iTunesTrack* track = ...
[track playOnce: YES];

由于我的应用是沙盒化的,因此我的权利文件中有以下几行:

<key>com.apple.security.scripting-targets</key>
<dict>
    <key>com.apple.iTunes</key>
    <array>
        <string>com.apple.iTunes.library.read</string> // I also have this to read the playlists/tracks the user has on his library
        <string>com.apple.iTunes.playback</string>
    </array>
</dict>

我在没有应用沙盒的情况下进行了测试,代码运行良好。使用沙盒虽然播放列表代码工作正常,但播放曲目工作。我检查了控制台应用程序,似乎没有记录与沙盒和我的应用程序有关的任何内容。

起初我认为我的权利文件中可能缺少一些access-group,但后来我认为这没有意义,因为我已经有了playback。而且我在网上找不到任何 iTunes 访问组列表(我什至尝试使用 sdef 从 iTunes 获取属性列表并搜索“访问组”但什么也没找到 - 它不存在)所以我不能确认我是否需要更多。

总而言之,为什么沙盒会阻止它工作?

【问题讨论】:

  • 您确定您的应用将由 Apple 提交吗?
  • @NikolaiNagorny 你是什么意思?我是向 MAS 提交我的应用程序的人
  • 我想使用 Scripting Bridge,但我不确定 Apple 是否会使用这项技术提交我的应用程序...
  • @NikolaiNagorny 我还没有找到表明 Apple 不会接受使用 Scripting Bridge 的应用程序(包括 Mac App Store Review Guidelines)的消息来源
  • @Alex 您知道需要向权利文件添加什么才能添加播放列表,然后将曲目添加到该播放列表吗?我试过 com.apple.iTunes.library.write,但它似乎不起作用。

标签: objective-c macos cocoa itunes appstore-sandbox


【解决方案1】:

没关系。原来我在SBElementArray 上打电话给filteredArrayUsingPredicate: 以找出我想播放的曲目,而不知何故 搞砸了。现在我使用objectWithName:的方法,它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 2012-10-09
    • 1970-01-01
    • 2011-04-05
    • 2012-06-07
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多