Возобновление прерванного радиопотока с использованием MPMoviePlayerController

Я разрабатываю онлайн-приложение для радио для устройств iOS6. Ive искал различные обертки для достижения этой задачи. AVPlayer, MPMoviePlayerController и т.д.

Я пробовал использовать AVPlayer, поскольку он звучит более корректно, чтобы использовать его для моей цели, поскольку это приложение только для аудио. Но вскоре я столкнулся с этой проблемой: Здесь

Поэтому я переключился на MPMoviePlayerController, и это то, что я пытаюсь сделать:

    pPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://launch.fusionradio.fm:8004"]];
    pPlayer.movieSourceType = MPMovieSourceTypeStreaming;
    pPlayer.view.hidden = YES;

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];

    [pPlayer prepareToPlay];
    [pPlayer play];

    pPlayer.shouldAutoplay = YES;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(StreamStateChanged) name:MPMoviePlayerLoadStateDidChangeNotification object:pPlayer];

В моем методе StreamStateChanged Im делает:

NSLog(@"Trying to replay");
[pPlayer pause];

[pPlayer play];

pPlayer - MPMoviePlayer. Все в порядке, за исключением случаев, когда есть прерывание. Консоль выплевывает следующее:

    Took background task assertion (1) for playback stall.
    Ending background task assertion (1) for playback stall.

Число после утверждения продолжает расти. а затем он восстанавливается после того, как интернет-соединение стабильно.

Мой вопрос: правильно ли этот подход? Я делаю что-то не так на этом пути? И нормально ли игнорировать это утверждение?

P.S: Пожалуйста, предложите, если есть лучший подход для разработки приложения для радиопотока с использованием другого API, а не MPMoviePlayerController

Спасибо:)

Ответ 1

Вы полностью правы, игнорируя эти внутренние сообщения assert. Вы ничего не можете с ними поделать.