更新.Net Maui BlazorWebView中的内容



我们即将在当前基于Web的应用程序中制作一款混合应用程序,以实现离线使用,同时在移动设备中更多地使用本机应用程序功能。我们正在开发的应用程序今天在iis下的.net5(即将推出6(上运行,我们决定使用.netmaui和新的blazor webview作为我们移动设备应用程序的基础。通过这种方式,我们可以将服务器引擎代码移动到客户端(重量相当轻(,实际上可以重用大多数(如果不是全部的话(当前的javascript代码和css,并继续并行开发这两个平台(web和移动应用程序(。

我们现在面临的一个问题是,我们的应用程序可以随时更改。使用web GUI,我们的管理员可以更改应用程序的内容,包括文本、图像、声音文件和其他内容。我们的想法是简单地下载新的/更改的内容并存储在设备上,然后网络视图也应该能够离线使用。文本内容很容易,但我们不太清楚如何在图像和音频/视频中做到这一点。blazor网络视图似乎被锁定为只显示wwwroot资产文件夹中的内容,这很好,除非我们在部署应用程序后无法真正将内容添加到该文件夹中(至少据我们所知(。所以我的问题是,处理这样的事情最好的方法是什么?理想情况下,我希望能够将webview查找内容的位置更改为我们可以写入的目录(我们可以在某种文件系统中写入文件,只是不能在应用程序包中写入资产/资源(。我们可以使用的一个解决方案(至少对于图像(是将源设置为图像的base64编码,这样我们就可以从磁盘加载编码,但这似乎有点过时,也不是声音和视频的真正选项。

那么,在这里最好的前进方式是什么呢?

Base64编码的图像和音频/视频仅在联机时?在网络视图中预加载图像(可能还有视频((但隐藏(,并依靠网络视图缓存它们以供离线查看?(我们可以强制脱机缓存它们吗?(有可能让webview看起来像一个我们可以写入的文件夹吗?

如果有什么不清楚的地方,我很乐意尝试更好地解释。。。

这里有几个选项。

  1. 创建Blazor WebAssembly PWA项目
  • 这将允许您离线运行,并具有如果需要,与您的后端API进行通信。

  • 由于这是在设备的浏览器内/浏览器下运行的,如果你只需要HTML 5,你就可以访问一些传感器,如位置(GPS(、相机等。您对前端或后端所做的任何更改,一旦部署到您的Web服务器上,将在用户下次重新启动应用程序时可用。用户将拥有与在网络浏览器上相同的用户体验。

  • 你的用户可以在iPhone或Android上创建图标,就像AppStore应用程序一样,但要做到这一点,他们必须在safari或chrome。

  1. 创建基于WebView(而不是BlzorwebView(的设备项目,并将WebView指向您的网站
  • 这将允许您将应用程序发布到AppStore或PlayStore
  • 这种应用程序会在您将其发布到Web服务器后立即显示您对应用程序所做的任何更改
  • 您必须测试每个平台的传感器访问,因为它非常Dicy。我听说,当苹果只有WebView而没有其他功能时,它对允许应用程序在其商店上发布有点严格,不过这应该很快就会发现,因为你不必编写任何代码,只需打包并发布一个shell应用程序
  1. 创建Blazor Hybrid。在这个模型中,您的代码将可以完全访问本机传感器,但对于任何更改,您都必须重新部署。你可以有代码可以进行API调用,但使用它来更新你的应用程序将是不受支持的破解方式,这是不推荐的。如果你需要访问HTML5不支持的传感器,blazor Hybrid就是你的选择

相关内容

  • 没有找到相关文章

最新更新