Xamarin.forms 表单AVPlayer从方法全屏退出
我有一个Xamarin应用程序,它播放一段视频30秒,然后显示一个对话框。用户可以继续观看(关闭对话框)或单击对话框中的某个操作(然后应关闭全屏并在应用程序中的其他位置导航) 我在模拟器上工作。但是,当我在真正的iOS设备上运行以下代码时,应用程序崩溃,没有任何堆栈跟踪 ViewModel.csXamarin.forms 表单AVPlayer从方法全屏退出,xamarin.forms,xamarin.ios,avplayer,avplayerviewcontroller,Xamarin.forms,Xamarin.ios,Avplayer,Avplayerviewcontroller,我有一个Xamarin应用程序,它播放一段视频30秒,然后显示一个对话框。用户可以继续观看(关闭对话框)或单击对话框中的某个操作(然后应关闭全屏并在应用程序中的其他位置导航) 我在模拟器上工作。但是,当我在真正的iOS设备上运行以下代码时,应用程序崩溃,没有任何堆栈跟踪 ViewModel.cs var openLink = await _userDialogs.ConfirmAsync("...", cancelText: "Dismiss", okTe
var openLink = await _userDialogs.ConfirmAsync("...", cancelText: "Dismiss", okText: "Yes");
if (openLink)
{
await _navigationService.Close(scope);
MessagingCenter.Send(Application.Current, "CloseFullscreen");
}
_playerViewController = new AVPlayerViewController()
{
ExitsFullScreenWhenPlaybackEnds = true
};
player = new AVPlayer();
_playerViewController.Player = player;
...
SetNativeControl(_playerViewController.View);
MessagingCenter.Subscribe<Xamarin.Forms.Application>(this, "CloseFullscreen", (app) =>
{
BeginInvokeOnMainThread(() =>
{
var selectorName = "exitFullScreenAnimated:completionHandler:";
var selector = new ObjCRuntime.Selector(selectorName);
if (_playerViewController.RespondsToSelector(selector))
_playerViewController.PerformSelector(selector, NSObject.FromObject(true), 0);
});
});
VideoRenderer.cs
var openLink = await _userDialogs.ConfirmAsync("...", cancelText: "Dismiss", okText: "Yes");
if (openLink)
{
await _navigationService.Close(scope);
MessagingCenter.Send(Application.Current, "CloseFullscreen");
}
_playerViewController = new AVPlayerViewController()
{
ExitsFullScreenWhenPlaybackEnds = true
};
player = new AVPlayer();
_playerViewController.Player = player;
...
SetNativeControl(_playerViewController.View);
MessagingCenter.Subscribe<Xamarin.Forms.Application>(this, "CloseFullscreen", (app) =>
{
BeginInvokeOnMainThread(() =>
{
var selectorName = "exitFullScreenAnimated:completionHandler:";
var selector = new ObjCRuntime.Selector(selectorName);
if (_playerViewController.RespondsToSelector(selector))
_playerViewController.PerformSelector(selector, NSObject.FromObject(true), 0);
});
});
\u playervewcontroller=新的avplayervewcontroller()
{
ExitsFullScreen当LayBackEnds=true时
};
player=新的AVPlayer();
_playervewcontroller.Player=Player;
...
SetNativeControl(_playervewcontroller.View);
MessagingCenter.Subscribe(此“CloseFullscreen”(应用程序)=>
{
BeginInvokeMainThread(()=>
{
var selectorName=“exitFullScreenAnimated:completionHandler:”;
var选择器=新的ObjRuntime.selector(selectorName);
if(_playervewcontroller.RespondsToSelector(选择器))
_playerViewController.PerformSelector(选择器,NSObject.FromObject(true),0);
});
});
请注意,由于以下错误,我没有使用CrossMediaManager插件:Hi,您可以尝试将设备的方向修改为纵向,然后可以退出全屏。@JuniorJiang MSFT Hi,我这样做了。不幸的是,仍然是相同的结果…当方向改变时,你是否修改了
AVPlayer
的框架?@JuniorJiang MSFT否,屏幕方向保持不变,播放器所在的视图也保持不变。没有错误日志?您可以查看设备日志,也许可以看到详细的日志。您好,您可以尝试将设备的方向修改为纵向,然后可以退出全屏。@JuniorJiang MSFT您好,是的。不幸的是,仍然是相同的结果…当方向改变时,你是否修改了AVPlayer
的框架?@JuniorJiang MSFT否,屏幕方向保持不变,播放器所在的视图也保持不变。没有错误日志?您可以查看设备日志,也许可以查看详细日志。