【发布时间】:2021-03-09 23:13:31
【问题描述】:
您好,我有一个基于 Xamarin MvvmCross 框架的应用程序,它使用来自 iOS 的 NSOject 库的 AVPlayerItem。每当视频播放关闭时,由于观察者通知动画协调器的全屏演示结束时,应弹出测验。最常见的是,函数 WillEndFullScreenPresentation 被触发。但有时当我在暂停期间滑动过快或关闭时,会在调用视频播放之前触发此函数。如何防止这种情况发生?
private void SetVideoPlayer(VideoAsset video)
{
var player = new AVPlayer(new NSUrl(video.VideoUrl));
ViewModel.WatchedVideoAssetCommand.Execute(video);
aVPlayerViewController = new AVPlayerViewController();
aVPlayerViewController.Player = player;
aVPlayerViewController.Delegate = this;
this.PresentViewController(aVPlayerViewController, true, () =>
{
aVPlayerViewController.Player?.Play();
});
//NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying:")),
//name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: fourVideoPlayer.player.currentItem)
NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, (notify) => {
notify.Dispose();
aVPlayerViewController.DismissModalViewController(true);
});
NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.ItemFailedToPlayToEndTimeNotification, (notify) =>
{
notify.Dispose();
aVPlayerViewController.DismissModalViewController(true);
});
}
[Export("playerViewController:willEndFullScreenPresentationWithAnimationCoordinator:")]
public void WillEndFullScreenPresentation(AVPlayerViewController playerViewController, IUIViewControllerTransitionCoordinator coordinator)
{
ViewModel.StartQuizForVideoAssetCommand.Execute(ViewModel.PlayingAsset);
}
【问题讨论】:
标签: ios xamarin video-streaming mvvmcross nsobject