2016-07-02 10 views
2

最初に起動したときに、初めて実際に選択した曲が再生されない音楽プレーヤーで選択したアイテムが再生されない

何らかの理由で、音楽アプリで最後に再生された曲の再生がアプリから開始されます。私は選択した曲をそれに渡していても、すべてがコンソールにログインしています。

それから、すべて正常に動作し、アプリは選択した曲を再生します。

何が起こっているのかわかりません。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if([segue.identifier isEqualToString:@"nowPlaying"]){ 
     // send to now playing 
     NSUInteger selectedSection = [[self.tableView indexPathForSelectedRow] section]; 
     NSUInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];   
     NSArray *albumTracksArray = [self albumTracksForSegue:[[albumsArrayForTVC objectAtIndex:selectedSection] representativeItem]]; 
     MPMediaItem *rowItemSong = [[albumTracksArray objectAtIndex:selectedIndex] representativeItem]; 
     MPMusicPlayerController *musicPlayer = [MPMusicPlayerController systemMusicPlayer]; 
     [musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:albumTracksArray]]; 

    if ([musicPlayer nowPlayingItem] == rowItemSong) { 
     // Nothing 
     NSLog(@"These songs are equivalent: %@", [musicPlayer nowPlayingItem]); 
     [musicPlayer setNowPlayingItem:rowItemSong]; 
     [musicPlayer play]; 
     NSLog(@"Row Item Song Same: %@", rowItemSong); 
    } else { 
     [musicPlayer setNowPlayingItem:rowItemSong]; 
     [musicPlayer play]; 
     NSLog(@"Row Item Song Different: %@", rowItemSong); 
     } 
    } 
} 
+1

setItemではなくskipToNextItemを試してみてください。 –

+0

@johnelemansはあなたが '[musicPlayer setNowPlayingItem:rowItemSong];の代わりに' [musicPlayer skipToNextItem] 'のようなことを言っています+' [musicPlayer play]; '? – SRMR

+0

はい、そういう意味です。 alexcuryloの答えは面白いです! –

答えて

1

キューを音楽プレーヤに割り当てる際に発生するいくつかの面白いケースがあり、システムのバージョンによって異なります。待ち行列を設定した後で、しばしば助けになる手技があります。

[musicPlayer setCurrentPlaybackTime: 0]; 

そのショットを与えて、それが機能するかどうかを確認してください。

+0

これは本当にうれしくて初めてでしたので、私はそれをテストし続けます。このようなエッジのケースをどうやって見つけたのか無作為に疑問に思っていますか?ドキュメントはほとんどありません。他にもコードを使用している人はそれほど多くありません。したがって、私を助けて私を救うことなく、潜在的にこれに来ることは永遠に私を受け入れていましたか? – SRMR

+1

OS3が出たときに私はプレイリストを使ってアプリを書いていたので、APIの最初の数回の修正で助けになったことをぼんやりと思い出しました。しかし、一般的には、「APIのすべての可能な内部状態を排除する」というのは、予期しない動作を分離/排除する問題にアプローチする健全な方法です。 –

+0

うわー、それはすばらしい、それに近づく素晴らしい方法です!おかげで、 – SRMR

関連する問題