Xamarin.forms 表单AVPlayer从方法全屏退出

Xamarin.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

我有一个Xamarin应用程序,它播放一段视频30秒,然后显示一个对话框。用户可以继续观看(关闭对话框)或单击对话框中的某个操作(然后应关闭全屏并在应用程序中的其他位置导航)

我在模拟器上工作。但是,当我在真正的iOS设备上运行以下代码时,应用程序崩溃,没有任何堆栈跟踪

ViewModel.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);
     });
});
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否,屏幕方向保持不变,播放器所在的视图也保持不变。没有错误日志?您可以查看设备日志,也许可以查看详细日志。