MPMoviePlayerController не запускает уведомления в iPhone 5 Simulator - PullRequest
0 голосов
/ 19 октября 2011

Я столкнулся с проблемой ... возможно, кто-то столкнулся с чем-то похожим: у меня есть приложение, которое использует MPMoviePlayerController, и раньше оно работало на отлично.Пытаясь скомпилировать и запустить его с новым Xcode 4.2 с помощью iPhone 5 Simulator, MPMoviePlayerController не отправляет уведомления при загрузке фильма.Похоже, он не может правильно определить видео файл.Код выглядит примерно так (упрощенный код):

// First I'm initializing the player with a URL from a file
MPMoviePlayerController *player;
player = [[MPMoviePlayerController alloc] init];
player.shouldAutoplay = NO;
NSURL *url = [NSURL fileURLWithPath:path];
player.contentURL = url;

// Then I'm adding an observer in order to wait for the player to find movie duration
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(durationAvailable:)

После вышесказанного я жду в цикле ожидания вызова уведомления, ожидая около 10 секунд, в течение которых язвоню в цикл запуска.Используя тот же код, ту же версию Xcode 4.2, но с iPhone 4.3 Simulator, примерно через секунду вызывается уведомление, и я могу прочитать продолжительность проигрывателя.Однако при запуске точно такого же кода на имитаторе iPhone 5 функция уведомлений никогда не вызывается, и если я попытаюсь прочитать продолжительность фильма, то она будет содержать 0.

Любая идея?Ариэль

Ответы [ 2 ]

0 голосов
/ 04 сентября 2013

попробуйте это MPMoviePlayerPlaybackStateDidChangeNotification:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(stop)
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:nil];
0 голосов
/ 22 октября 2011

ОК, мне удалось найти решение этой проблемы. Видимо, добавление этой строки после добавления наблюдателя делает трюк:

[player pause];

Похоже, что если вы не активируете плеер каким-либо образом, уведомления не будут запущены. В моем случае я просто хотел получить уведомление о продолжительности фильма без начала воспроизведения, и это работало хорошо в версиях до iOS5, но похоже, что они изменили поведение. В любом случае, приведенная выше строка решает проблему.

Ariel

...