Getting a file icon on iOS

Some time ago I read somewhere that one can get a file icon on iOS like this:

UIDocumentInteractionController(url: url).icons.last!)

but this always returns the following image for every file:

Today I tried the following, which always returns nil:

(try? url.resourceValues(forKeys: [.effectiveIconKey]))?.allValues[.effectiveIconKey] as? UIImage

Is there any way to get a file icon on iOS?

You can try the above methods in this sample app:

struct ContentView: View {
    @State private var isPresentingFilePicker = false
    @State private var url: URL?
    
    var body: some View {
        VStack {
            Button("Open") {
                isPresentingFilePicker = true
            }
            if let url = url {
                Image(uiImage: UIDocumentInteractionController(url: url).icons.last!)
                if let image = (try? url.resourceValues(forKeys: [.effectiveIconKey]))?.allValues[.effectiveIconKey] as? UIImage {
                    Image(uiImage: image)
                } else {
                    Text("none")
                }
            }
        }
        .padding()
        .fileImporter(isPresented: $isPresentingFilePicker, allowedContentTypes: [.data]) { result in
            do {
                let url = try result.get()
                if url.startAccessingSecurityScopedResource() {
                    self.url = url
                }
            } catch {
                preconditionFailure(error.localizedDescription)
            }
        }
    }
}
Answered by DTS Engineer in 824288022

Thanks for providing some code. I tried that here and was not able to find a workaround. I also tried .customIconKey and saw the same result.

Our engineering teams need to investigate this issue, as resolution may involve changes to Apple's software. Please file a bug report, include XX_NECESSARY_INFO_1 and XX_NECESSARY_INFO_2, and post the FB number here once you do.

Bug Reporting: How and Why? has tips on creating your bug report.

Thanks for providing some code. I tried that here and was not able to find a workaround. I also tried .customIconKey and saw the same result.

Our engineering teams need to investigate this issue, as resolution may involve changes to Apple's software. Please file a bug report, include XX_NECESSARY_INFO_1 and XX_NECESSARY_INFO_2, and post the FB number here once you do.

Bug Reporting: How and Why? has tips on creating your bug report.

Thanks for checking. I opened FB16457804. What do XX_NECESSARY_INFO_1 and XX_NECESSARY_INFO_2 mean?

Getting a file icon on iOS
 
 
Q