我有一个从头开始创建的 Laravel PWA。我正在使用 Laravel 的 Silviolleite PWA 插件。
我创建了一个服务 worker 。这是代码
> var staticCacheName = "pwa-v" + new Date().getTime(); var filesToCache
> = [
> '/offline.html',
> '/css/style.css',
> '/js/app.js', ];
>
> // Cache on install self.addEventListener("install", event => {
> this.skipWaiting();
> event.waitUntil(
> caches.open(staticCacheName)
> .then(cache => {
> return cache.addAll(filesToCache);
> })
> ) });
>
> // Clear cache on activate self.addEventListener('activate', event =>
> {
> event.waitUntil(
> caches.keys().then(cacheNames => {
> return Promise.all(
> cacheNames
> .filter(cacheName => (cacheName.startsWith("pwa-")))
> .filter(cacheName => (cacheName !== staticCacheName))
> .map(cacheName => caches.delete(cacheName))
> );
> })
> ); });
>
> // Serve from Cache self.addEventListener("fetch", event => {
> event.respondWith(
> caches.match(event.request)
> .then(response => {
> return response || fetch(event.request);
> })
> .catch(() => {
> return caches.match('/offline.html');
> })
> ) });
下面是在meta.blade.php中注册Service Worker的代码
<script type="text/javascript">
// Initialize the service worker
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/serviceworker.js', {
scope: '.'
}).then(function (registration) {
// Registration was successful
console.log('Laravel PWA: ServiceWorker registration successful with scope: ', registration.scope);
}, function (err) {
// registration failed :(
console.log('Laravel PWA: ServiceWorker registration failed: ', err);
});
}
</script>
我只想在 PWA 中显示弹出窗口(如果可能的话)。如果没有,则在移动网站上(在移动设备上的浏览器上打开时)。 弹出窗口提示用户删除当前的 PWA,并在有更新时打开网站并添加新的 PWA(添加到主屏幕)。 我怎样才能做到这一点?
最佳答案
如果您只想在 PWA 中显示弹出窗口,而不是在桌面或移动浏览器上显示弹出窗口,则需要查看您的 manifest.json 文件。
应该有一个名为“display”的属性需要设置为“standalone”
"display": "standalone"
确认设置正确,现在您可以通过执行以下操作来检查用户是否使用独立应用 (PWA):
if(navigator.standalone) {
alert('Thanks for using our PWA!')
} else {
alert('Please consider downloading our PWA.')
}
关于javascript - 如何仅在 PWA 中而不在网站中显示更新弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58564944/