質問: MPMusicPlaybackState.Paused { player.play() playPauseBOutlet.setImage(PauseB, forState: UIControlState.Normal) } } ``` ご指摘やアドバイスお願いいたします。
回答: 質問の内容だけでは処理が足りないかどうかは判断できないですが、MPMusicPlayerControllerのplaybackStateがおかしくなる現象は存在します。自分はiOS7とiOS8で確認しました。 自分が確認した時の手順については、以下のページにまとめてあります。少し古いものですが。 MPMusicPlayerController::playbackStateがおかしくなる問題 - 開発メモ この現象への対策ですが、一番手っ取り早いのはplaybackStateを使わないことだと思われます。 (質問に書かれてるstackoverflow.comの回答と、本質的には同じことです) ``` import AVFoundation /// 再生中か? func isMusicPlayerPlaying() -> Bool { // player.playbackStateは信頼出来ないので、 // AVAudioSessionで再生状況を調べる let av = AVAudioSession.sharedInstance() return av.otherAudioPlaying } ``` こんな感じで、AVAudioSessionのレベルで音声が再生されているかどうかをチェックすることが可能です。 ただし、AVAudioSessionのレベルで音声の再生状況を取得するようにした場合、 **MPMusicPlayerControllerPlaybackStateDidChangeNotificationが送られてきても、その時点では、AVAudioSessionの再生状況に反映されてない** という問題が発生するため、MPMusicPlayerControllerからの通知を使ってる場合は、その部分で何らかの処理が必要になります。