MPMoviePlayerLoadStateDidChangeNotification适用于iOS 5,但不适用于iOS 6
问题描述:
我想用MPMoviePlayerViewController播放视频。所以在我的视图控制器中,我注册为MPMoviePlayerLoadStateDidChangeNotification
的观察者。MPMoviePlayerLoadStateDidChangeNotification适用于iOS 5,但不适用于iOS 6
我再初始化MPMoviePlayerViewController:
self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]];
,并等待通知到达。当它执行此代码时:
MPMoviePlayerController* playerController = notification.object;
if ([playerController loadState] & MPMovieLoadStatePlayable) {
if (self.mPlayerVC) {
[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC];
}
}
任何人都知道为什么这适用于iOS 5但不适用于iOS 6?谢谢
答
似乎有iOS 6的MediaPlayer.framework中的错误。要初始化的MPMoviePlayerViewController
self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]];
[self.mPlayerVC.moviePlayer prepareToPlay];
后获得视频播放我打电话prepareToPlay
现在通知再次进来,但应用程序崩溃时我打电话[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC];
在被称为该MPMoviePlayerLoadStateDidChangeNotification
的方法。
,防止死机更换
[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC];
的东西,如
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) {
[self presentViewController:self.mPlayerVC animated:YES completion:nil];
}
else if ([self respondsToSelector:@selector(presentModalViewController:animated:)]) {
[self presentModalViewController:self.mPlayerVC animated:YES];
}