iOS — Открытие файлов с пользовательским расширением из внешних приложений в мое приложение не работает

#ios #swift #file-extension #info.plist #uiapplicationdelegate

Вопрос:

Мое приложение Swift должно открывать файлы с пользовательским расширением, скажем, «ext».

В файле info.plist это выглядит так

 <key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeDescription</key>
        <string>List of datatype</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.json</string>
            <string>public.database</string>
            <string>public.data</string>
            <string>public.text</string>
            <string>public.content</string>
        </array>
        <key>UTTypeIdentifier</key>
        <string>com.myapp.datatype</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>ext</string>
            </array>
            <key>public.mime-type</key>
            <array>
                <string>application/json</string>
            </array>
        </dict>
    </dict>
</array>
 

код для обработки открытия находится в делегате приложения, но приложение вообще не вызывается.

 @UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    
     let url=launchOptions?[UIApplication.LaunchOptionsKey.url]
  
    if ((url) != nil) {
        
        //importing is implemented here
...
...
    }
    
    return true
}
...
...
 

При запуске приложения на симуляторе iOS случается, что

если я выберу такой файл из приложения «Файлы», он отобразится в самом приложении «Файлы», но он не будет открыт в моем приложении и нет возможности отправить его напрямую в мое приложение.

Но расширение, похоже, зарегистрировано, потому что описание (список типов данных) отображается при открытии файла в приложении «Файлы» в виде текста JSON.

Что можно сделать, чтобы исправить открытие от имени других приложений, например, файлов или электронной почты.

Является ли предоставленный фрагмент info.plist правильным? Должен ли я установить что-то еще в проекте?