Vaadin 14 - 未创建服务工作者和清单
Vaadin 14 - Service worker and manifest is not created
我目前正在 Vaadin14 中开发 PWA。我目前的目标是在浏览器中显示安装 window,但我就是无法获取它。
我尝试使用 https://vaadin.com/pwa/learn/installing-applications 作为指南。我有一个有效的证书,并在浏览器中为应用程序使用 HTTPS 连接。使用了以下 @PWA
注释:
@Route("main")
@PWA(name = "Test", shortName = "Test", backgroundColor = "#227aef", themeColor = "#227aef")
public class MainView extends AppLayout implements RouterLayout, BeforeEnterObserver {
我用 Chrome 和 Firefox 试过了,都没有显示安装 window。
提到Vaadin自己创建了Web App Manifest和ServiceWorker(https://vaadin.com/docs/v14/flow/pwa/tutorial-pwa-pwa-with-flow.html)
Vaadin server automatically serves the web manifest, service worker,
icons, offline page, and installation prompt, and adds the necessary
additions to the application headers.
虽然在我的项目构建后,我无法在任何地方找到这些文件。它们存储在哪里?
我在这里错过了什么?
编辑:Firefox 具有以下配置,我将其设置为 true
。
Service workers can be unavailable if the dom.serviceWorkers.enable
preference is set to false in about:config.
Edit2:我可以验证 Firefox 不会为我的应用程序启动 Service-Worker。
为了在移动设备上显示 A2HS(添加到主屏幕)对话框,您应该有一个 运行 service worker 和一个正确配置的网络清单文件。
在桌面浏览器的情况下,您不会看到 window 弹出窗口(除非 vaadin 本身为您打开一个,但我没有这项技术),而是浏览器地址栏中的 (+) 图标(此处为 Chrome):
您应该首先查看是否正确生成了 service worker 和 web manifest。也许它们在 /bin 文件夹中,有点隐藏在项目结构中。
我终于解决了这个问题。肯定花了一些时间。问题是我的自定义 VaadinServlet 无法识别我的 @PWA 注释,因此我必须手动添加它。
public class VaadinFlowServlet extends com.vaadin.flow.server.VaadinServlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
var registry =
ApplicationRouteRegistry.getInstance(servletConfig.getServletContext());
registry.setPwaConfigurationClass(LoginView.class); // <-- contains @PWA
super.init(servletConfig);
}
我目前正在 Vaadin14 中开发 PWA。我目前的目标是在浏览器中显示安装 window,但我就是无法获取它。
我尝试使用 https://vaadin.com/pwa/learn/installing-applications 作为指南。我有一个有效的证书,并在浏览器中为应用程序使用 HTTPS 连接。使用了以下 @PWA
注释:
@Route("main")
@PWA(name = "Test", shortName = "Test", backgroundColor = "#227aef", themeColor = "#227aef")
public class MainView extends AppLayout implements RouterLayout, BeforeEnterObserver {
我用 Chrome 和 Firefox 试过了,都没有显示安装 window。
提到Vaadin自己创建了Web App Manifest和ServiceWorker(https://vaadin.com/docs/v14/flow/pwa/tutorial-pwa-pwa-with-flow.html)
Vaadin server automatically serves the web manifest, service worker, icons, offline page, and installation prompt, and adds the necessary additions to the application headers.
虽然在我的项目构建后,我无法在任何地方找到这些文件。它们存储在哪里?
我在这里错过了什么?
编辑:Firefox 具有以下配置,我将其设置为 true
。
Service workers can be unavailable if the dom.serviceWorkers.enable preference is set to false in about:config.
Edit2:我可以验证 Firefox 不会为我的应用程序启动 Service-Worker。
为了在移动设备上显示 A2HS(添加到主屏幕)对话框,您应该有一个 运行 service worker 和一个正确配置的网络清单文件。
在桌面浏览器的情况下,您不会看到 window 弹出窗口(除非 vaadin 本身为您打开一个,但我没有这项技术),而是浏览器地址栏中的 (+) 图标(此处为 Chrome):
您应该首先查看是否正确生成了 service worker 和 web manifest。也许它们在 /bin 文件夹中,有点隐藏在项目结构中。
我终于解决了这个问题。肯定花了一些时间。问题是我的自定义 VaadinServlet 无法识别我的 @PWA 注释,因此我必须手动添加它。
public class VaadinFlowServlet extends com.vaadin.flow.server.VaadinServlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
var registry =
ApplicationRouteRegistry.getInstance(servletConfig.getServletContext());
registry.setPwaConfigurationClass(LoginView.class); // <-- contains @PWA
super.init(servletConfig);
}