2013-05-16 3 views
7

Я искал добавление доступа к библиотеке iTunes для Mac-приложения, которое я разрабатываю.Использование новой платформы iTunesLibrary для доступа к библиотеке iTunes на Mac OS-X

Я рассмотрел некоторые из существующих версий с открытым исходным кодом, такие как EyeTunes и iMedia, но нашел их не совсем тем, что я искал. Overkill в целом.

Итак, я попытался использовать Scripting Bridge и обнаружил, что в то время как функционирование было медленным. И поскольку мне не нужно было управлять iTunes, медленность не стоила того. Он также имел недостаток в использовании iTunes для работы. Это также немного раздражает, чтобы заставить его работать в изолированном приложении (хотя это возможно).

Итак, я, наконец, начал рулон самостоятельно, прочитав файл iTunes Library.xml. Кажется, это работает нормально. Но в процессе изучения значения ключа/ценности Distinguished Kind я наткнулся на совершенно новый, Apple предоставил iTunesLibrary.framework !!!

Beautiful - the iTunesLibrary framework docs are here.

Однако, когда я пытаюсь инициализировать структуру, используя код, как показано в опорном ссылке:

NSError * error = nil; 
ITLibrary* library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error]; 

возвращает ноль и обеспечивает очень полезную ошибку, как так (в моя песочница приложение):

Error Domain=NSPOSIXErrorDomain Code=100001 "Could not load." UserInfo=0x1140025b0 {NSLocalizedDescription=Could not load., NSUnderlyingError=0x1026fbe20 "The operation couldn’t be completed. (OSStatus error -50.)"}

Думая, что это может быть проблема с песочницей, я также создал быструю утилиту командной строки, которая пытается инициализировать л ibrary и возвращает почти идентичную ошибку:

Failed to open library: Error Domain=NSPOSIXErrorDomain Code=100001 "Could not load." UserInfo=0x1018015b0 {NSLocalizedDescription=Could not load., NSUnderlyingError=0x103a000e0 "The operation couldn’t be completed. (OSStatus error 100005.)"}

Кто-нибудь еще пробовал эту новую структуру ITunes библиотеки с больше удачи, чем у меня было?

// EDIT: Ответ приведен ниже. Требуется подписание кода. Образец кода в ответе является удобной отправной точкой для использования фреймворка. Кроме того, в моем случае проблема заключалась также в том, что код инфраструктуры iTunesLibrary не работает, когда библиотека iTunes размещается на сетевом диске. Сделайте это немного разрывом сделок, если Apple не исправит это.

+0

У меня такая же ошибка с кодом без песочницы, но я не знаю, как это исправить. У меня также возникли проблемы с импортом Framework. Я, наконец, получил его работу, копируя и вставляя фреймворк в мой каталог проекта и добавляя его в проект. Мне интересно, как он знает, где искать библиотеку iTunes. – abroekhof

+0

Я собирался попробовать это, чтобы узнать некоторые цели-c, но я не могу даже добавить его правильно в свой проект. Угадай те же проблемы, что и abroekhof ... Он добавляет к проекту, но я не могу импортировать заголовок (не найден). Я видел других, использующих скриптовый мост. Это может быть способ пойти? Как вы добавили его в свой проект? –

+0

abroekhof - Вы смогли получить библиотеку для успешной инициализации в приложении, подписанном кодом, скопировав Framework прямо в ваш проект? – sckor

ответ

6

Вам необходимо будет кодовое имя вашего приложения, используя сертификат программы разработчика Mac.

Это не документировано нигде, но я подозреваю, что это требование было добавлено из-за того, что облако iTunes является веб-сервисом, требующим доступа к учетным записям пользователей.

// Редактировать: В дополнение к установке CODE_SIGN_IDENTITY в настройках проекта, как описано выше, вы также должны добавить /Library/Frameworks к FRAMEWORK_SEARCH_PATHS в настройках проекта, так что Xcode будет знать, где искать для # импорта-х.

// Edit 2: Я написал быстрый небольшой пример приложения, чтобы показать, как iTunesLibrary используется, так как Apple, образцы кода и документация довольно скудны: https://github.com/zadr/iTunesLibraryExample

+0

Apple должна заплатить мне 99 долларов за то время, которое я потратил впустую, пытаясь понять это ... – abroekhof

+0

I Я попробовал это в обоих направлениях - подписан код, а также нет, и он не работает ни в одном случае. Вы действительно получили его для инициализации? – sckor

+0

Да. Я могу без проблем получить доступ к ITLibrary, созданной из фреймворка 'CODE_SIGN_IDENTITY = Mac Developer' установлен в настройках сборки xcodeproj. – zadr

4

От iTunes Library Framework Reference

  • Вы должен подписать код вашего приложения, чтобы получить информацию из фреймворка ITunes .
  • Рамка библиотеки iTunes доступна пользователям, использующим iTunes v11.0 или выше.
+0

Вы правы. Однако проблема была ошибкой в ​​библиотеке iTunes Library. Я открыл отчет об ошибке с Apple, и он был исправлен в последней версии iTunes. – sckor

0

Не уверен, что это верно для всех вас, но в моем случае я сохранил Code-Signing-Identity до -. Теперь мне не нужно подписывать приложение.