Я разрабатываю онлайн-приложение для радио для устройств 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
Спасибо:)