Как сделать так, чтобы мое приложение отображалось в меню открытия plist-файлов в ios13?

Я обновился до iOS 13, и теперь мое приложение больше не будет отображаться в новых диалоговых окнах «Открыть в…». Ранее я сделал следующее, чтобы мое приложение отображалось там, если открытый файл был файлом .plist:

  1. Я отредактировал Info.plist, как показано на скриншоте ниже.
  2. В AppDelegate я использую
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {}

для обработки данного файла.

Любые идеи, что могло измениться или что я мог случайно изменить, чтобы он больше не работал? Насколько мне известно, я следовал шагам, предоставленным Apple. правильно.

Изменить: может быть, они что-то изменили, так что мне нужно сделать что-то другое, потому что .plist, возможно, является известным типом файла, а не настраиваемым?

Редактировать 2: я обнаружил, что это работает, если я изменю «plist» на что-то другое. Я попытался заменить его на «тест» и отправить файл с именем «abc.test» на свой телефон, и он показал, что мое приложение открывает его.

Редактировать 3: В XML это выглядит так:

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFiles</key>
            <array/>
            <key>CFBundleTypeName</key>
            <string>Plist File</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>rtm.plist</string>
            </array>
        </dict>
    </array>

<key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeDescription</key>
            <string>Plist File</string>
            <key>UTTypeIconFiles</key>
            <array/>
            <key>UTTypeIdentifier</key>
            <string>rtm.plist</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <array>
                    <string>plist</string>
                </array>
            </dict>
        </dict>
    </array>

Редактировать 4: Если я просто поставлю «public.data» в качестве типа документа, мое приложение будет показано, и мой код будет работать. Но я хочу, чтобы он отображался только для plist-файлов.

Редактировать 5: я удалил все типы документов и UTI и просто добавил «public.plist» в качестве типа документа, и теперь он работает. Похоже, вы больше не можете использовать собственные UTI с общими типами файлов.

введите здесь описание изображения


person LarsGvB    schedule 08.10.2019    source источник
comment
Если вы полностью не отказались от использования сцен (чего делать не следует), вам следует реализовать соответствующий метод UISceneDelegate.   -  person rmaddy    schedule 08.10.2019
comment
@rmaddy Разве мое приложение не должно отображаться без этого, но звонки никуда не уходят?   -  person LarsGvB    schedule 08.10.2019


Ответы (1)


Столкнулся с той же проблемой.

В моем случае исправление было --> изменить public.item на public.data.

И мое приложение волшебным образом снова появилось в открытом меню.

person vomi    schedule 11.10.2019
comment
У меня уже было установлено значение «public.data». Смотрите мое последнее редактирование о том, как я исправил это для себя. - person LarsGvB; 11.10.2019
comment
Я знаю, но моя проблема была немного другой, потому что я использовал public.item, который предположительно покрывает public.data. Ваш ответ очень помог мне разобраться в этом вопросе. Спасибо. - person vomi; 12.10.2019