Asp Net Core Web Push Notifications

L'objectif principal est d'ajouter à la capacité du site d'envoyer une notification web pour faire apparaître une notification système pour alerter l'utilisateur en utilisant HTML5 Push API et les travailleurs de service. Ne pas utiliser SignalR qui ne peut exécuter que des scripts client pendant que le site est ouvert. Il devrait également être possible d'envoyer une notification si le site est fermé, comme indiqué ici - c'est possible.

Ici est un bon article sur Push API et exemple Mais il utilise NodeJS comme serveur et web-poussoir composant pour envoyer des demandes aux services de notification.

impossible de trouver des exemples .NET. Je pense aux deux solutions de rechange.

tout D'abord, est d'écrire tout à partir de zéro basé sur L'article Push API remarque: A propos du serveur:

lorsque vous envoyez un message push sans données, vous l'envoyez simplement à L'URL du point final en utilisant une requête HTTP POST. Cependant, lorsque le message push contient des données, vous devez les chiffrer., ce qui est un processus complexe.

Seconde, est d'utiliser AspNetCore.NodeServices ( article à ce sujet) pour exécuter le nœud.js fichier de script

existe-t-il des solutions? Peut-être Existe-t-il une solution prête pour cela?

Après avoir soumis la recherche

3 cas:

  1. HTTP + anciens navigateurs + IE toutes les versions-utilisez SignalR + render Notification en utilisant html+js
  2. navigateurs HTTP + modernes (Chrome, Firefox, Safary, De L'Opéra?, Edge) avec le soutien de L'API de Notification. - Utiliser SignalR et déclencher la notification du navigateur natif avec js en utilisant new Notification('Message')
  3. HTTPS + Chrome (Mobile) avec prise en charge de L'API Push pour déclencher la notification native pour un site fermé en utilisant des travailleurs de service. La version Mobile de Chrome ne peut créer des notifications qu'en utilisant service-worker.

C'est devenu compliqué. Quel est le problème?

Possible solutions:

pour 1 et 2 cas trouvés référentiel. Je pense que c'est une bonne solution de frontend avec un bon support de repli. Pour 3 cas je ne sais toujours pas quoi faire.

solution actuelle. Ajouté le: 2017-11-22

  • Pas de clients en mode hors connexion prise en charge des notifications
  • pas de support mobile
  • Pour Chrome v62+ le déplacement de toutes les projet https - lien
  • SignalR (0.2.0) pour l'envoi de push pour les clients en ligne
  • en utilisant pnotify v3+ pour afficher les notifications natives desctop ou html.
  • en Attente pour pnotify v4.0.0 (l'auteur promet le support de chrome mobile. Problème)
  • en attente de .net Core 2.1 avec SignalR 1.0 pour réécrire tout le projet à elle.
21
demandé sur aleha 2017-02-17 20:55:49

1 réponses

la bibliothèque de noeuds que vous mentionnez a été portée en c#:Web-push-csharp.

voici un exemple d'usage simplifié tiré directement de leur site:

var pushEndpoint = @"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6uDLB6....";
var p256dh = @"BKK18ZjtENC4jdhAAg9OfJacySQiDVcXMamy3SKKy7FwJcI5E0DKO9v4V2Pb8NnAPN4EVdmhO............";
var auth = @"fkJatBBEl...............";

var subject = @"mailto:example@example.com";
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);
}
5
répondu Ángela 2017-12-03 10:21:26