Не удается найти музыку с помощью iTunes Scripting Bridge и песочницы

Я использую iTunes Scripting Bridge для поиска музыки пользователя в iTunes. К сожалению, когда у меня включена песочница приложения и я использую следующий метод из iTunes.h:

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

Он возвращает только ноль. Но если я отключу песочницу приложений, она будет работать отлично. Кажется, я не могу понять, какие права мне нужно включить в свой файл полномочий, чтобы это работало правильно. Любые идеи?

Мой код:

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];

Файл My 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>


person saad    schedule 06.11.2013    source источник
comment
Вы пробовали добавить com.apple.security.assets.music.read-only к правам?   -  person mahal tertin    schedule 06.11.2013
comment
@mahaltertin Да, я пробовал установить для com.apple.security.assets.music.read-only значение true, но, к сожалению, это не имело никакого значения. com.apple.security.assets.music.read-write тоже не стал исключением. Спасибо за предложение!   -  person saad    schedule 07.11.2013
comment
Зарегистрировано ли какое-либо нарушение песочницы в консоли?   -  person mahal tertin    schedule 07.11.2013
comment
@mahaltertin Я сделал глупую ошибку новичка - я никогда не смотрел на Консоль. Благодаря вам я взглянул на консоль и увидел эту ошибку: потому что она не имеет права отправлять AppleEvent в этот процесс. После поиска в документации Apple, мне показалось, что мне просто нужно было добавить это в свой файл прав: ‹key› com.apple.security. Contemporary-exception.apple-events ‹/key› ‹array› ‹key› com. apple.iTunes ‹/key› ‹/array› Большое спасибо за вашу помощь!   -  person saad    schedule 07.11.2013
comment
Пожалуйста. На всякий случай я добавил ответ на этот вопрос и хотел бы предложить вам принять его.   -  person mahal tertin    schedule 07.11.2013


Ответы (1)


Загляните в Консоль и проверьте, какие нарушения песочницы регистрируются; затем добавьте соответствующие права.

Если это так, «потому что он не имеет права отправлять AppleEvent этому процессу». добавьте это в файл полномочий:

<key>com.apple.security.temporary-exception.apple-events</key> <array> <key>com.apple.iTunes</key> </array>
person mahal tertin    schedule 07.11.2013
comment
Временные исключения - не способ решить эту проблему; целевые объекты сценариев - правильный путь в OS X 10.8+. - person AriX; 31.12.2013