Создать файл с пользовательским типом документа

Я определил пользовательский тип документа, содержащий двоичные данные для моего приложения, с идентификатором "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>

0 ответов

Другие вопросы по тегам