Ionic framework 无法注册服务工作者
我的应用程序在ionic 4下。 我安装了pwa部件,包括:Ionic framework 无法注册服务工作者,ionic-framework,progressive-web-apps,ionic4,Ionic Framework,Progressive Web Apps,Ionic4,我的应用程序在ionic 4下。 我安装了pwa部件,包括: ng add @angular/pwa --project app 然后我使用:ionic build--prod构建 并通过以下方式部署到firebase:firebase部署 但我有两个问题: 1) 当我从android手机浏览应用程序时,“添加到屏幕”的横幅不会显示。 即使根url上有以下代码: showBtn: boolean = false; deferredPrompt; constructor(private
ng add @angular/pwa --project app
然后我使用:ionic build--prod构建
并通过以下方式部署到firebase:firebase部署
但我有两个问题:
1) 当我从android手机浏览应用程序时,“添加到屏幕”的横幅不会显示。
即使根url上有以下代码:
showBtn: boolean = false;
deferredPrompt;
constructor(private modalController: ModalController, public authUser: AuthUserService, private router: Router){}
ionViewWillEnter(){
window.addEventListener('beforeinstallprompt', (e) => {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
// Stash the event so it can be triggered later on the button event.
this.deferredPrompt = e;
// Update UI by showing a button to notify the user they can add to home screen
this.showBtn = true;
});
//button click event to show the promt
window.addEventListener('appinstalled', (event) => {
alert('installed');
});
if (window.matchMedia('(display-mode: standalone)').matches) {
alert('display-mode is standalone');
}
}
2) 当我启动lighthouse audit时,我收到以下警告:
Does not register a service worker that controls page and start_url
我尝试过卸载、重新安装、重建所有东西,但没有任何效果。
在ionic docs上,我找不到任何解决此问题的线索。许多天之后,我能够使其正常工作
首先,我将以下代码段添加到firebase.json文件的hosting属性中:
{
"source": "ngsw-worker.js",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache"
}
]
}
然后在我的index.html中添加此脚本:
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('ngsw-worker.js')
.then(() => console.log('service worker installed'))
.catch(err => console.error('Error', err));
}
</script>
if(导航器中的“serviceWorker”){
navigator.serviceWorker.register('ngsw-worker.js'))
.然后(()=>console.log('安装了服务工作者'))
.catch(err=>console.error('error',err));
}
现在它工作了 过了许多天,我终于可以让它工作了
首先,我将以下代码段添加到firebase.json文件的hosting属性中:
{
"source": "ngsw-worker.js",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache"
}
]
}
然后在我的index.html中添加此脚本:
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('ngsw-worker.js')
.then(() => console.log('service worker installed'))
.catch(err => console.error('Error', err));
}
</script>
if(导航器中的“serviceWorker”){
navigator.serviceWorker.register('ngsw-worker.js'))
.然后(()=>console.log('安装了服务工作者'))
.catch(err=>console.error('error',err));
}
现在它工作了