如何在Xamarin WebView中正确实施PWA

时间:2019-04-04 16:21:48

标签: javascript c# xamarin progressive-web-apps

我正在为简单的Xamarin WebView应用程序实现PWA。以下是我的xaml文件:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App1"
             x:Class="App1.MainPage">
    <WebView x:Name="Browser" />
</ContentPage>

及其背后的代码:

namespace App1
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            if(IsConnected())
            {
                Browser.Source = "http://www.google.com";
            }
            else
            {               
                var rootPath = "file:///android_asset/";
                Browser.Source = new UrlWebViewSource
                {
                    Url = System.IO.Path.Combine(rootPath, "offline.html")
                };
            }
        }

        public bool IsConnected()
        {
            string CheckUrl = "http://bing.com";
            bool rtn = false; //assume no connection
            try
            {
                HttpWebRequest iRequest = (HttpWebRequest)WebRequest.Create(CheckUrl);
                iRequest.Timeout = 3000;
                WebResponse iResponse = iRequest.GetResponse();
                iResponse.Close();
                rtn = true;
            }
            catch (Exception)
            {
            }
            return rtn;
        }
    }
}

我有来自该网站的offline.html和两个serviceworker javascript文件

  

https://www.pwabuilder.com/serviceworker

在Assets文件夹内的缓存优先网络模式下:

Solution Explorer

我当前的解决方案很简单:

  

如果没有连接,则渲染offline.html

当没有连接时,我可以导航到offline.html,但是当前的问题是两个服务工作者的javascript文件无法正常工作,因为我无法获取缓存的内容,而只能是空白的offline.html

0 个答案:

没有答案