我尝试实现一个扩展程序,用户可以在App.net上共享图像。
经过大量的反复试验后,我终于出了想法。
我有一个框架来创建请求。该请求是Content-Disposition: form-data
的 POST 请求。因此,我认为我必须使用sessionDataTask
上传图片。
会话的委托是同一框架中的单例。一些委托方法被调用。
但永远不会调用didReceiveData
。在任何上传开始之前,我在didCompleteWithError
中收到以下错误:
Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service" UserInfo=0x7b29dc80 {NSErrorFailingURLKey=https://alpha-api.app.net/stream/0/files, NSErrorFailingURLStringKey=https://alpha-api.app.net/stream/0/files, NSLocalizedDescription=Lost connection to background transfer service}
以下是共享扩展程序中的代码:
let imageUploadRequest = RequestFactory.imageUploadRequest(imageToShare, accessToken: accessToken!)
let sessionId = "de.dasdom.jupp.image.backgroundsession"
let config = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(sessionId)
config.sharedContainerIdentifier = "group.de.dasdom.Jupp"
let session = NSURLSession(configuration: config, delegate: PostService.sharedService, delegateQueue: NSOperationQueue.mainQueue())
let sessionTask = session.dataTaskWithRequest(imageUploadRequest)
sessionTask.resume()
self.extensionContext!.completeRequestReturningItems(nil, completionHandler: nil)
这也会在主机应用中产生相同的错误。
我已在共享扩展程序和主机应用程序中设置了一个应用程序组。
上传确实有效,但我需要上传的响应来撰写App.net的帖子。当我使用普通的NSURLSession时,一切正常。
任何帮助都会非常感激。
答案 0 :(得分:0)
我认为扩展返回时会取消数据任务。对于NSURLSessionUploadTask
,您可能会更幸运,必须为后台上传请求提供文件支持。