PWA - 清单属性"display":"standalone"在安卓上不起作用



我注意到我的PWA有一个非常奇怪的行为。我可以在Windows上以"独立"模式启动它,但当我在安卓设备上尝试这样做时,它会忽略"独立"值,并在Chrome(安卓7.0、Chrome安卓v62.x)中打开url。它在Chrome安卓Beta v63.x中也不起作用(与本帖子有关,该帖子指的是Chrome 62.x中的一个错误)。我已经用清单验证器和灯塔检查了清单文件。这两个工具都验证了文件,没有显示任何错误/问题。"添加到主屏幕"对话框直接显示(每次第一次启动时),我可以将PWA添加到我的主屏幕。服务人员按预期工作,我离线运行应用程序(在Windows和Android上)没有任何问题。

我正在我的Android设备上用笔记本上的代理进行测试(以防万一)。我也尝试过不同的安卓设备,但出现了同样的问题。

注:不同的PWA按预期工作,例如2048作为PWA

这是我的宣言.json:

{
"icons": [
{
"src": "assets/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image/png"
},
{
"src": "assets/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "assets/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "assets/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "assets/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "assets/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "assets/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"short_name": "My short name",
"name": "My not sooooo short name",
"theme_color": "#337ab7",
"start_url": "/index.html",
"background_color": "#ffffff",
"display": "standalone",
"orientation": "portrait"
}

清单文件链接在我的index.html的标题中,带有额外的移动设备:

<meta name="mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#337ab7">
<link rel="manifest" href="manifest.json">

该网络应用程序是用angular 2(angular seeds)构建的,以防有人遇到类似的问题。。

感谢您的时间和评论!

更新1:

当我不使用代理从移动设备访问我的PWA,而是通过本地网络中打开的端口访问它时,独立功能运行良好(但服务工作者注册失败…)。我仍然不确定为什么代理会出现这种"错误"。

更新2:

我真正的问题是,为什么会发生这种情况?另一个问题是,如果我找到的所有解决方案都有折衷方案,我如何才能在真正的移动设备上真正测试我的PWA的行为和感觉?关于发展环境。。

我在安卓设备上测试的方法:

  • 打开我笔记本的端口,通过我笔记本的ip地址访问本地网络内部(服务人员不工作,因为没有https和localhost,但pwa以独立模式启动-.-)
  • 在Android设备上设置一个代理到我笔记本的ip(服务工作者工作,独立模式失败)

我找到了一个解决方案,可以在任何移动设备上测试我的PWA,而不需要任何列出的折衷方案。我现在使用ngrok,它允许我创建一个到本地主机的隧道,使其可以通过https从任何地方访问。因此,我可以在任何智能手机、平板电脑或模拟器上进行测试。ngrok可以在这里下载,并且非常容易设置。通过一个命令,您可以创建到特定端口(例如8080)的隧道:

ngrok http 8080

尽管如此,我仍然不确定为什么在为我的android设备设置代理时全屏选项不起作用。

最新更新