本文介绍了ASP NET核心Web推送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

主要目标是向站点添加发送Web通知的功能,以弹出系统通知,提醒使用HTML5推送API的用户和服务工作者。不使用只能在站点打开时运行客户端脚本的SignalR。还应能够在站点关闭时发送通知,如here所述-这是可能的。

Here是推流接口的好文章,提供了好的example但它使用NodeJS作为服务器,使用web-push组件向通知服务发送请求。

找不到任何.NET示例。我想了想这两个变通办法。

首先是根据推流API关于服务器的文章note从头开始写:

第二个是使用AspNetCore.NodeServices(article关于它)执行node.js脚本文件

是否有更多解决方案?是否存在此问题的现成解决方案?

课题调研后

3例:

  1. HTTP+旧浏览器+IE所有版本-使用SignalR+Render Notification(使用HTML+js)
  2. 支持通知API的HTTP+现代浏览器(Chrome、Firefox、Safary、Opera?、Edge)-使用SignalR并使用new Notification('Message')使用js触发本机浏览器通知
  3. HTTPS+Chrome(移动端),支持推流接口,通过服务工作者触发关闭站点本机通知。移动版的Chrome只能通过使用服务工作者创建通知。

它变得太复杂了。出什么问题了?

可能的解决方案:

对于1和2个案例,找到this存储库。我认为这是一个很好的前端解决方案,有很好的后备支持。有3例仍然不知道该怎么办。

当前解决方案。新增:2017-11-22

  • 无离线客户端通知支持
  • 无移动支持
  • 对于Chrome v62+将所有项目移动到https-link
  • 使用SignalR(0.2.0)向在线客户端发送推流
  • 使用pnotifyv3+显示本机Downtop或HTML通知。
  • 等待pnotifyv4.0.0(作者承诺提供Chrome移动支持。Issue)
  • 正在等待带有SignalR 1.0的.NET Core 2.1将整个项目重写到其中。

推荐答案

您提到的节点库已经移植到c#:web-push-csharp

以下是直接取自其网站的简化使用示例:

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);
}

这篇关于ASP NET核心Web推送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-19 02:24