Как получить имя отображаемой папки и значок приложения для URL-адреса, возвращаемого UIDocumentPickerViewController?
Ниже приведен пример моего Swift
кода игровой площадки и некоторых результатов отладочной печати:
if let newUrl = urlFromPicker {
// 1
print("[DEBUG] newUrl: [\(newUrl)]")
// 2
let res = try! newUrl.promisedItemResourceValues(forKeys: [.ubiquitousItemContainerDisplayNameKey])
if let displayName1 = res.ubiquitousItemContainerDisplayName {
print("[DEBUG] newUrl displayName1: [\(displayName1)]")
}
// 3
if let displayName2 = FileManager.default.displayName(atPath: newUrl.absoluteString).removingPercentEncoding {
print("[DEBUG] newUrl displayName2: [\(displayName2)]")
}
}
CASE 1 : откройте папку документов какого-либо приложения из iCloud Drive
(для этого примера PDF Viewer
):
[DEBUG] newUrl: [file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~pspdfkit~viewer/Documents/]
[DEBUG] newUrl displayName1: [PDF Viewer]
[DEBUG] newUrl displayName2: [Documents]
CASE 2 : Откройте подпапку Dir
того же каталога документов из iCloud Drive
:
[DEBUG] newUrl: [file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~pspdfkit~viewer/Documents/Dir/]
[DEBUG] newUrl displayName1: [PDF Viewer]
[DEBUG] newUrl displayName2: [Dir]
Поскольку у меня есть несколько документов из одного приложения PDF Viewer
, также на моем устройстве в On My iPhone
, здесь это те же два случая (каталог / подкаталог) для локальных документов:
CASE 3 : открыть локальную папку документов PDF Viewer
из On My iPhone
:
[DEBUG] newUrl: [file:///private/var/mobile/Containers/Data/Application/XXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBBBB/Documents/]
[DEBUG] newUrl displayName2: [Documents]
CASE 4 : Локальная подпапка:
[DEBUG] newUrl: [file:///private/var/mobile/Containers/Data/Application/XXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBBBB/Documents/Subdir/]
[DEBUG] newUrl displayName2: [Subdir]
ВОПРОСЫ :
- Как можно увидеть * Метод 1042 *
promisedItemResourceValues(forKeys:)
с .ubiquitousItemContainerDisplayNameKey
не работает для локальных файлов. Как получить имя приложения, папка которого Documents
используется для локальных файлов (тот же результат, что и вывод displayName1
в случае 1/2 для iCloud)? - Можно ли получить значок приложения так же, как он показывает
UIDocumentPickerViewController
?
PS Я знаю, что при использовании частного API в качестве LSApplicationWorkspace
я могу использовать извлеченный идентификатор пакета приложения (XXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBBBB
из URL), чтобы получить имя и значок приложения, но требуется публичный c способ сделать это, чтобы позже отправить свое приложение в AppStore.
Заранее спасибо за ваше внимание и помощь.