MPMoviePlayerController没有在iPhone 5模拟器发射通知模拟器
问题描述:
我遇到了一个问题......也许有人碰到类似的东西:我有一个应用程序使用MPMoviePlayerController,并且用于非常好地工作。 尝试使用iPhone 5 Simulator编译并运行新Xcode 4.2,MPMoviePlayerController在加载电影时未发送通知。看起来它无法正确检测视频文件。 代码看起来或多或少像(简化的代码):MPMoviePlayerController没有在iPhone 5模拟器发射通知模拟器
// 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秒,在此期间,I” m调用运行循环。 使用相同的代码,相同的Xcode 4.2版本,但与iPhone 4.3模拟器,大约一秒后通知被调用,我可以读取播放器的持续时间。但是,当在iPhone 5模拟器上运行完全相同的代码时,通知功能永远不会被调用,并且如果我以后尝试读取电影持续时间,它将包含0.
任何想法?
感谢, 林依晨
答
OK,我设法找到一个解决办法的问题。 显然,加入观察者后,加入这一行的伎俩:
[player pause];
看起来,如果你不“激活”的玩家不知何故,该通知不会被解雇。在我的情况下,我只是想在不开始播放的情况下获得电影持续时间的通知,并且它在iOS5之前的版本中运行良好,但看起来他们改变了行为。无论如何,上述线路解决了这个问题。
阿里尔
答
试试这个MPMoviePlayerPlaybackStateDidChangeNotification:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(stop)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:nil];
我很好奇,为什么你在运行循环 – NJones
什么,我试图做的是恢复从电影的几个参数,如等待其持续时间,自然大小等,并在框架分析电影后在通知中给出。但我想以同步方式获取这些内容,因此我添加了观察者并等待循环中的通知被调用。由于我不想阻止所有事情,所以我在等待时调用了运行循环。 – Ariel