Скриптинг в iTunes с использованием скриптового моста и песочницы

У меня есть приложение, которое говорит 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>

Я проверил без песочницы приложения, и код работает отлично. С песочницей, хотя код списка воспроизведения работает нормально, но воспроизведение трека не работает. Я проверил с помощью приложения Console, и, похоже, ничего не регистрируется, что касается sandboxd и моего приложения.

Сначала я подумал, что мне может не хватать некоторых access-group в моем файле прав, но потом я подумал, что это не имеет смысла, потому что у меня уже есть playback один. И я не смог найти список групп доступа к iTunes в сети (я даже пытался использовать sdef, чтобы получить список свойств из iTunes и искать "группу доступа", но ничего не нашел - его там нет), поэтому я не смог подтвердите, если мне нужно больше.

Подводя итог, почему песочница мешает этому работать?

1 ответ

Решение

Не берите в голову. Оказывается, я звонил filteredArrayUsingPredicate: на SBElementArray чтобы найти трек, который я хотел сыграть, и в нем что- то пошло не так. Теперь я использую метод objectWithName: и это работает.

Другие вопросы по тегам