在iOS中将固定证书与AVPlayer一起使用

问题描述

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

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

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

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

感谢您的帮助!

解决方法

要实现的相关方法应该是AVAssetResourceLoaderDelegatedocs)中的该方法:

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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...