Зная, когда объект AVPlayer готов к воспроизведению

Я пытаюсь воспроизвести файл MP3 , который передан в UIView из предыдущего UIView (хранится в NSURL * fileURL переменная).

Я инициализирую AVPlayer с помощью:

player = [AVPlayer playerWithURL:fileURL];

NSLog(@"Player created:%d",player.status);

NSLog выводит Player created: 0, который Я понял, что он еще не готов к игре.

Когда я нажимаю кнопку воспроизведения UIButton , я запускаю следующий код:

-(IBAction)playButtonClicked
{
    NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]);

    if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying)
//  if(!isPlaying)
    {
        [player play];
        NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status);
        isPlaying = YES;
    }
    else if(isPlaying)
    {

        [player pause];
        NSLog(@"Pausing:%@",[fileURL absoluteString]);
        isPlaying = NO;
    }
    else {
        NSLog(@"Error in player??");
    }

}

Когда я запускаю это, я всегда получаю Ошибка в плеере ?? в консоли. Однако если я заменю условие if , которое проверяет, готов ли AVPlayer к воспроизведению, простым if (! IsPlaying) ..., то музыка воспроизводится ВТОРОЙ РАЗ я нажимаю кнопку воспроизведения UIButton .

Журнал консоли:

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 0**

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Pausing:http://www.nimh.nih.gov/audio/neurogenesis.mp3

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
2011-03-23 11:06:43.674 Podcasts[2050:207] Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 1**

Я вижу, что ВТОРОЙ РАЗ, player.status , кажется, содержит 1, что Я предполагаю, что это AVPlayerReadyToPlay .

Что я могу сделать, чтобы воспроизведение работало правильно при первом нажатии кнопки воспроизведения UIButton ? (например, как я могу убедиться, что AVPlayer не просто создан, но и готов к воспроизведению?)

71
задан mvishnu 15 March 2017 в 03:37
поделиться