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); }
public int GetSubscriptionCount() { return(PushSubsciptions.GetSubscriptionCount()); }