iPhone AVPlayer - выполнить код в фоновом режиме - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь выполнить потоковую передачу удаленного mp3 с помощью AVPlayer.

Я настроил аудиосеанс и добавил Plays Audio In Background в свой файл info.plist.

Язапустив этот код:

self.timeObserver = [self->player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:nil usingBlock:^(CMTime time) {
    [self updateControls];
}];

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

Дело в том, что, когда звуковой буфер мал, проигрыватель просто делает паузу, и этот код вфон остановлен, поэтому я должен снова вручную нажать кнопку воспроизведения в приложении.(и если я остановлю плеер, этот код тоже не запустится)

Я что-то не так делаю?Как я могу непрерывно запускать кусок кода в фоновом режиме?

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

Вы не можете запускать произвольный код в фоновом режиме бесконечно. Вы можете продолжать воспроизводить звук, но не стоит ожидать обновления своего пользовательского интерфейса, если вы не самое передовое приложение. Вы можете обновить пользовательский интерфейс, когда ваше приложение вернется на передний план.

Если вы правильно настроили AVAudioSession и сделали его активным, а также настроили режимы UIBackgroundModes, у вас не возникнет проблем с переходом на фронт аудио.

см. http://developer.apple.com/library/iOS/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Configuration/Configuration.html

0 голосов
/ 16 августа 2011

Вам нужно будет конвертировать свой фоновый код следующим образом:

__block UIBackgroundTaskIdentifier bgTask = nil;
    bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void) {
        [[UIApplication sharedApplication] endBackgroundTask: bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

//Your bg code here

[[UIApplication sharedApplication] endBackgroundTask: bgTask];
    bgTask = UIBackgroundTaskInvalid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...