3
私はラジオストリーミングアプリを素早くビルドしています。現在はすべて動作していますが、ユーザーエクスペリエンスを少し改善したいと考えています。AVPlayerがいつ再生してコントローラに情報を送信するかを知る方法
ラジオの操作を処理するRadioPlayer.swiftクラスがあります。
import Foundation
import AVFoundation
class RadioPlayer {
static let sharedInstance = RadioPlayer()
private var player = AVPlayer(URL: NSURL(string:"http://rfcmedia.streamguys1.com/classicrock.mp3")!)
private var isPlaying = false
func play() {
player = AVPlayer(URL: NSURL(string: "http://rfcmedia.streamguys1.com/classicrock.mp3")!)
player.play()
isPlaying = true
player.currentItem?.status
}
func pause() {
player.pause()
isPlaying = false
player.replaceCurrentItemWithPlayerItem(nil)
}
func toggle() {
if isPlaying == true {
pause()
} else {
play()
}
}
func currentlyPlaying() -> Bool {
return isPlaying
}
次に、私はそのクラスを実装するView Controllerを持っています。私の目的は、プレイヤーがロードされているときに、ストリーミングが準備中であることを知らせるメッセージを送信することです。
私の質問は、それを達成する方法です。アンドロイドでは、メッセージを送信するためにブロードキャストを使用しましたが、迅速に同等のものを見つけられませんでした。
ので、私はRadioPlayerクラスにオブザーバーを実装する必要があり、私のViewControllerにFUNC?おかげで多く – user3515652
うん。技術的には、あなたのビューコントローラに 'AVPlayer'プロパティを直接観察させることができますが、' RadioPlayer'がキーイベントの 'ViewController'に通知できる独自のデリゲートプロトコルパターンやクロージャパターンを持つ方が適切ですコントローラが気にするかもしれない。 – Rob
はい、あなたが投稿したコードを実装しようとしています。終了すると答えを受け入れるでしょう:D – user3515652