Создать файл с пользовательским типом документа
Я определил пользовательский тип документа, содержащий двоичные данные для моего приложения, с идентификатором "com.mycompany.gcp", используя Exported UTI. Я использую этот тип документа для обмена данными с версиями моего приложения для MacOS и iOS. После долгих проб и ошибок он работает достаточно хорошо. Тем не менее, я чувствую, что пропустил важный шаг.
Когда я экспортирую файл из моего приложения, я создаю файл, используя FileManager.createFile(atPath:, contents:, attributes:)
, Я создаю файл с моим расширением gcp, однако я не знаю, как указать тип идентификатора, в частности, чтобы установить его в "com.mycompany.gcp". Когда я экспортирую файл, если я проверяю его с помощью mdls, kMDItemContentType = "dyn.ah62d4rv4ge80s25u", который, как я предполагаю, относится к динамическому идентификатору, а не к моему идентификатору.
Мои вопросы: 1) есть ли способ установить идентификатор при создании файла? Я попытался NSURL методы, чтобы установить идентификатор без успеха. 2) это имеет значение?
Я чувствую, что ответ на вопрос 2 - да. В iOS, если я отправлю файл по электронной почте или отправлю его в эфир, я могу открыть его с помощью своего приложения. Однако в iMessage не происходит никаких действий, когда я нажимаю на отправленный файл.
Вот соответствующие ключи из Info.plist для версии моего приложения для iOS:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>GCP File</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.gcp</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>GCP File</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.gcp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>gcp</string>
</array>
</dict>
</dict>
</array>