Функция Web push C # библиотеки - PullRequest
       47

Функция Web push C # библиотеки

0 голосов
/ 25 сентября 2018

В настоящее время я работаю над веб-push-уведомлениями и на последней стадии использования веб-push-библиотек для отправки уведомления.

Я использую C # web-push-библиотеку здесь .Тем не менее, я не вижу уведомления, когда на странице или когда не на нем.

Я прилагаю свой код ниже:

Я написал код в моем методе подписки магазина, чтобы он мог бытьодна из проблем.

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

И мой код работника службы для обработки push-кода выглядит следующим образом:

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

Я застрял на этом почти долгое время и оченьновый, чтобы обещать, работник службы и push и уведомление apis.

функция получает удар и не вызывает никаких исключений.Кроме того, когда я помещаю отладчик в сервисный работник, он не попадает в цель, так что очевидно, что push не получает указатели. Я могу быть совершенно неправ в этом.

1 Ответ

0 голосов
/ 12 июля 2019

У меня была такая же проблема.У меня base 64 закодировал мой auth и p256dh использовал для создания подписки.

Если исключений нет, это может означать, что полезная нагрузка JSON является допустимой JSON, но в неправильном формате для работника службы.Я изменил свою полезную нагрузку на действительный объект JSON для моего работника службы (Angular):

{"messages": {"title": "title сообщения", "body": "body message"}}

Пожалуйста, смотрите документы ... https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification

Отправил уведомление и ударил работника сервиса.

Я использовал Vapid Details, а не GCMApiKey.

...