Есть ли изменения в логике FairPlay? В моем приложении есть видео и аудио, защищенные FairPlay, они отлично работают до iOS 15.7, но в iOS 16
makeStreamingContentKeyRequestData is throwing me following error :
Error Domain=CoreMediaErrorDomain Code=-19152 "(null)"
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed"
UserInfo = {NSLocalizedFailureReason=An unknown error occurred (-19156), NSLocalizedDescription=The operation could not be completed,
NSUnderlyingError=0x280deac10 {Error Domain=NSOSStatusErrorDomain Code=-19156 "(null)"}}
Что может быть возможной причиной этого и решения?
Заранее спасибо





Функция streamingContentKeyRequestDataForApp устарела в iOS 15 согласно документации . Используйте функцию makeStreamingContentKeyRequestData, указанную в документации по новым функциям. Вот пример использования:
func makeStreamingContentKeyRequestData(
forApp appIdentifier: Data,
contentIdentifier: Data?,
options: [String : Any]? = nil,
completionHandler handler: @escaping (Data?, Error?) -> Void
)
В вашем вопросе упоминается makeStreamingContentKeyRequestDataForApp , а не makeStreamingContentKeyRequestData
Я решил проблему, проблема заключалась в дублировании тегов EXT в файлах m3u8, которые каким-то образом работали для iOS 15, поскольку он выбирал информацию из первого тега, тогда как в iOS 16 он использовал все теги и вызывал ошибку.
Привет, я сейчас сталкиваюсь с той же проблемой. Какие конкретные теги HLS EXT были основной причиной для вас? Спасибо большое за помощь !
Пожалуйста, предоставьте более подробную информацию о том, в чем была проблема. Все теги в m3u8 начинаются с #EXT, поэтому объяснение не дает много информации о том, какие именно теги (и что с ними) вызывали проблемы.
Мы используем AVContentKeySession для загрузки, столкнулись с той же ошибкой и исправили ее. В нашем случае проблема заключалась в следующем.
Наблюдаемая проблема:
"contentKeySession(_ session: AVContentKeySession, didProvide keyRequest: AVContentKeyRequest)" был вызван снова), а затем фреймворк быстро сообщил об ошибке “-19152“.
Журнал ошибок:
contentKeySession(_:contentKeyRequest:didFailWithError:), строка: XXX,
сообщение: XXX, URL: XXX, ошибка: домен=CoreMediaErrorDomain
Код=-19152 "(ноль)"Первопричина: Поведение iOS Framework API (AVContentKeySession и AVPersistableContentKeyRequest) изменилось на iOS16.
Решение:
Добавьте “keyRequest.processContentKeyResponse(keyResponse)” после загрузки CKC на iOS16+.
Проблема, с которой я столкнулся, заключалась в том, что keyRequest.options не устанавливался, поскольку он отображался как ноль (в iOS 16 по какой-то странной причине).
Я передаю правильные параметры
processContentKeyRequest(withIdentifer identifier: Any?, initializationData: Data?, options: [String : Any]? = nil).
Но в функциях ContentKeyDelegate они показывают иначе. Итак, мой обходной путь — просто использовать словарь глобальных параметров для хранения URL-адреса лицензии и данных актива. Вы можете использовать любой удобный для вас способ хранения.
Как уже упоминалось в моем вопросе, в настоящее время я использую только makeStreamingContentKeyRequestData.