MPMusicPlaybackStateが正しい状態を取得しない。
以下のような画面構成で音楽プレイヤーを作成しています。
[アルバム一覧画面] → [選択されたアルバムの曲一覧画面] → [再生画面]
画面の遷移はナビゲーションコントローラを用いています。
そこで以下の手順で操作を行うと、MPMusicPlaybackState
が正しい状態を取得しなくなります。
1. 起動するとアルバム一覧画面が表示されるので、任意のアルバムを選択する。
2. 曲一覧画面に移動するので、曲を選択する。
3. 再生画面に移動し音楽が再生される。
ここでは問題なくMPMusicPlaybackState
の取得、制御ができます。
4. ナビゲーションでアルバム一覧ページまで戻り、別のアルバムを選択し再生する。
5. すると音楽が再生されているにも関わらずMPMusicPlaybackState
が常にPaused
となり、
制御できなくなってしまいます。
6. 再度曲一覧まで戻り、別の曲を選択するとMPMusicPlaybackState
が取得できるようになります。
これは画面の移動時に何か処理が足りないのでしょうか?
色々調べたところ、以下のページで過去に似たような質問をされている方がいました。
https://stackoverflow.com/questions/10118726/getting-wrong-playback-state-in-mp-music-player-controller-in-ios-5
かなり古い質問ですが、昔はバグとして存在していたのでしょうか?
iOS8で修正されたとコメントしている方もいますが・・・
以下は再生・停止ボタンのコードです。
//再生・停止ボタンアクション
@IBAction func playPauseB(sender: UIButton) {
var playerStatus = player.playbackState
if playerStatus == MPMusicPlaybackState.Playing{
player.pause()
playPauseBOutlet.setImage(playB, forState: UIControlState.Normal)
} else if playerStatus == MPMusicPlaybackState.Paused {
player.play()
playPauseBOutlet.setImage(PauseB, forState: UIControlState.Normal)
}
}
ご指摘やアドバイスお願いいたします。