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