Код: Выделить всё
WindowGroup {
FileContentView()
.onOpenURL(perform: { (fileUrl: URL) in // Only one URL can be delivered here
Log(String(format: "File Url = %@", fileUrl.absoluteString))
})
}
Код: Выделить всё
onOpenURL(perform:)
Альтернативный способ принять несколько файлов — использовать расширение Share, как описано в этой публикации stackoverflow. Я создал ShareExtension и удалил стандартный SLComposeServiceViewController, так как хочу полностью настроить пользовательский интерфейс (как описано в этом посте stackoverflow). Я определил собственный ViewController следующим образом (на данный момент состоящий только из операторов журнала):
Код: Выделить всё
class ShareViewController: UIViewController {
override func viewDidLoad() {
log("ShareViewController.viewDidLoad()")
guard let extensionItem: NSExtensionItem = extensionContext?.inputItems.first as? NSExtensionItem,
let data: [AnyHashable:Any] = extensionItem.userInfo else {
log("Error in obtaining data!")
return
}
log("data = " + String(describing: data))
}
override func viewDidAppear(_ animated: Bool) {
log("ShareViewController.viewDidApper(_:)")
}
override func viewDidDisappear(_ animated: Bool) {
log("ShareViewController.viewDidDisappear(_:)")
}
deinit {
log("ShareViewController.deinit()")
}
}
У меня есть следующий файл info.plist:
Код: Выделить всё
NSExtension
NSExtensionAttributes
NSSExtensionActivationRule
NSExtensionActivationSupportsFileWithMaxCount
5
NSExtensionPrincipalClass
$(PRODUCT_MODULE_NAME).ShareViewController
NSExtensionPointIdentifier
com.apple.share-services
Итак, две проблемы:
[*]Что еще требуется в файле plist, чтобы показать мое ShareExtension на листе общего доступа?
[*]После того, как 1 разрешено, мне нужен только мой ShareExtension для запуска при выборе файла .csk. Как я могу этого добиться? Я использовал UIExportedTypesDeclaration и CFBundleDocumentTypes, чтобы связать свое приложение с файлом .csk, но как связать мое ShareExtension с этим конкретным типом файла?
Подробнее здесь: https://stackoverflow.com/questions/784 ... hare-sheet