远程html app本地文件路径,WKWebView:远程URL访问本地文件

我正在使用Xamarin.iOS,但一切都很容易翻译成ObjC / Swift .

我有一个 WKWebView ,它会加载一个远程URL(html,js,css),然后加载应用程序中本地存储的mp4视频 . 问题是这些视频没有被加载 .

该网站使用HTML 5视频标签,我通过与Javascript通信C#来设置本地网址 .

视频路径是这样的: /var/mobile/Containers/Data/Application/F535FA1C-752B-4B46-B237-6781464EE0E5/Documents/../Library/Vimeo/7b2723fa-b0f1-40c5-bc58-d43949273329.mp4 .

这是我的WKWebView设置:

var userController = new WKUserContentController();

userController.AddScriptMessageHandler(new iOSSiteWrapper(this.ViewModel, () => this.webView), "iOSWrapper");

var configuration = new WKWebViewConfiguration

{

AllowsInlineMediaPlayback = true,

UserContentController = userController

};

configuration.Preferences.JavaScriptCanOpenWindowsAutomatically = true;

configuration.Preferences.JavaScriptEnabled = true;

configuration.Preferences.SetValueForKey(NSObject.FromObject(true), new NSString("allowFileAccessFromFileURLs"));

configuration.AllowsInlineMediaPlayback = true;

configuration.AllowsPictureInPictureMediaPlayback = true;

if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))

{

configuration.MediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypes.None;

}

else

{

configuration.MediaPlaybackRequiresUserAction = false;

}

this.webView = new WKWebView(

new CoreGraphics.CGRect(),

configuration)

{

WeakNavigationDelegate = this

};

// add to view hierarchy...

// this.ViewModel.HtmlContent is a string which contains the html page

this.webView.LoadHtmlString(this.ViewModel.HtmlContent, NSUrl.FromString(Constants.BASE_URL));

我在Info.plist文件中配置了ATS例外 .

更新

我试着加载这个简单的html字符串:

var videoToPlay = "file:///var/mobile/Containers/Data/Application/F535FA1C-752B-4B46-B237-6781464EE0E5/Documents/../Library/Vimeo/7b2723fa-b0f1-40c5-bc58-d43949273329.mp4";

var html = $"

this.webView.LoadHtmlString(html, NSUrl.FromString(Constants.BASE_URL));

结果是一样的 . 视频无法播放,我可以在Safari输出上看到此错误:

不允许加载本地资源:file:///var/mobile/Containers/Data/Application/F535FA1C-752B-4B46-B237-6781464EE0E5/Documents/../Library/Vimeo/7b2723fa-b0f1-40c5-bc58- d43949273329.mp4

2 nd更新

如果我加载html代码段设置本地路径作为基本URL,它的工作原理:

this.webView.LoadHtmlString(html, NSUrl.FromFilename(videoToPlay));

但是当我尝试加载远程站点时,我需要基本URL作为远程基本URL . 所以一个新的问题是:是否可以在WKWebView上设置两个基本URL?

否则,除了在本地加载整个站点之外,我还有其他选择吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值