Swift 从 iCloud 下载的 AVAsset 没有 iOS 14 的权限:错误代码=257
Swift AVAsset downloading from iCloud has no permission on iOS 14: error Code=257
在 iOS 14...
之前我的所有工作都很好
我在我的应用程序上显示来自图书馆的视频。我成功地从 iCloud 或本地存储中显示了所有这些。
但是自从 iOS 14,无法从 iCloud 读取它们,我也没有找到任何解决方案...
代码:
let options = PHVideoRequestOptions()
options.isNetworkAccessAllowed = true
options.version = .original
options.progressHandler = { (progress, error, stop, info) in
log.infoMessage("progress: \(progress)")
}
PHImageManager.default().requestAVAsset(forVideo: asset, options: options, resultHandler: {(avAsset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) -> Void in
if let asset = avAsset as? AVURLAsset {
Queue.main {
Player.shared.replaceAssetBy(AVPlayerItem(url: asset.url))
self.playerLayer.player = Player.shared.player
NotificationCenter.default.addObserver(self, selector: #selector(self.loopAction), name: .AVPlayerItemDidPlayToEndTime, object: Player.shared.player.currentItem)
}
}
})
错误:
FAILED Optional("Impossible d’ouvrir le fichier car vous ne disposez pas de l’autorisation nécessaire pour l’afficher.") -- error: Optional(Error Domain=NSCocoaErrorDomain Code=257 "Impossible d’ouvrir le fichier car vous ne disposez pas de l’autorisation nécessaire pour l’afficher." UserInfo={NSUnderlyingError=0x2814398c0 {Error Domain=NSOSStatusErrorDomain Code=-12203 "(null)"}})
抱歉错误是法语...
就在你们有些人问之前,我已经在 iOS 14.
的 requestPermission 上用 .ReadWrite
修改了权限
此致,
我找到了两种方法:
- 尝试
options.deliveryMode = .highQualityFormat
或
- 使用
requestExportSession
而不是 requestAVAsset
。
然后使用 session.asset
在 iOS 14...
之前我的所有工作都很好我在我的应用程序上显示来自图书馆的视频。我成功地从 iCloud 或本地存储中显示了所有这些。 但是自从 iOS 14,无法从 iCloud 读取它们,我也没有找到任何解决方案...
代码:
let options = PHVideoRequestOptions()
options.isNetworkAccessAllowed = true
options.version = .original
options.progressHandler = { (progress, error, stop, info) in
log.infoMessage("progress: \(progress)")
}
PHImageManager.default().requestAVAsset(forVideo: asset, options: options, resultHandler: {(avAsset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) -> Void in
if let asset = avAsset as? AVURLAsset {
Queue.main {
Player.shared.replaceAssetBy(AVPlayerItem(url: asset.url))
self.playerLayer.player = Player.shared.player
NotificationCenter.default.addObserver(self, selector: #selector(self.loopAction), name: .AVPlayerItemDidPlayToEndTime, object: Player.shared.player.currentItem)
}
}
})
错误:
FAILED Optional("Impossible d’ouvrir le fichier car vous ne disposez pas de l’autorisation nécessaire pour l’afficher.") -- error: Optional(Error Domain=NSCocoaErrorDomain Code=257 "Impossible d’ouvrir le fichier car vous ne disposez pas de l’autorisation nécessaire pour l’afficher." UserInfo={NSUnderlyingError=0x2814398c0 {Error Domain=NSOSStatusErrorDomain Code=-12203 "(null)"}})
抱歉错误是法语...
就在你们有些人问之前,我已经在 iOS 14.
的 requestPermission 上用.ReadWrite
修改了权限
此致,
我找到了两种方法:
- 尝试
options.deliveryMode = .highQualityFormat
或
- 使用
requestExportSession
而不是requestAVAsset
。 然后使用session.asset