Если ваш UTI объявлен как public.data
Я предполагаю, что ваш файл контрольного списка представляет собой пользовательские двоичные данные.
Затем вам следует просто использовать application/octet-stream
в качестве mime-типа.
ОБНОВЛЕНИЕ: Понял, ваша проблема более тривиальна, чем кто-либо мог ожидать.Еще одна вещь для начала - public.data
хорошо для всех его потомков (включая public.xml
), поэтому для файла XML вы можете установить любой из них:
public.item
public.data
public.content
public.text
public.xml
Список приложений, предлагаемых для открытия вашего файлаТип - это сборка, основанная на известных приложениях в системе, которые могут обрабатывать данный UTI плюс ваш.Поскольку текстовый редактор по умолчанию открывает public.text
и public.xml
, это будет действие по умолчанию для ваших файлов (ваше приложение будет отображаться в списке, вызванном долгим нажатием на почтовом вложении).
По-видимому, нет приложений, которые обрабатывают public.data
(то же самое для public.content
), поэтому при использовании этого UTI действие по умолчанию для вложения будет открывать его в вашем приложении.
Сейчасв точку ... у вашего CFBundleDocumentTypes
есть еще один <array>
уровень:
<key>CFBundleDocumentTypes</key>
<array>
<array> <!-- remove this line -->
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>docIcon64.png</string>
<string>docIcon320.png</string>
</array>
<key>CFBundleTypeName</key>
<string>My App Checklist</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.appid.checklist</string>
</array>
</dict>
</array> <!-- and this line -->
</array>
И он сработает.UTExportedTypeDeclarations
часть уже в порядке.