如何将 AVCaptureMovieFileOutput 保存到 iCloud

Posted

技术标签:

【中文标题】如何将 AVCaptureMovieFileOutput 保存到 iCloud【英文标题】:How to save AVCaptureMovieFileOutput to iCloud 【发布时间】:2017-04-26 23:19:33 【问题描述】:

我已经创建了一个电影文件,并且能够将它本地保存到设备上。但是,我想利用 icloud 文档并将其保存到 icloud 并公开共享。使用 swift 如何做到这一点?

我发现此链接用于保存常规文件,Save ios 8 Documents to iCloud Drive。我猜该方法是先将其本地保存到设备上,然后将其保存到云驱动器。但是有人有这个工作样本吗?例如下面的 UIDocument 函数的可能实现是什么?

override func contents(forType typeName: String) throws -> Any 



override func load(fromContents contents: Any, ofType typeName: String?) throws 


【问题讨论】:

【参考方案1】:

不幸的是,几乎不可能通过 iCloud Drive “共享”东西。使用 Dropbox。这是保存文件的代码,您当然首先需要设置 DropboxClientsManager.authorizedClient 变量,然后查看他们的开发页面。 Corepath 是您的文件的路径。

let client = DropboxClientsManager.authorizedClient!
client.files.upload(path: corePath, mode: .overwrite, autorename: false, input: textData).response  response, error in

    if let metadata = response 
            // Get file (or folder) metadata
        
        if let error = error 
            switch error 
            case .routeError(let boxed, let requestId):
                switch boxed.unboxed 
                case .path(let failedPath):
                        //rint("Failed update 2 path: \(failedPath)")

                        NotificationCenter.default.post(name: Notification.Name("dbFileCreationError"), object: nil, userInfo: nil)
                        break

                    default:
                        ////rint("Unknown \(error)")
                        break
                    
            case .internalServerError(let code, let message, let requestId):
                ////rint("InternalServerError[\(requestId)]: \(code): \(message)")
                NotificationCenter.default.post(name: Notification.Name("dbInternalServerError"), object: nil, userInfo: nil)
                break
            case .badInputError(let message, let requestId):
                ////rint("BadInputError[\(requestId)]: \(message)")
                NotificationCenter.default.post(name: Notification.Name("dbBadInputError"), object: nil, userInfo: nil)
                break
            case .authError(let authError, let requestId):
                ////rint("AuthError[\(requestId)]: \(authError)")
                NotificationCenter.default.post(name: Notification.Name("dbAuthError"), object: nil, userInfo: nil)
                break
            case .rateLimitError(let rateLimitError, let requestId):
                ////rint("RateLimitError[\(requestId)]: \(rateLimitError)")
                NotificationCenter.default.post(name: Notification.Name("dbRateLimitError"), object: nil, userInfo: nil)
                break
            case .httpError(let code, let message, let requestId):
                ////rint("HTTPError[\(requestId)]: \(code): \(message)")
                NotificationCenter.default.post(name: Notification.Name("dbHTTPError"), object: nil, userInfo: nil)
                break
            default:
                break
                
        
    

【讨论】:

您能否详细说明为什么无法与 icloud 共享内容? 大卫,云驱动器不提供共享文档的 API,期间。如果您使用资产,您可以通过 cloudKit 共享内容,但您将通过专用应用程序共享给其他 AppleID 用户。您也可以通过活动应用分享内容,我也可以在第二个答案中发布代码。 这对苹果来说很奇怪。按照您的建议使用保管箱可以共享视频文件吗?是收费还是只是占用了用户当前分配的磁盘空间?换句话说,无论他们目前是免费获得还是付费。 如果您在 Dropbox 上分享视频;您有效地向他们发送了指向所述视频的链接。它不会占用与您共享视频的人的空间,除非他们[显然]选择保存它。【参考方案2】:

您也可以通过活动应用程序分享内容,但不是您的想法。执行此操作的基本代码可以在此处查看。

@IBAction func shareButtonClicked(sender: UIButton) 
let textToShare = "Swift is awesome!  Check out this website about it!"

if let myWebsite = NSURL(string: "http://www.codingexplorer.com/") 
    let objectsToShare = [textToShare, myWebsite]
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

    activityVC.popoverPresentationController?.sourceView = sender
    self.presentViewController(activityVC, animated: true, completion: nil)


本网页对此进行了更详细的说明。

http://www.codingexplorer.com/sharing-swift-app-uiactivityviewcontroller/

【讨论】:

以上是关于如何将 AVCaptureMovieFileOutput 保存到 iCloud的主要内容,如果未能解决你的问题,请参考以下文章

如何将Ios文件上传到

Qt如何将文字变成图片?

如何将Bitmap保存为本地图片文件?

在MATLAB中如何将图导出

ASP如何将SQLSERVER数据导出到DBF(VF)

如何将CSV格式转换成JSON格式