Я работаю над плагином музыкального плеера, используя AVFoundation
, и хочу создать единый интерфейс на iOS и Android.
Я хочу зафиксировать ошибки, которые могут выдаваться AVPlayer
, когда, например, указанный AVPlayerItem
недействителен (содержит URL
файла, который не поддерживается, например, png
файл),
Я бы ожидал, что AVPlayer.replace()
сгенерирует исключение или изменение статуса AVPlayerItem
или AVPlayer
или, по крайней мере, какое-нибудь соответствующее уведомление на NSNotificationCeter
.Я пытался слушать / наблюдать за всеми из них, но ни один из них не сообщил ни о какой ошибке.На самом деле, AVPlayer
сообщил о состоянии готовности к игре.
mediaPlayer = AVPlayer();
playerItem = AVPlayerItem(url: URL(fileURLWithPath: Bundle.main.path(forResource: "image", ofType: "png")!))
playerItem?.addObserver(self, forKeyPath: #keyPath(AVPlayerItem.status), options: [.old, .new], context: &playerItemContext)
mediaPlayer?.addObserver(self, forKeyPath: #keyPath(AVPlayer.status), options: [.old, .new], context: &mediaPlayerContext)
mediaPlayer?.replaceCurrentItem(with: playerItem); // this changes player status to - "ready-to-play"
mediaPlayer?.play() // this does not report anything
Я разработчик Android и не могу понять, как работает AVPlayer
.Как мне этого добиться?
Примечание: я не могу использовать AVAudioPlayer
, потому что в документации сказано, что его не следует использовать при воспроизведении музыки из сети или источников, которые могут иметь задержку.
self.mediaPlayer?.replaceCurrentItem(with: nil)
self.mediaPlayer?.play()
Даже этот код не генерирует ошибку