ASP.NET Core 2.1 - PWA (запрос баннера будет отменен) - PullRequest
0 голосов
/ 13 ноября 2018

Попытка создать прогрессивное веб-приложение с использованием ASP.NET Core 2.1 с использованием Nuget: WebEssentials.AspNetCore.PWA.

Мой рабочий инструмент и манифест отображаются в Chrome Dev Tools, но когда я нажимаю «Добавить на домашний экран», ничего не происходит, кроме отображаемой ошибки на компьютере, а на телефоне баннер загрузки сверху застревает при загрузке.

Ошибка:

Сайт не может быть установлен: страница запросила баннер отменен

Похоже, я ничего не нашел по этой ошибке, так что, надеюсь, вы, ребята, поможете мне. Заранее спасибо.

ServiceWorker:

self.addEventListener('install', async event => {
    const cache = await caches.open(CACHE_NAME);
    cache.addAll(urlsToCache).catch(err => console.log('An error occured: ', err));
});

self.addEventListener('fetch', event => {
    const request = event.request;
    const url = new URL(request.URL);

    if (url.orgin === location.orgin) {
        event.respondWith(cacheFirst(request));
    } else {
        event.responseWith(networkFirst(request));
    }
    
});

async function cacheFirst(request) {
    const cachedResponse = await caches.match(request);
    return cachedResponse || fetch(request);
}

async function networkFirst(request) {
    const cache = await caches.open('wportal-dynamic-v1');

    try {
        const res = await fetch(request);
        cache.put(request, res.clone());
        return res;
    } catch (exception) {
        console.log('An error occured in networkFirst: ', exception);
        return await cache.match(request);
    }
}

1 Ответ

0 голосов
/ 13 ноября 2018

Нашли решение ..

var deferredPrompt = null;                

window.addEventListener('beforeinstallprompt', (e) => {
    e.preventDefault(); // Prevent Chrome 67 and earlier from automatically showing the prompt
    deferredPrompt = e;
});
<button onclick="deferredPrompt.prompt();">Click me to install pwa</button>
...