【问题标题】:Can't search music using iTunes Scripting Bridge and Sandboxing无法使用 iTunes 脚本桥和沙盒搜索音乐
【发布时间】:2013-11-06 03:05:37
【问题描述】:

我正在使用 iTunes Scripting Bridge 在 iTunes 中搜索用户的音乐。不幸的是,当我启用 App Sandbox 并使用 iTunes.h 中的以下方法时:

(iTunesTrack *) searchFor:(NSString *)for_ only:(iTunesESrA)only; 

它只返回零。但是,如果我禁用 App Sandboxing,它就可以正常工作。我似乎无法弄清楚我需要在我的权利文件中包含哪些权利才能使其正常工作。有什么想法吗?

我的代码:

SBElementArray *iTunesSources = [self.iTunes sources];
iTunesSource *library;
for (iTunesSource *thisSource in iTunesSources) {
    if ([thisSource kind] == iTunesESrcLibrary) {
        library = thisSource;
        break;
    }
}
SBElementArray *libraryPlaylists = [library libraryPlaylists];
iTunesLibraryPlaylist *libraryPlaylist = [libraryPlaylists objectAtIndex:0];

SBElementArray* searchTracks = (SBElementArray *)[libraryPlaylist searchFor:searchTerm only:iTunesESrAAll];

我的 App.entitlements 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.scripting-targets</key>
    <dict>
        <key>com.apple.iTunes</key>
        <array>
            <string>com.apple.iTunes.library.read-write</string>
            <string>com.apple.iTunes.playback</string>
            <string>com.apple.iTunes.playerInfo</string>
        </array>
    </dict>
</dict>

【问题讨论】:

  • 您是否尝试将 com.apple.security.assets.music.read-only 添加到权利中?
  • @mahaltertin 是的,我尝试将 'com.apple.security.assets.music.read-only' 设置为 true,但不幸的是它没有任何区别。 'com.apple.security.assets.music.read-write' 也没有什么不同。感谢您的建议!
  • 控制台是否有任何沙盒违规记录?
  • @mahaltertin 愚蠢的菜鸟错误我犯了 - 我从未看过控制台。感谢您,我查看了控制台并看到了此错误:“因为它无权向此进程发送 AppleEvent。”在 Apple 的文档中查找后,看起来我只需将其添加到我的权利文件中:com.apple.security.temporary-exception.apple-eventscom。 apple.iTunes 非常感谢您的帮助!
  • 不客气。仅供将来参考,我添加了对此问题的答案,并希望邀请您接受它。

标签: objective-c xml cocoa appstore-sandbox


【解决方案1】:

查看控制台并检查记录了哪些沙盒违规行为;然后添加适当的权利。

如果是“因为它无权向此进程发送 AppleEvent”。将此添加到权利文件中:

<key>com.apple.security.temporary-exception.apple-events</key> <array> <key>com.apple.iTunes</key> </array>

【讨论】:

  • 临时异常不是解决这个问题的办法;脚本目标是 OS X 10.8+ 中的正确方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2016-08-23
  • 1970-01-01
相关资源
最近更新 更多