1

我用来MPMoviePlayerController在 iPhone 上播放一些视频和音频流。

有时某些 Steam 不可用,因此在 iPhone OS 3.1 上,即使我收到所有通知,我也会收到 4 个“无法播放这部电影”警报。

谁能告诉我如何防止这种情况发生?

4

2 回答 2

2

为了防止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);
}

请记住,由于它引用了私有MPVideoViewController类和_videoView_playbackErrorNotification方法,Apple 可能会拒绝此代码。

于 2010-09-07T10:18:31.423 回答
1

很遗憾地告诉你,这是(据我所知)不可能做到的。我也处理过同样的问题,即使我花了很多时间调查这个问题,我也找不到解决方案。

于 2010-08-12T15:30:37.520 回答