我用来MPMoviePlayerController
在 iPhone 上播放一些视频和音频流。
有时某些 Steam 不可用,因此在 iPhone OS 3.1 上,即使我收到所有通知,我也会收到 4 个“无法播放这部电影”警报。
谁能告诉我如何防止这种情况发生?
我用来MPMoviePlayerController
在 iPhone 上播放一些视频和音频流。
有时某些 Steam 不可用,因此在 iPhone OS 3.1 上,即使我收到所有通知,我也会收到 4 个“无法播放这部电影”警报。
谁能告诉我如何防止这种情况发生?
为了防止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 可能会拒绝此代码。
很遗憾地告诉你,这是(据我所知)不可能做到的。我也处理过同样的问题,即使我花了很多时间调查这个问题,我也找不到解决方案。