我们正在通过我们的视频播放器实现公平竞争,我们能够完成苹果播放DRM视频所需的所有步骤,但视频就是无法播放。我们能够:
- 接听我们代表的电话:应该等待加载请求的资源
- 在上面的电话中,我们正确下载了证书,并且证书+资产ID,我们成功生成SPC
- 使用SPC,我们能够开机自检到许可证服务器并成功接收 CKC
-
对于CKC,我们称之为
loadingRequest.dataRequest?.respond(with: ckcResponseData) loadingRequest.finishLoading()
但是视频就是没有开始播放。我们缺少什么吗?我们是否需要"FPS 部署包"才能使其与我们的 Apple 帐户配合使用?请注意,我们已经在真实设备上进行了测试。
如果不看到您的实现,很难说。无论如何,根据我对FairPlay的经验,我可以分享以下内容。我假设您的播放可以播放非加密视频,因此它实施良好且有效。
如果你成功地进入了"finishLoad"部分,在另一边(在所有这些发生之前(,你需要在播放器上注册为"currentItem.status"的观察者。像这样:
player.addObserver(self, forKeyPath: "currentItem.status", options: NSKeyValueObservingOptions.new, context: nil);
因此,在某个阶段,您将收到 observValueForKeyPath 回调,您需要检查发生了什么:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
// Do any other KVO-related checks... and the following:
if let status = self.player.currentItem?.status {
switch (status) {
case .failed:
// Something went wrong!
self.itemFailed()
case .readyToPlay:
// Item is ready to play, so just .play() it!
self.itemReadyToPlay()
case .unknown:
// Oh-oh.
self.itemUnknown()
}
}
}
如果您已经处于此阶段,请告诉我,您会遇到哪些错误。
(这里分享的内容并不具体针对 FairPlay,但它更笼统地涉及加载资产,它不会违反任何许可协议(