Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2022, 12:28
Интересующийся
Отправить личное сообщение для krakoss Посмотреть профиль Найти все сообщения от krakoss
 
Регистрация: 22.03.2013
Сообщений: 24

Разработка Service Workers Web Push
Добрый день
ищу специалиста готового реализовать отправку Web Push на любые устройства
Для сервиса, связывающего поставщика и покупателя на рынке металлолома и производственных отходов
созданного: C# MVC5, база данных MS SQL 2016. + JavaScript
Для настройки серверной части был использован материал из данной статьи:
https://blog.elmah.io/how-to-send-pu...-asp-net-core/
но после реализации есть недочеты
1. Не приходят сообщения на ПК в Google Chrome
2. Не верно настроена подписка на Web Push
3. Не приходят сообщения и нет возможности на них подписаться в iOS
Оплата по договоренности
Контакты
тел: +79227335515
емайл: krakoss@mail.ru
С уважением Юрий


Благодаря этой статье == Push-уведомления для Windows 10 в Google Chrome: нововведения
Удалось настроить WINDOWS 10 для получения пуш в браузере GOOGLE CHROME
windows 10 необходимо настроить Отдельно для того чтобы получать ПУШ на которые клиент подписался в браузере GOOGLE CHOME на своем ПК

Последний раз редактировалось krakoss, 08.08.2022 в 14:37.
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2022, 12:32
Интересующийся
Отправить личное сообщение для krakoss Посмотреть профиль Найти все сообщения от krakoss
 
Регистрация: 22.03.2013
Сообщений: 24

код существующего ServiceWorker.js
var num = 1; //habr.com/ru/company/2gis/blog/350034/ ||  qna.habr.com/q/616168

self.addEventListener('install', () => self.skipWaiting())

self.addEventListener('activate', () => {
    self.clients.matchAll({ type: 'window' }).then(windowClients => {
        for (const windowClient of windowClients) {
            // Force open pages to refresh, so that they have a chance to load the
            // fresh navigation response from the local dev server.
            windowClient.navigate(windowClient.url)
        }
    })
})



self.addEventListener('push', function (event) {
    if (!event.data) return;

    var serverData = event.data.json();
    if (serverData) {
        var title = serverData.companynameandtown;
        var options = {
            tag: 'renotify',
            renotify: true,
            body: ++num > 1 ? serverData.textmessage : serverData.textmessage,
            icon: serverData.logocompany,
            data: {
                dateOfArrival: Date.now(),
                redirectUrl: serverData.redirectUrl
            }
        };
        event.waitUntil(
            // Получить список клиентов для SW
            self.clients.matchAll().then(function (clientList) {
                // Проверяем, есть ли хотя бы один сфокусированный клиент.
                var focused = clientList.some(function (client) {
                    return client.focused;
                });
                var notificationMessage;
                if (focused) {
                    notificationMessage = 'Imperio! You\'re still here, thanks!';
                } else if (clientList.length > 0) {
                    notificationMessage = 'Imperio! You haven\'t closed the page, ' +
                        'click here to focus it!';
                } else {
                    notificationMessage = 'Imperio! You have closed the page, ' +
                        'click here to re-open it!';
                }
                self.registration.showNotification(title, options);
            })
        );
    }
    else
        console.log("Нет данных для отображения.");
});

// Регистрируем обработчик события 'notificationclick'.
self.addEventListener('notificationclick', function (event) {
    event.notification.close();
    var url = event.notification.data.redirectUrl;
    event.waitUntil(
        // Получаем список клиентов SW.
        self.clients.matchAll().then(function (clientList) {
            // Если есть хотя бы один клиент, фокусируем его.
            if (clientList.length > 0) {
                return clientList[0].focus();
            }
            // В противном случае открываем новую страницу.
            return self.clients.openWindow(url);
        })
    );
});

self.addEventListener('notificationclose', function (event) {
    //do something
    event.notification.close();
});


function arrayBufferToBase64(buffer) {
    var binary = '';
    var bytes = new Uint8Array(buffer);
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Push API (Web Push) + Service Worker 404NotFound Общие вопросы Javascript 0 08.08.2020 09:13
svg, canvas, web workers. Помогайте! Shitbox2 Общие вопросы Javascript 2 02.09.2018 02:38
Разработка web сайта nazgull30 Работа 0 31.01.2018 13:05
Как часто вы используете web workers? kolyan92 Общие вопросы Javascript 15 27.04.2014 14:32
Мастер-класс по Highload: Разработка крупного масштабируемого web 2.0 проекта с нуля [DiMA] Серверные языки и технологии 30 17.11.2010 20:57