更新已安装的PWA目标URL(或使用新的目标URL重新安装应用程序)



我有一个带angular-i18n的国际化angular web应用程序。有了这个系统,angular为每种语言创建了一个专用的应用程序。

为了在web服务器上提供多种语言,我为每种语言(mywebsite.com/en、mywebsitecom/de、mywebite.com/fr等(提供一个url,每个url都指向与该语言对应的应用程序。

该应用程序可以安装在设备上(带角度pwa(。

问题如下:

当用户更改语言时,他会被重定向到另一个url(例如从mywebsite.com/en到mywebsite.com/sr(。对于已安装的应用程序,如果他离开并重新启动它,语言更改将不会持续。还有另一个问题:与安装的应用程序不在同一个url上会导致显示浏览器栏,这在安装的pwa中是不可取的。

为了使更改持续存在,应用程序必须更改其目标url,或者在用户更改语言时重新安装自己。但我不知道该怎么做。。。

如何解决这个问题?

--

编辑:

我发现这个问题:将更改应用于已安装的PWA(不同的基本URL(

我的问题很相似。

  1. 更新到Angular 8,因为这修复了共享缓存的错误(为缓存添加了lang前缀(。

  2. 在构建后修改文件时要小心,例如更改html lang="quot;因为这打破了hashes。

3.您可以通过转到/nsw/state来检查一些调试信息。如果你从子目录运行你的应用程序(如果你使用i18n,你可能会这样做(。这只能从原点的根访问,如ngsw-worker.js:

if (requestUrlObj.path === '/ngsw/state') {
// Allow the debugger to handle the request, but don't affect SW state in any other way.
event.respondWith(this.debugger.handleFetch(req));
return;
}

因此,如果您希望它对/fr/起作用,请将'/ngsw/state'替换为'/fr/ngsw/state'

最新更新