#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 правильным? Должен ли я установить что-то еще в проекте?