FileManager and accessing app group error

239 Views Asked by At

I've been having problem with using share extension to get a file and unzip it into my app group folder.

Here is the code:

for attachment in content.attachments as! [NSItemProvider] {
            if attachment.hasItemConformingToTypeIdentifier(contentType){
                attachment.loadItem(forTypeIdentifier: contentType, options: nil) { (data, error) in
                    let fileManager = FileManager()
                    let url = data as! URL
                    let destinationURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.KakaoAnalyzer")?.appendingPathComponent("KakaoFilesTemp")
                    do {

                        try fileManager.createDirectory(at: destinationURL!, withIntermediateDirectories: true, attributes: nil)
                        try fileManager.unzipItem(at: url, to: destinationURL!)
                        self.mergeFiles()
                        print("SUCCESSFULLY UNZIPPED")

                    } catch {
                        print(error.localizedDescription)
                        print("UNZIP FAILED")
                    }
                }
            }
        }

This is part of my didSelectPost()

I'm using share extension to get a ZIP file via share, and ZIPFoundation to unzip it into my destination folder which is my app group with this extension and my main project.

This code runs fine and unzips successfully in a simulator, but when I run it on my phone, I get an error:

The file "FILENAME" couldn't be opened because there is no such file

when there clearly should be one, and

Failed to determine whether URL "FILEURL" is managed by a file provider.

I've tried moving the file at the url to my documentDirectory, but it produces error:

"FILE" couldn't be moved because you don't have permission to access "appGroupFolder"

Does anyone how to solve this? Any help would be greatly appreciated!

0

There are 0 best solutions below