1

我尝试实现一个扩展,用户可以使用它在 App.net 上共享图像。

经过大量的反复试验,我终于没有想法了。

我有一个创建请求的框架。该请求是一个POST请求Content-Disposition: form-data。因此我想我必须使用 asessionDataTask来上传图片。

会话的委托是同一框架中的单例。调用了一些委托方法。

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 时,一切正常。

任何帮助将不胜感激。

4

1 回答 1

0

我认为扩展返回时数据任务被取消。你可能有更好的运气NSURLSessionUploadTask,它必须是后台上传请求的文件支持。

于 2014-12-12T20:37:09.213 回答