我目前正在尝试使用tvOS应用程序上的FairPlay流来实现处理DRM的服务。这是我的工作流程:
resourceLoadingRequest.streamingContentKeyRequestData(forApp: applicationCertificate, contentIdentifier: assetIDData, options: resourceLoadingRequestOptions)
guard let dataRequest = resourceLoadingRequest.dataRequest else {
print("no data is being requested in loadingRequest")
let error = NSError(domain: AssetLoaderDelegate.errorDomain, code: -6, userInfo: nil)
resourceLoadingRequest.finishLoading(with: error)
return
}
dataRequest.respond(with: datas)
resourceLoadingRequest.finishLoading()
但是在这些步骤之后我得到错误:
错误域= AVFoundationErrorDomain代码= -11835“无法打开”UserInfo = {NSUnderlyingError = 0x170440de0 {错误域= NSOSStatusErrorDomain代码= -42681“(null)”},NSLocalizedFailureReason =此内容未经授权。,NSLocalizedDescription =无法打开}
有没有人有想法或提示?
其他信息:
我最近遇到了同样的问题。问题是从streamingContentKeyRequestData(forApp...
返回的CKC响应数据不仅仅是数据,它是基数为64的编码字符串数据。您需要做的就是在响应数据请求之前对其进行解码:
dataRequest.respond(with: Data(base64Encoded: datas)!)
对于生产代码,您需要正确处理可选性。希望这可以帮助!