【发布时间】: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