feat(iOS): rewrite DRM Module (#4136)
* minimal api * add suport for `getLicense` * update logic for obtaining `assetId` * add support for localSourceEncryptionKeyScheme * fix typo * fix pendingLicenses key bug * lint code * code clean * code clean * remove old files * fix tvOS build * fix errors loop * move `localSourceEncryptionKeyScheme` into drm params * add check for drm type * use DebugLog * lint * update docs * lint code * fix bad rebase * update docs * fix crashes on simulators * show error on simulator when using DRM * fix typos * code clean
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// DRMManager+AVContentKeySessionDelegate.swift
|
||||
// react-native-video
|
||||
//
|
||||
// Created by Krzysztof Moch on 14/08/2024.
|
||||
//
|
||||
|
||||
import AVFoundation
|
||||
|
||||
extension DRMManager: AVContentKeySessionDelegate {
|
||||
func contentKeySession(_: AVContentKeySession, didProvide keyRequest: AVContentKeyRequest) {
|
||||
handleContentKeyRequest(keyRequest: keyRequest)
|
||||
}
|
||||
|
||||
func contentKeySession(_: AVContentKeySession, didProvideRenewingContentKeyRequest keyRequest: AVContentKeyRequest) {
|
||||
handleContentKeyRequest(keyRequest: keyRequest)
|
||||
}
|
||||
|
||||
func contentKeySession(_: AVContentKeySession, shouldRetry _: AVContentKeyRequest, reason retryReason: AVContentKeyRequest.RetryReason) -> Bool {
|
||||
let retryReasons: [AVContentKeyRequest.RetryReason] = [
|
||||
.timedOut,
|
||||
.receivedResponseWithExpiredLease,
|
||||
.receivedObsoleteContentKey,
|
||||
]
|
||||
return retryReasons.contains(retryReason)
|
||||
}
|
||||
|
||||
func contentKeySession(_: AVContentKeySession, didProvide keyRequest: AVPersistableContentKeyRequest) {
|
||||
Task {
|
||||
do {
|
||||
try await handlePersistableKeyRequest(keyRequest: keyRequest)
|
||||
} catch {
|
||||
handleError(error, for: keyRequest)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func contentKeySession(_: AVContentKeySession, contentKeyRequest _: AVContentKeyRequest, didFailWithError error: Error) {
|
||||
DebugLog(String(describing: error))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user