我正试图在电影结束时从MPMoviePlayerController获取通知。我正在使用本地文件以嵌入模式运行播放器。
与文档建议一样,我注册了MPMoviePlayerPlaybackDidFinishNotification并检查MPMovieFinishReason键是否包含MPMovieFinishReasonPlaybackEnded的intValue。这很好。
但是当我在使用contentURL属性实际到达其结尾之前切换电影时,我得到了与MPMovieFinishReasonPlaybackEnded相同的通知。所以我尝试了this solution并检查了endPlaybackTime == -1,但在两种情况下都是如此。
到目前为止,我发现的唯一解决方法是在更改contentURL然后再添加它之前删除观察者,但我认为必须有更优雅的解决方案?
答案 0 :(得分:0)
因此,根据文档,您观察到的行为似乎是正确的行为。我认为你退出通知的解决方案可能是一个很好的解决方案。是的,它有点hacky,但似乎它会起作用。
或者,如何存储您正在播放的电影的网址并与[moviePlayer contentURL]
进行比较?您可能需要做一些计时器杂技并且有一个currentMovieURL
和一个previousMovieURL
,但这应该提供一个很好的方法来比较结束的电影是你期望结束的电影。
除了那个之外,设置2个变量:movieStartTime
和expectedMovieDuration
怎么样?然后,您可以将[NSDate date]
与[movieStartTime dateByAddingTimeInterval:expectedMovieDuration]
进行比较,看看是否已关闭。
答案 1 :(得分:0)
似乎一直工作只需删除Observer,停止播放/更改Url,然后再次添加addOserver。