Музыкальный проигрыватель не воспроизводит выбранный элемент
При первом запуске приложения при первом выборе любой песни приложение никогда не воспроизводит выбранную песню.
По какой-то причине приложение начнет воспроизводить любую последнюю песню в приложении Music. Даже несмотря на то, что я передаю выбранную песню ей, и все нормально записывается в консоль.
Но потом все работает нормально, и приложение воспроизводит выбранную песню.
Я понятия не имею, что происходит, какие-нибудь идеи?
- (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 ответ
Решение
Есть несколько забавных крайних случаев, которые появляются при назначении очередей музыкальному проигрывателю, и они различаются в зависимости от версии системы. Трюк, который часто помогает, после того, как вы установите очередь, звоните
[musicPlayer setCurrentPlaybackTime: 0];
Сделайте это и посмотрите, сработает ли это для вас.