ios - 未调用 AVContentKeySessionDelegate 方法
问题描述
在我的 iOS 应用程序中的 ViewController.swift 中实现了AVContentKeySessionDelegate的委托方法,该方法 是使用 Brightcove SDK 播放 drm 内容。
代码片段:
class ViewController: UIViewController, AVContentKeySessionDelegate, BCOVPlaybackControllerDelegate {
var contentKeySession: AVContentKeySession!
.
.
func getVideo() {
// fetching video using an API call
.
.
let asset = AVURLAsset(url: videoUrl)
self.contentKeySession = AVContentKeySession(keySystem: .fairPlayStreaming)
self.contentKeySession?.setDelegate(self, queue: DispatchQueue.main)
self.contentKeySession?.addContentKeyRecipient(asset)
}
//MARK: - AVContentKeySessionDelegate Methods
func contentKeySession(_ session: AVContentKeySession, didProvide keyRequest: AVContentKeyRequest) {
handleKeyRequest(keyRequest: keyRequest)
}
func contentKeySession(_ session: AVContentKeySession, contentKeyRequest keyRequest: AVContentKeyRequest, didFailWithError err: Error) {
print(err)
}
func contentKeySession(_ session: AVContentKeySession, contentKeyRequestDidSucceed keyRequest: AVContentKeyRequest) {
print(keyRequest)
}
}
问题
- 这些委托方法都没有被调用。
- 此外,注意到 Xcode 控制台中的错误提示: NSURLConnection 以错误代码 -1002 完成(在 Info.plist 的 App Transport Settings 中允许任意加载设置为 true)
解决方案
我相信的目的self.contentKeySession.processContentKeyRequest
是缓存内容密钥。理论上,只要内容受到保护,就应该调用内容会话密钥委托。
推荐阅读
- java - 打印到文件所有数据类型(记录器)
- git - 如何修改 Jenkins Git Build Data Revision 以显示远程 repo 地址
- flutter - 使用 Scoped Model 在 Flutter 中维护应用程序状态
- android - 在框架布局中显示/隐藏布局 onTouch
- css - 修复了手机上的导航栏
- soap - 经典的 asp - 只接收肥皂响应的一部分
- c++ - 我应该使用哪个 C++ stl 容器?
- node.js - 安装和使用全局 npm 包的首选方式?
- php - Wordpress 插件开发,找到具体页面
- c# - 在 nuget 包中添加第三方 COM 引用