Web推送C#库函数
Web push C# library function
我目前正在处理网络推送通知,正处于使用网络推送库发送通知的最后阶段。
我正在使用 C# 网络推送库 here。但是,我在页面上或不在页面上时都没有看到通知。
我在下面附上我的代码:
我在我的商店订阅方法中编写了代码,所以它可能是问题之一。
[HttpPost]
public void StoreSubscription(string [] publicKey, string [] auth, string notificationEndPoint )
{
var pushEndpoint = notificationEndPoint;
var pushAuth = auth[0].ToString();
var pushP256DH = publicKey[0].ToString();
var subject = "mailTo:hhhhhhh@gmail.com";
var uPublicKey = "yyzzxx";
var privateKey = "xxyyzz";
System.IO.File.WriteAllText(@"\Desktop\Subscription.txt", pushEndpoint);
var subscription = new PushSubscription(pushEndpoint, pushP256DH, pushAuth);
var gcmAPIKey = "AAAA";
var vapidDetails = new VapidDetails(subject, uPublicKey, privateKey);
var webPushClient = new WebPushClient();
try
{
webPushClient.SetGCMAPIKey(gcmAPIKey);
webPushClient.SendNotification(subscription, "payload", gcmAPIKey);
}
catch (WebPushException exception)
{
Console.WriteLine("HTTP status Code:" + exception.StatusCode);
}
}
而我的 service worker 代码如下用于处理推送:
self.addEventListener('push', function (event) {
debugger
var body;
if (event.data) {
body = event.data.text();
} else {
body = 'Push message no payload';
}
var options = {
body: body,/*'This message was generated from a push'*/
icon: '/Images/noun_Pushing_1823359.png',
vibrate: [100, 200, 100, 200, 400],
data: {
dateOfArrival: Date.now(),
primaryKey: '2'
},
actions: [
{
action: 'explore', title: 'Explore this new world',
icon: '/Images/noun_Check Mark_4870.png'
},
{
action: 'close', title: 'Close',
icon: '/Images/noun_Close_887590.png'
},
]
};
event.waitUntil(
self.registration.showNotification('Push Notification', options)
);
});
我已经坚持了将近很长时间了,对 promise、service worker、push 和 notification api 还很陌生。
该函数被命中并且没有抛出任何异常。另外,当我在服务工作者中放置一个调试器时,它没有被击中,所以显然推送没有得到 handles.I 这可能是完全错误的。
我遇到了同样的问题。我使用 64 位编码我的身份验证和 p256dh 用于创建订阅。
如果没有异常,则可能意味着 JSON 有效负载有效 JSON 但服务工作者的格式错误。我将我的负载更改为我的服务人员 (Angular) 的有效 JSON
对象:
{ "notification": {"title": "message title", "body": "message body"} }
请查看文档...https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification
发送了通知并点击了 service worker。
我使用的是 Vapid Details 而不是 GCMApiKey。
我目前正在处理网络推送通知,正处于使用网络推送库发送通知的最后阶段。
我正在使用 C# 网络推送库 here。但是,我在页面上或不在页面上时都没有看到通知。
我在下面附上我的代码:
我在我的商店订阅方法中编写了代码,所以它可能是问题之一。
[HttpPost]
public void StoreSubscription(string [] publicKey, string [] auth, string notificationEndPoint )
{
var pushEndpoint = notificationEndPoint;
var pushAuth = auth[0].ToString();
var pushP256DH = publicKey[0].ToString();
var subject = "mailTo:hhhhhhh@gmail.com";
var uPublicKey = "yyzzxx";
var privateKey = "xxyyzz";
System.IO.File.WriteAllText(@"\Desktop\Subscription.txt", pushEndpoint);
var subscription = new PushSubscription(pushEndpoint, pushP256DH, pushAuth);
var gcmAPIKey = "AAAA";
var vapidDetails = new VapidDetails(subject, uPublicKey, privateKey);
var webPushClient = new WebPushClient();
try
{
webPushClient.SetGCMAPIKey(gcmAPIKey);
webPushClient.SendNotification(subscription, "payload", gcmAPIKey);
}
catch (WebPushException exception)
{
Console.WriteLine("HTTP status Code:" + exception.StatusCode);
}
}
而我的 service worker 代码如下用于处理推送:
self.addEventListener('push', function (event) {
debugger
var body;
if (event.data) {
body = event.data.text();
} else {
body = 'Push message no payload';
}
var options = {
body: body,/*'This message was generated from a push'*/
icon: '/Images/noun_Pushing_1823359.png',
vibrate: [100, 200, 100, 200, 400],
data: {
dateOfArrival: Date.now(),
primaryKey: '2'
},
actions: [
{
action: 'explore', title: 'Explore this new world',
icon: '/Images/noun_Check Mark_4870.png'
},
{
action: 'close', title: 'Close',
icon: '/Images/noun_Close_887590.png'
},
]
};
event.waitUntil(
self.registration.showNotification('Push Notification', options)
);
});
我已经坚持了将近很长时间了,对 promise、service worker、push 和 notification api 还很陌生。
该函数被命中并且没有抛出任何异常。另外,当我在服务工作者中放置一个调试器时,它没有被击中,所以显然推送没有得到 handles.I 这可能是完全错误的。
我遇到了同样的问题。我使用 64 位编码我的身份验证和 p256dh 用于创建订阅。
如果没有异常,则可能意味着 JSON 有效负载有效 JSON 但服务工作者的格式错误。我将我的负载更改为我的服务人员 (Angular) 的有效 JSON
对象:
{ "notification": {"title": "message title", "body": "message body"} }
请查看文档...https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification
发送了通知并点击了 service worker。
我使用的是 Vapid Details 而不是 GCMApiKey。