ios 9,共享扩展,后台上传会话,Swift
我们正在使用Swift建立一个共享扩展。用户发布后,我们获取文件URL信息,并使用Almofire在后台将其多部分上传到服务器ios 9,共享扩展,后台上传会话,Swift,ios,swift,alamofire,nsurlsession,ios8-share-extension,Ios,Swift,Alamofire,Nsurlsession,Ios8 Share Extension,我们正在使用Swift建立一个共享扩展。用户发布后,我们获取文件URL信息,并使用Almofire在后台将其多部分上传到服务器 let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("SomeName") configuration.sharedContainerIdentifier = "SomeValidShare" manager = Al
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("SomeName")
configuration.sharedContainerIdentifier = "SomeValidShare"
manager = Alamofire.Manager(configuration: configuration)
let authHeaderString = authHeader();
manager?.upload(.POST, url, headers: authHeaderString, multipartFormData: {
multipartFormData in multipartFormData.appendBodyPart(fileURL: videoUrl, name: "file")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
etc
我们从这个上传中得到了后续端点发布所需的信息
完成此操作后,将使用调用容器应用程序
func application(application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: () -> Void)
但有时会在共享扩展中运行上载的成功之前调用此函数,我们无法访问返回的JSON以从容器应用程序进行更多调用
问题:
1) 如何确保在应用程序调用之前共享分机中的返回信息可用
2) 当用户启动应用程序时,是否有任何方法让应用程序从此后台会话获取会话/任务代理?我们已经尝试获取会话,但是我们得到一个控制台错误,该会话已经存在,并且没有调用委托
3) 有没有办法确定后台会话在应用程序的事件处理程序例程中是否成功
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("\SomeName")
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
4) 有没有办法在事件处理程序例程中获取结果数据
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("\SomeName")
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
那么,建议采用什么方法来确保共享扩展的后台上载结果已获得,然后可以通过共享用户默认值传输到容器应用程序?如果您知道如何在Xamarin Ios中实现此功能,请帮助我。看起来您正在使用基于闭包的方法进行上载。要使用后台URL会话,必须使用基于委托的方法。