Библиотечная функция Web push C#

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

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

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

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

 [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:[email protected]";
            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);
            }
}

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

 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-уведомлениях и уведомлениях.

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


person Damon    schedule 25.09.2018    source источник


Ответы (1)


Я была такая же проблема. Я закодировал свою аутентификацию в base 64, а p256dh использовал для создания подписки.

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

{ "notification": {"title": "заголовок сообщения", "body": "тело сообщения"} }

См. документацию... https://developer.mozilla.org/en-US/docs/Web/API/Notification/Notification

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

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

person Timbo McCool    schedule 12.07.2019