我使用Webview
播放视频和音频,它在安卓和iPhone模拟器上运行得很好。但在真正的iPhone上,视频播放并不是很好。
为了在iPhone上播放视频,我需要多次点击视频播放按钮。在那之后,播放视频也需要很长时间。另一件重要的事情是我的视频链接没有视频格式(.mp4,.mkv)。
XAML
<WebView
x:Name="web_view"
HeightRequest="200"
WidthRequest="200"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"/>
XAML.cs
web_view.Source = "https://player.vimeo.com/video/303543322";
我尝试了Plugin.MediaManager.Forms
,但是它需要链接中的视频格式(.mp4,.mkv),否则它将无法工作。那么,是否有任何方法来解决webview
本身的这个问题,或者我是否应该选择任何其他的播放器(视频和音频)来支持播放没有视频格式的视频?
发布于 2019-12-16 08:55:23
首先,在您的PCL中创建一个从WebView继承的新类。并定义一个可绑定的属性,指出应该在iOS上加载什么url。
public class MyWebView : WebView
{
public static readonly BindableProperty UrlProperty = BindableProperty.Create(
propertyName: "Url",
returnType: typeof(string),
declaringType: typeof(MyWebView),
defaultValue: default(string));
public string Url
{
get { return (string)GetValue(UrlProperty); }
set { SetValue(UrlProperty, value); }
}
}
此类在iOS上的自定义呈现程序:
[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]
namespace xxx.iOS
{
public class MyWebViewRenderer : ViewRenderer<MyWebView, WKWebView>
{
WKWebView _wkWebView;
protected override void OnElementChanged(ElementChangedEventArgs<MyWebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
var config = new WKWebViewConfiguration();
_wkWebView = new WKWebView(Frame, config);
SetNativeControl(_wkWebView);
}
if (e.NewElement != null)
{
Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Url)));
}
}
}
}
适用于Android
[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]
namespace xxx.Droid
{
public class MyWebViewRenderer : WebViewRenderer
{
public MyWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var customWebView = Element as MyWebView;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.Settings.JavaScriptEnabled = true;
Control.LoadUrl(customWebView.Url);
}
}
}
}
最后,您可以在PCL的页面中使用这个自定义控件,下面是用法:
<StackLayout>
<local:MyWebView Url="https://www.microsoft.com" VerticalOptions="FillAndExpand"/>
</StackLayout>
https://stackoverflow.com/questions/59245923
复制相似问题