Issue:
I am supporting an iOS application that streams Fairplay DRM protected content.
On iOS 16 devices, I am seeing intermittent exceptions thrown when trying to process the CKC returned by the license server.
The thrown exception is as follows:
-[AVContentKeyRequest processContentKeyResponse:] AVContentKeySession's keySystem is not same as that of keyResponse
This issue does not occur on older devices (we support iOS 13, 14, 15)
I am unable to find documentation about this error so any insight is appreciated:
High-Level Code Overview
- Use
ContentKeyRequestto request an application certificate - Use returned Cert to call
makeStreamingContentKeyRequestData - Use returned data to request FairPlay license
- Use returned CKC to generate AVContentKeyResponse (i.e.
AVContentKeyResponse(fairPlayStreamingKeyResponseData:_)) - Call
processContentKeyResponse(_) - App crash/exception thrown when callling
processContentKeyResponse
I am seeing other issues related to DRM and iOS 16 but these are specific to downloaded and offline content which do not match my use case.
Please check my answer here: https://stackoverflow.com/a/76161977/4261600