Как остановить отображение MPMoviePlayerController «Этот фильм не может быть воспроизведен».? - PullRequest
1 голос
/ 06 августа 2010

Я использую MPMoviePlayerController для воспроизведения видео и аудио потоков на iPhone.

Иногда некоторые пары недоступны, поэтому в iPhone OS 3.1 я получаю 4 предупреждения «Этот фильм не может быть воспроизведен», даже если я ловлю все уведомления.

Может кто-нибудь сказать мне, как предотвратить это?

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Чтобы не показывать MPMoviePlayerController предупреждения UIAlertView, вы можете использовать следующий подход:

добавьте следующие методы к вашему делегату приложения и обязательно вызовите patchMPVVC только один раз при запуске:

#import "/usr/include/objc/objc-runtime.h"

- (void)_handleError:(NSNotification *)notification {
    // do nothing, or add any custom error handling code here
}

- (void)patchMPVVC {
    // add the _handleError: method to the MPVideoViewController class
    Class class = NSClassFromString(@"MPVideoViewController");
    Method myMethod = class_getInstanceMethod([self class], @selector(_handleError:));
    class_addMethod(class, @selector(_handleError:), method_getImplementation(myMethod), "v@:@");

    // swap method implementations:
    SEL selector = sel_registerName("_videoView_playbackErrorNotification");
    Method originalMethod = class_getInstanceMethod(class, selector);       
    myMethod = class_getInstanceMethod(class, @selector(_handleError:));
    method_exchangeImplementations(originalMethod, myMethod);
}

Имейте в виду, что Apple может отклонить этот код из-за того, что он ссылается на закрытый класс MPVideoViewController и метод _videoView_playbackErrorNotification.

1 голос
/ 12 августа 2010

Мне жаль сообщать вам, что это (насколько мне известно) невозможно сделать. Я тоже имел дело с той же проблемой, и хотя я потратил довольно много времени на изучение проблемы, я не смог найти решение.

...