首页 > 解决方案 > 在 iOS 中使用带有 AVPlayer 的固定证书

问题描述

有没有办法让 AVPlayer 在 iOS 中强制执行证书固定?

我们的视频加载代码基本上是:

let url = URL(string: "https://www.example.com/file.mp4")!
let item = AVPlayerItem(url: url)

我们可以使用此委托方法使用 URLSession 进行证书固定:https ://developer.apple.com/documentation/foundation/urlsessiondelegate/1409308-urlsession 。但是我还没有为 AVPlayer 找到一种类似的方法,如果有的话。

谢谢你的帮助!

标签: iosswiftavplayercertificate-pinning

解决方案


实现的相关方法应该是AVAssetResourceLoaderDelegate文档)中的这个:

optional func resourceLoader(_ resourceLoader: AVAssetResourceLoader, 
     shouldWaitForResponseTo authenticationChallenge: URLAuthenticationChallenge) -> Bool

在您的情况下,直接创建一个AVURLAsset,并在其资源加载器上设置您的委托实现。然后使用资产初始化播放器项目。

let url = URL(string: "https://www.example.com/file.mp4")!
let urlAsset = AVURLAsset(url: url)
urlAsset.resourceLoader.setDelegate(resourceLoaderDelegate,
                                    queue: .main)
let item = AVPlayerItem(asset: urlAsset)

推荐阅读