我正在尝试通过UIActivityController共享视频PHAsset,并使用requestAVAsset。这适用于消息传递,但不适用于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,并且只适用于某些活动:

发布于 2017-05-03 17:32:49
在使用PHAssets时,我遇到过类似的奇怪行为。我猜这是(故意)无文档的安全/沙箱限制。
通过将基础文件复制到用户目录,然后对复制的文件执行操作,我能够解决这个问题。
我是在循环中这样做的。有时,如果文件权限不明确,复制会失败。当它出现时,我会在几秒钟后重试它(使用DispatchQueue.main.asyncAfter)。最终,它成功了!
https://stackoverflow.com/questions/43707939
复制相似问题