是否可以在仍然让用户与应用程序交互的同时上传视频?

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

【讨论】:

以上是关于是否可以在仍然让用户与应用程序交互的同时上传视频?的主要内容,如果未能解决你的问题,请参考以下文章

关于编译程序如何与操作系统交互的问题

如何转换上传的视频并从此文件中获取屏幕截图?

让用户上传视频和文本文档都有哪些安全问题?

与安卓交互的上传图片 与 上传语音视频

检查是不是可以与 DOM 元素交互

视频嵌入