是否可以在仍然让用户与应用程序交互的同时上传视频?
Posted
技术标签:
【中文标题】是否可以在仍然让用户与应用程序交互的同时上传视频?【英文标题】:Is it possible to upload a video while still letting the user interact with app? 【发布时间】:2017-08-10 13:28:21 【问题描述】:我正在使用 AWS 的 transferUtility.uploadData,它使用 ios 中的后台传输功能来上传视频
基本上,当用户按下按钮启动 transferUtility.uploadData 时,navigationController 上会推送一个新屏幕。因此,当视频上传时,他们可以与新屏幕进行交互。
问题是在导航上推送屏幕时有很大的延迟,我想知道是否有办法在导航控制器上推送屏幕(例如在拍摄视频后 instagram 会出现一个新屏幕以自定义或发送给朋友)立即。
transferUtility.uploadData(
data,
bucket: S3BucketName,
key: videoName,
contentType: "movie/mov",
expression: expression,
completionHandler: completionHandler).continueWith (task) -> AnyObject! in
if let error = task.error
print(error)
print("Error: \(error.localizedDescription)")
if let _ = task.result
print("Upload Starting!----")
// Do something with uploadTask.
//Open new screen
self.navigationController?.pushViewController(CameraDetailTableViewController(videoURL: AWS_URL + videoName), animated: false)
return nil;
【问题讨论】:
【参考方案1】:您需要使用 Grand Central Dispatch 或 AWSExecutor。
有关如何实施的完整详细信息,请参阅 AWSTask 的文档。
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/awstask.html
【讨论】:
【参考方案2】:使用 dispatch_async 上传我们的视频。这样上传在应用程序的不同线程上,并将在后台运行,因此用户可以正常工作。在上传的完成处理程序中,您可以通过弹出窗口通知用户上传成功。
这是异步调度的代码:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) // in half a second...
//upload your video here
【讨论】:
以上是关于是否可以在仍然让用户与应用程序交互的同时上传视频?的主要内容,如果未能解决你的问题,请参考以下文章