ios - 通过 UIActivityController 共享视频 PHAsset

标签 ios swift video uiactivityviewcontroller phasset

我正在尝试使用 requestAVAsset 通过 UIActivityController 分享视频 PHAsset。这适用于 Messaging,但不适用于 AirDrop,指示为“失败”。

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 View ,但显示“发生未知错误”

enter image description here

最佳答案

我在使用 PHAssets 时遇到过类似的奇怪行为。我猜这是(故意)未记录的安全/沙盒限制。

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

我是循环执行的。有时,复制会因模糊的文件权限错误而失败。当它出现时,我会在几秒钟后重试(使用 DispatchQueue.main.asyncAfter)。最终,它成功了!

关于ios - 通过 UIActivityController 共享视频 PHAsset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707939/

相关文章:

ios - 如何检测 “LocallAPStore"- 新的 iap 破解程序

iphone - NSFetchedResultsController 和插入记录的问题

ios - 背景设备音乐在应用程序启动时停止 ios

video - 从ffmpeg中的图像创建视频时设置比特率不起作用

windows - 使用批处理根据分辨率重命名我的视频文件

android - youtube生成的url,用于在android应用中搜索视频名称

iphone - 为 iOS 5.0 编译时什么会导致 "Symbol not found: _objc_setProperty_atomic"错误?

iphone - 推送 View Controller 时应用程序崩溃,[NSConcreteData initWithContentsOfURL :options:error:]: nil URL argument'

ios - 使用 SWRevealViewController

Mac 终端上的 Swift