Расширение поставщика файлов iOS 11

В настоящее время я немного застрял в этой библиотеке провайдера файлов. Я получил свой пример проекта, работающий до точки отображения файлов / папок и возможности навигации. Кроме того, я могу вызвать функцию startProvidingItem (at url), где вы начинаете скачивать файл с вашего удаленного сервера. Тем не менее, этот экран появляется, когда я нажимаю на файл изображения, например:

изображение симулятора iphone

Может кто-нибудь объяснить, если я упускаю какие-либо функции в моей функции?

override func startProvidingItem(at url: URL, completionHandler: @escaping (Error?) -> Void) {
    print("file provider extension startProvidingItem: \(url.absoluteString)")
    // Should ensure that the actual file is in the position returned by URLForItemWithIdentifier:, then call the completion handler

    if !fileManager.fileExists(atPath: url.absoluteString) {

        guard let identifier = self.persistentIdentifierForItem(at: url) else {
            return
        }

        guard let urlForContent  = URL(string: "some url api endpoint") else {
            return
        }

        let sessionConfig = URLSessionConfiguration.ephemeral
        let session = URLSession(configuration: sessionConfig)
        let task = session.dataTask(with: urlForContent) { (data, response, error) -> Void in

            DispatchQueue.main.async {
                if let data = data {

                    self.fileManager.createFile(atPath: url.absoluteString, contents: data, attributes: nil)

                }
            }
        }

        task.resume()
    } 

    /* TODO:
     This is one of the main entry points of the file provider. We need to check whether the file already exists on disk,
     whether we know of a more recent version of the file, and implement a policy for these cases. Pseudocode:

     if !fileOnDisk {
         downloadRemoteFile()
         callCompletion(downloadErrorOrNil)
     } else if fileIsCurrent {
         callCompletion(nil)
     } else {
         if localFileHasChanges {
             // in this case, a version of the file is on disk, but we know of a more recent version
             // we need to implement a strategy to resolve this conflict
             moveLocalFileAside()
             scheduleUploadOfLocalFile()
             downloadRemoteFile()
             callCompletion(downloadErrorOrNil)
         } else {
             downloadRemoteFile()
             callCompletion(downloadErrorOrNil)
         }
     }
     */

    completionHandler(NSError(domain: NSCocoaErrorDomain, code: NSFeatureUnsupportedError, userInfo:[:]))
}

0 ответов

Другие вопросы по тегам