iOS 如何访问共享扩展的私人文件

问题描述 投票:0回答:3

我一直在尝试访问带有我的共享扩展名的文件,如果该文件来自照片应用程序,我可以访问它,该文件的路径是:

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?或者如何访问文件?

ios ios8-share-extension
3个回答
1
投票

对于

Share Extension
,您需要从
NSItemProvider
获取文件,该文件由主机应用程序传递给您的共享扩展。

对于文件来说,可能是

Data
类型,也可能是
URL
类型。如果是数据,则需要将其转换为您需要的类型。如果它是一个url,你可以加载它。


0
投票

请点击给定的链接:- https://developer.apple.com/app-extensions/

谢谢。

施里拉姆


0
投票

请问,您如何访问此文件? “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)")
© www.soinside.com 2019 - 2024. All rights reserved.