2012-02-22 8 views
0

を再生しているAVPlayerではなく、の問題が発生しています。ここでAVPlayerがバックグラウンドでストリーミングトラックを転送していません

は詳細です:

私はNSMutableArrayの、linkArrayに保存されたリンクから音楽をストリーミングするために、私のビューコントローラのインスタンス変数としてAVPlayerオブジェクトとAVPlayerItemを持っています。ユーザーがトラックをUITableViewのトラックにタップすると、両方のオブジェクトが次のようにインスタンス化されます。

musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:indexPath.row]]]; 
player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem]; 

...完全に再生されます。アプリがのアクティブの間にトラックが終了するたびに、トラックがスキップされます。または、トラックをスキップするためにアプリを手動で起動すると(アクティブであるかバックグラウンドであるかに関係なく)しかし、アプリがバックグラウンドにあるとき(デバイスがロックされているときを含む)、スキップするときに次のトラックを再生しません。

したがって、次のトラックにスキップしますが、再生しません。私は、アプリを再びアクティブにするか、(ヘッドフォンコントロールまたはシステム全体の音楽コントロールを介して)再生を呼び出さなければなりません。ここで

は、両方の時に手動で実行またはシステムによって曲がトラックの終わりに到達したときに呼び出されるskipTrackメソッドのコードです:

 if (nowPlaying == [linkArray count]-1) { 
      nowPlaying = 0; 
      musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:0]]]; 
      player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem]; 
     } else { 
      NSLog(@"NowPlaying (before increment: %i", nowPlaying); 
      //If not, increment nowPlaying by one and play 
      nowPlaying++; 
      NSLog(@"NowPlaying (after increment: %i", nowPlaying); 
      musicPlayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[linkArray objectAtIndex:nowPlaying]]]; 
      player = [[AVPlayer alloc] initWithPlayerItem:musicPlayerItem]; 
    } 

は本当に誰かが

答えて

関連する問題