public async Task SendNotificationsAsync(string title, string message, string clickUrl)
        {
            var payload = JsonConvert.SerializeObject(new { title, message, url = clickUrl });

            var vapidDetails  = new VapidDetails("mailto:[email protected]", vapidPublicKey, vapidPrivateKey);
            var webPushClient = new WebPushClient();

            foreach (var subscription in PushSubsciptions.GetSubscriptions())
            {
                var pushSubscription = new PushSubscription(subscription.PushEndpoint, subscription.PushP256DH, subscription.PushAuth);
                try
                {
                    await webPushClient.SendNotificationAsync(pushSubscription, payload, vapidDetails);
                }
                catch (WebPushException e)
                {
                    switch (e.StatusCode)
                    {
                    case HttpStatusCode.NotFound:
                    case HttpStatusCode.Gone:
                        PushSubsciptions.RemoveSubscription(subscription);
                        break;
                    }
                }
            }
        }
        public bool Add(AddPushSubscriptionRequest request)
        {
            var tokenParts = request.Token.Split(':');

            ValidateToken(tokenParts[0], tokenParts[1]);

            PushSubsciptions.CreateSubscription(request.PushEndpoint, request.PushP256DH, request.PushAuth);

            return(true);
        }
示例#3
0
 public int GetSubscriptionCount()
 {
     return(PushSubsciptions.GetSubscriptionCount());
 }