При запросе воспроизведения файла mp3 с веб-сервера, если этот сервер возвращает запрещенное значение 403, неясно, как обрабатывать ошибку при проверке ошибки текущего элемента AVPlayer.
Сообщение об ошибке от AVPlayer не указывает, что это 403 ...
2019-01-05 13: 08: 33.908316-0500 Бегунок [84043: 3269818] Необязательно (ошибка
Домен = AVFoundationErrorDomain Код = -11828 «Не удается открыть»
UserInfo = {NSLocalizedFailureReason = Этот формат мультимедиа не
поддерживается., NSLocalizedDescription = Невозможно открыть,
NSUnderlyingError = 0x600000781290 {Ошибка домена = NSOSStatusErrorDomain
Код = -12847 "(ноль)"}})
Ошибка говорит о том, что носитель не поддерживается, но носитель даже не был достигнут. В любом случае можно увидеть код ошибки HTTP из запросов AVPlayer?
При тестировании того же файла на Android я могу правильно увидеть код ошибки 403 с нативного Android MediaPlayer
(ошибка с Android лучше и полезнее, чем AVPlayer для iOS).
Это отсутствие надлежащего обмена сообщениями об ошибках делает очень сложным корректное отображение точной ошибки пользователю.
Пример произвольного кода:
let url = URL(string: "some 403 server url")
let playerItem:AVPlayerItem = AVPlayerItem(url: url!)
player = AVPlayer(playerItem: playerItem)
player.play()
Проверка ошибки напечатает приведенное выше сообщение.
NSLog("\(String(describing: player.currentItem?.error))")