Уведомления Asp Net Core Web Push
Основная цель состоит в том, чтобы добавить к сайту возможность отправлять веб-уведомления, чтобы вывести системное уведомление, чтобы предупредить пользователя, используя API-интерфейс Html5 Push и сервис-работников.
Не использовать SignalR, который может запускать клиентские скрипты во время открытия сайта. Также должна быть возможность отправлять уведомления, если сайт закрыт, как упоминалось здесь - это возможно.
Здесь хорошая статья о Push API и при условии хорошего example
Но он использует NodeJS в качестве сервера и web-push компонент для отправки запросов в службы уведомлений.
Невозможно найти примеры .NET. Я думаю об этих двух обходных решениях.
Во-первых, написать все с нуля на основе статьи Push API отметить о сервере:
Когда вы отправляете push-сообщение без данных, вы просто отправляете его на URL-адрес конечной точки, используя запрос HTTP POST. Однако, когда push-сообщение содержит данные, вам необходимо зашифровать его, что является довольно сложным процессом.
Во-вторых, следует использовать AspNetCore.NodeServices(статья об этом) для выполнения node.js script file
Есть ли еще решения? Может быть, существует готовое решение для этого?
После изучения темы
3 случая:
- HTTP + старые браузеры + IE все версии - использование SignalR + render Notification с помощью html + js
- HTTP + Современные браузеры (Chrome, Firefox, Safary, Opera?, Edge) с поддержкой API уведомлений. - Используйте SignalR и запускайте собственное уведомление обозревателя с помощью js, используя
new Notification('Message')
- HTTPS + Chrome (Mobile) с поддержкой Push API для запуска собственного уведомления для закрытого сайта с использованием сервис-работников. Мобильная версия Chrome может создавать уведомления только с помощью службы-службы.
Это стало сложно. Что не так?
Возможные решения:
В 1 и 2 случаях найдено этот репозиторий. Подумайте, что это хорошее решение для интерфейса с хорошей поддержкой резервного копирования.
За 3 случая все еще не знаю, что делать.
Текущее решение. Добавлено: 2017-11-22
- Поддержка автономных клиентов без подписки
- Нет мобильной поддержки
- Для Chrome v62 + перемещение всего проекта на https - ссылка
- Использование SignalR (0.2.0) для отправки push в онлайн-клиенты
- Используя pnotify v3 +, чтобы показать собственные уведомления desctop или html.
- Ожидание pnotify v4.0.0 (автор promises поддержка Chrome. Issue)
- Ожидание .NET Core 2.1 с SignalR 1.0 для перезаписи всего проекта на него.
Ответы
Ответ 1
Загруженная вами библиотека node была перенесена на С#: web-push-csharp.
Здесь приведен упрощенный пример использования с сайта:
var pushEndpoint = @"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6uDLB6....";
var p256dh = @"BKK18ZjtENC4jdhAAg9OfJacySQiDVcXMamy3SKKy7FwJcI5E0DKO9v4V2Pb8NnAPN4EVdmhO............";
var auth = @"fkJatBBEl...............";
var subject = @"mailto:[email protected]";
var publicKey = @"BDjASz8kkVBQJgWcD05uX3VxIs_gSHyuS023jnBoHBgUbg8zIJvTSQytR8MP4Z3-kzcGNVnM...............";
var privateKey = @"mryM-krWj_6IsIMGsd8wNFXGBxnx...............";
var subscription = new PushSubscription(pushEndpoint, p256dh, auth);
var vapidDetails = new VapidDetails(subject, publicKey, privateKey);
var webPushClient = new WebPushClient();
try
{
webPushClient.SendNotification(subscription, "payload", vapidDetails);
}
catch (WebPushException exception)
{
Console.WriteLine("Http STATUS code" + exception.StatusCode);
}