首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PHAsset共享视频UIActivityController

通过PHAsset共享视频UIActivityController
EN

Stack Overflow用户
提问于 2017-04-30 15:16:18
回答 1查看 1.2K关注 0票数 8

我正在尝试通过UIActivityController共享视频PHAsset,并使用requestAVAsset。这适用于消息传递,但不适用于AirDrop,指示为“失败”。

代码语言:javascript
复制
PHCachingImageManager.default().requestAVAsset(forVideo: asset, options: nil, resultHandler:
    { (givenAsset, audioMix, info) in

        let videoAsset = givenAsset as! AVURLAsset
        let videoURL = videoAsset.url

        DispatchQueue.main.async {
            let activityViewController = UIActivityViewController(
                activityItems: [videoURL],
                applicationActivities: nil)
            activityViewController.excludedActivityTypes = [UIActivityType.saveToCameraRoll]

            if let popoverPresentationController = activityViewController.popoverPresentationController {
                popoverPresentationController.barButtonItem = (sender)
            }

            self.present(activityViewController, animated: true, completion: nil)
        }
})

这似乎正确地安装了UIActivityController,并且只适用于某些活动:

  • 消息传递-✔️工作,正确地导出视频。
  • AirDrop -✖️秀“失败”
  • Dropbox -✖️提供了正确的Dropbox视图,但表示“发生了未知错误”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 17:32:49

在使用PHAssets时,我遇到过类似的奇怪行为。我猜这是(故意)无文档的安全/沙箱限制。

通过将基础文件复制到用户目录,然后对复制的文件执行操作,我能够解决这个问题。

我是在循环中这样做的。有时,如果文件权限不明确,复制会失败。当它出现时,我会在几秒钟后重试它(使用DispatchQueue.main.asyncAfter)。最终,它成功了!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43707939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档