我一直在尝试访问带有我的共享扩展名的文件,如果该文件来自照片应用程序,我可以访问它,该文件的路径是:
file:///var/mobile/Media/PhotoData/OutgoingTemp/11485686-0D4A-4637-AA50-B14D83E18B01/RenderedPhoto/IMG_4807.JPG
但是当我尝试访问“私有”路径上的文件时,我无法访问它,例如 MS word 文件:
file:///private/var/mobile/Containers/Data/Application/196D7E75-87B6-4C69-B97A-74E58DF4AD65/tmp/ShareAttachments/%7BE73A233D-D10E-814D-AEB1-0C8C8AC9BFAA%7D/Document%20(7 ).docx
所以我的问题是,如何访问文件? whatsApp 或 slack 等应用程序可以访问该文件并将其附加...
如何访问这个文件?他们在使用“应用程序组”吗?他们如何获得应用程序组的 ID?或者如何访问文件?
对于
Share Extension
,您需要从NSItemProvider
获取文件,该文件由主机应用程序传递给您的共享扩展。
对于文件来说,可能是
Data
类型,也可能是URL
类型。如果是数据,则需要将其转换为您需要的类型。如果它是一个url,你可以加载它。
请问,您如何访问此文件? “file:///var/mobile/Media/PhotoData/OutgoingTemp/11485686-0D4A-4637-AA50-B14D83E18B01/RenderedPhoto/IMG_4807.JPG”来自您的主应用程序。
我正在使用 onOpenUrl:
.onOpenURL { url in
// Handle the deep link URL here
if url.scheme == "PhotoEditor",
let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
let shareURLString = components.queryItems?.first(where: { $0.name == "share_url" })?.value
{
// Use the shared image URL in your app
// Example: pass it to a view model or trigger appropriate logic
let shareURL = URL(fileURLWithPath: shareURLString)
loadFrom(URLAdress: shareURL)
}
}
这是我的 loadImage 函数:
DispatchQueue.global().async {
do {
if URLAdress.startAccessingSecurityScopedResource() {
let imageData = try Data(contentsOf: URLAdress)
if let loadedImage = UIImage(data: imageData) {
///My codes
}
}
}
} catch {
print("Error reading image data: \(error)")