Можете ли вы динамически назначать CFBundleDocumentTypes вашему приложению Какао? - PullRequest
13 голосов
/ 17 декабря 2011

Можете ли вы динамически назначать CFBundleDocumentTypes вашему приложению Какао?То есть во время выполнения я могу назначить больше расширений для моего приложения для обработки.

В настоящее время я установил некоторые расширения для моего приложения для обработки с использованием CFBundleDocumentTypes в Info.plist, но я хотел бы сделать это с помощью кода во время выполнения приложения (во время выполнения).Как правило, я могу информировать Launch Services о новых расширениях без изменения файла Info.plist.

Спасибо.

1 Ответ

9 голосов
/ 22 декабря 2011

На данный момент не существует общедоступного API 1 для приложения, которое динамически (не) регистрирует типы документов в Launch Services во время выполнения.

Открыть лица Emu это самая проблема.Пользователи могут выборочно загружать / устанавливать эмуляторы, которые представляют собой пакеты, файлы Info.plist которых определяют типы документов.После установки эмулятора типы, определенные в комплекте, должны быть частью типов, определенных в приложении Info.plist.Open Emu переписывает Info.plist приложения, чтобы сделать это - см. -updateInfoPlist в OEGameDocumentController .

Обратите внимание, что перезапись Info.plist пакета является нарушением политики Mac App Store.

У нас есть полевые радары , запрашивающие во время выполнения (не) регистрацию типов документов.Я предлагаю вам также подать еще один файл, который должен быть закрыт как дубликат # 2526726 .Даже если это дубликат, важно все равно зарегистрировать его, чтобы Apple могла оценить количество людей, которым нужна эта функция.

1 Это может быть возможно через SPI, хоть.Когда я изучал это, я наткнулся на _LSRegisterItemFromItemInfo() в Launch Services.

...