Регистрация значка для типа документа моего приложения
Я пытаюсь зарегистрировать значок для типа документа моего приложения. После прочтения Объявление Новых Идентификаторов Единого Типа и, глядя на /Developer/Examples/Sketch
Я придумал что-то подобное в моем Info.plist
:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.myextension</string>
</array>
<key>NSDocumentClass</key>
<string>NSString</string>
</dict>
</array>
...
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeDescription</key>
<string>Blah blah blah</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIconFile</key>
<string>My-file-icon.icns</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.myextension</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myextension</string>
</array>
</dict>
</dict>
</array>
теперь все нормально, и денди, т. е. моя программа открывается, когда я нажимаю на файл с моим расширением и т. д. Однако, значок документа не зарегистрирован в ОС, т. е. я вижу уродливый пустой значок вместо моего прекрасного My-file-icon.icns
. Я подозреваю, что я упускаю что-то в plist выше, есть идеи?
3 ответов
Попробуйте поместить имя значка в CFBundleTypeIconFile
ключ в CFBundleDocumentTypes
массив, а не в UTExportedTypeDeclarations
массив.
и, конечно, убедитесь, что " My-file-icon.icns " находится на этапе сборки ресурсов пакета копирования вашей цели и копируется в содержимое/ресурсы в пакете вашего приложения.
У меня также была аналогичная проблема, оказывается, мне нужно было перестроить базу данных служб запуска в соответствии с тем, что я задокументировал здесь....
ваша декларация UTI в информации.plist кажется правильным, однако я заметил другую проблему. Если приложение является приложением на основе документа, вам необходимо заменить NSString в следующей записи подклассом NSDocument:
<key>NSDocumentClass</key>
<string>NSString</string>
например, это "SKTDocument" в Sketch:
<key>NSDocumentClass</key>
<string>SKTDocument</string>
изменить: Также убедитесь, что для экспортируемых UTIs используется собственное обратное доменное имя. Это гарантирует, что UTIs уникальны. Например com.mindnode.MindNode.MindNodeDocument в моем случае.