Музыкальный проигрыватель не воспроизводит выбранный элемент

При первом запуске приложения при первом выборе любой песни приложение никогда не воспроизводит выбранную песню.

По какой-то причине приложение начнет воспроизводить любую последнюю песню в приложении 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];

Сделайте это и посмотрите, сработает ли это для вас.

Другие вопросы по тегам