0

我有一个应用程序告诉 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 获取属性列表并搜索“访问组”但什么也没找到——它不存在)所以我不能确认我是否需要更多。

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

4

1 回答 1

0

没关系。事实证明,我正在打电话filteredArrayUsingPredicate:寻找SBElementArray我想播放的曲目,但不知何故把事情搞砸了。现在我使用该方法objectWithName:并且它有效。

于 2013-05-07T13:44:12.743 回答