我正在为简单的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文件
在Assets文件夹内的缓存优先网络模式下:
我当前的解决方案很简单:
如果没有连接,则渲染
offline.html
当没有连接时,我可以导航到offline.html
,但是当前的问题是两个服务工作者的javascript文件无法正常工作,因为我无法获取缓存的内容,而只能是空白的offline.html
>