2

本当に奇妙な問題に遭遇する単純な音楽プレーヤーアプリがあります。まず、音楽の再生中にロック状態で、ユーザーがホーム ボタンをダブルクリックして、ロックされた iPod ミュージック コントロールを使用できるようにします。ただし、ロック状態の間、アプリは登録された通知をまったく受信しないことに気付きました。ほとんどの場合、これで問題ありません。ただし、ユーザーがロック状態で、ある種のヘッドフォンまたは AUX ジャックを使用しているときに、少なくとも 15 分間音楽を再生している場合 (理由はわかりませんが、それ以下であり、この問題は発生しません)、プラグを抜きます。デバイスがまだ音楽を再生しているときにヘッドフォン/Aux ジャックを接続すると、iPodMusicPlayer は自動一時停止します。これはまさに私がやりたいことですが、これが起こった後、ユーザーがデバイスのロックを解除してアプリに再びフォーカスを移すと、iPodMusicPlayer'

- (IBAction)playPause:(id)sender {
     if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
         [musicPlayer pause];    
     } else {
         [musicPlayer play];
     }
 }

どこでmusicPlayer = [MPMusicPlayerController iPodMusicPlayer]

通常の状況では、これは完全に正常に動作します。しかし、これらの条件の後、私のブレークポイントは、音楽が一時停止している間に MPMusicPlaybackStatePlaying の条件にヒットし、その逆も同様です。これを修正できた唯一の方法は、新しい音楽を選択するか、アプリを終了して再度開くことです。この問題をプログラムで修正するために多くの回避策を試しましたが、100% バグのない修正にはなりませんでした。そもそもなぜこれが起こるのか、誰にも手がかりがありますか?

4

4 に答える 4

3

この回避策を試すこともできます。

 - (IBAction)playPause:(id)sender {
      if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
          [musicPlayer play];    
          [musicPlayer pause];    
      } else {
          [musicPlayer pause];
          [musicPlayer play];
      }
  }
于 2012-04-26T22:45:40.530 に答える
1

私はこれとまったく同じ問題を抱えています. ケースの 50% で、状態が非同期になります。私も多くの回避策を試しましたが、アプリを動作させる方法がありません。ドキュメントはまったく変更されていないため、iOS フレームワークにバグがあると思います。

ここで詳しく説明されているこのケースの回避策にたどり着きました:その他の StackOverflow の質問

于 2012-04-12T17:24:50.023 に答える
0

私の側にも同じ種類の問題があります。play 呼び出しを実行ループのキューに入れると、この問題が解決するようです (少なくとも私のコンテキストでは)。次のコード行で試すことができます。

[musicPlayer performSelector:@selector(play) withObject:nil afterDelay:0];
于 2012-07-05T16:32:15.497 に答える