public async Task SendNotificationAsync(PushSubscriptionUser subscription, WebPushNotificationMessages message, CancellationToken cancellationToken) { var vapidDetails = new VapidDetails(this._options.Subject, this._options.PublicKey, this._options.PrivateKey); PushSubscription pushSubscription = new WebPush.PushSubscription(subscription.Endpoint, subscription.P256DH, subscription.Auth); //var payload = System.Text.Json.JsonSerializer.Serialize(message); var settings = new JsonSerializerSettings(); settings.ContractResolver = new DefaultContractResolver { NamingStrategy = new JsonLowerCaseNamingStrategy() };; var payload = JsonConvert.SerializeObject(message, settings); try { await _pushClient.SendNotificationAsync(pushSubscription, payload, vapidDetails); } catch (WebPushException ex) { { using (IStoreRepositoryAccessor pushstoreAccessor = _pushStoreAccessorProvider.GetStoreRepositoryAccessor()) { subscription.DateEndTime = DateTime.Now; await pushstoreAccessor.StoreRepository.UpdateSubscriptionAsync(subscription); } _logger?.LogInformation("Subscription has expired or is no longer valid and has been removed."); } Console.Error.WriteLine("(WebPush) Error sending push notification: " + ex.Message); } }
/// <summary> /// Eliminazione della sottoscrizione dal database /// </summary> /// <param name="endpoint"></param> /// <returns></returns> public async Task RemoveSubscriptionAsync(string endpoint) { PushSubscriptionUser subscription = await _context.PushSubscriptionUser .Where(o => o.Endpoint == endpoint) .FirstOrDefaultAsync(); _context.PushSubscriptionUser.Remove(subscription); await _context.SaveChangesAsync(); }
//funzioni sspeciali gestite direttamente dalla Api chiamata o qui ma sul context richiesto public async Task RemoveSubscriptionByEndpointAsync(string endpoint) { string endpointURI = endpoint.Replace("%2F", @"/");// HttpUtility.UrlDecode(endpoint); PushSubscriptionUser subscription = await _context.PushSubscriptionUser .Where(o => o.Endpoint == endpointURI) .FirstOrDefaultAsync(); await _subscriptionsStore.Delete(subscription); }
public Task SendNotificationAsync(PushSubscriptionUser subscription, WebPushNotificationMessages message) { return(SendNotificationAsync(subscription, message, CancellationToken.None)); }
public async Task RemoveSubscriptionAsync(PushSubscriptionUser subscription) => await _subscriptionsStore.Delete(subscription);
public async Task UpdateSubscriptionAsync(PushSubscriptionUser subscription) => await _subscriptionsStore.Update(subscription);
public async Task InsertSubscriptionAsync(PushSubscriptionUser subscription) => await _subscriptionsStore.Insert(subscription);
public static void Initialize(SqlServerDBContext context) { // Look for any students. if (context.PushTopics.Any()) { //If database is over return no data. return; // DB has been seeded } var _pushTopics = new PushTopics[] { new PushTopics { TopicFilters = "Lead", Actived = true, TimeAfterToSend = new TimeSpan(00, 00, 30) }, new PushTopics { TopicFilters = "Activity", Actived = true, TimeAfterToSend = new TimeSpan(00, 00, 30) }, new PushTopics { TopicFilters = "ActionCRM", Actived = true, TimeAfterToSend = new TimeSpan(00, 00, 30) }, new PushTopics { TopicFilters = "Other", Actived = true, TimeAfterToSend = new TimeSpan(00, 00, 30) }, }; foreach (PushTopics e in _pushTopics) { context.PushTopics.Add(e); } context.SaveChanges(); var _pushMessageTypes = new PushMessageType[] { new PushMessageType { Name = "Tile", Description = "Tile Message" }, new PushMessageType { Name = "Toast", Description = "Toast Message" }, new PushMessageType { Name = "Push", Description = "Push Message" }, new PushMessageType { Name = "Normal", Description = "Normal Message" }, new PushMessageType { Name = "Lead", Description = "Lead Message" } }; foreach (PushMessageType e in _pushMessageTypes) { context.PushMessageType.Add(e); } context.SaveChanges(); var _pushMessageUrgencys = new PushMessageUrgency[] { new PushMessageUrgency { Name = "Very Low", Description = "Battery full max power" }, new PushMessageUrgency { Name = "Low", Description = "Battery semi full" }, new PushMessageUrgency { Name = "Normal", Description = "Battery normal" }, new PushMessageUrgency { Name = "Medium", Description = "Battery medium no power full" }, new PushMessageUrgency { Name = "High", Description = "Battery low no power" } }; foreach (PushMessageUrgency e in _pushMessageUrgencys) { context.PushMessageUrgency.Add(e); } context.SaveChanges(); var _pushSubscriptionUsers = new PushSubscriptionUser[] { new PushSubscriptionUser { UserId = "Max", Endpoint = "http://fcm.google.com/sjfasfjfjaf", P256DH = "alfalsfasfklsflafll", Auth = "falflafafaklflasfafla", CreatedTime = DateTime.UtcNow }, new PushSubscriptionUser { UserId = "4022", Endpoint = "http://fcm.google.com/sjfasfjfjaf", P256DH = "alfalsfasfklsflafll", Auth = "falflafafaklflasfafla", CreatedTime = DateTime.UtcNow }, new PushSubscriptionUser { UserId = "4023", Endpoint = "http://fcm.google.com/sjfasfjfjaf", P256DH = "alfalsfasfklsflafll", Auth = "falflafafaklflasfafla", CreatedTime = DateTime.UtcNow }, new PushSubscriptionUser { UserId = "4024", Endpoint = "http://fcm.google.com/sjfasfjfjaf", P256DH = "alfalsfasfklsflafll", Auth = "falflafafaklflasfafla", CreatedTime = DateTime.UtcNow } }; foreach (PushSubscriptionUser c in _pushSubscriptionUsers) { context.PushSubscriptionUser.Add(c); } context.SaveChanges(); var _pushSubscriptionTopics = new PushSubscriptionTopic[] { new PushSubscriptionTopic { Topic = _pushTopics[0], Subscription = _pushSubscriptionUsers[0] }, new PushSubscriptionTopic { Topic = _pushTopics[0], Subscription = _pushSubscriptionUsers[1] }, new PushSubscriptionTopic { Topic = _pushTopics[1], Subscription = _pushSubscriptionUsers[1] }, new PushSubscriptionTopic { Topic = _pushTopics[2], Subscription = _pushSubscriptionUsers[0] } }; foreach (PushSubscriptionTopic s in _pushSubscriptionTopics) { context.PushSubscriptionTopic.Add(s); } context.SaveChanges(); var _pushUsers = new PushNotificationUser[] { new PushNotificationUser { UserId = "4022", SubscriptionId = 2, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, new PushNotificationUser { UserId = "4022", SubscriptionId = 2, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, new PushNotificationUser { UserId = "Max", SubscriptionId = 1, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, new PushNotificationUser { UserId = "Max", SubscriptionId = 1, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, new PushNotificationUser { UserId = "4023", SubscriptionId = 3, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, new PushNotificationUser { UserId = "4024", SubscriptionId = 4, NotificationMessage = "{message: ''}", CreatedTime = DateTime.Now }, }; foreach (PushNotificationUser e in _pushUsers) { context.PushNotificationUser.Add(e); } context.SaveChanges(); }
/// <summary> /// Inserimento sottiscrizione nel database /// </summary> /// <param name="subscription"></param> /// <returns></returns> public async Task InsertSubscriptionsAsync(PushSubscriptionUser subscription) { _context.PushSubscriptionUser.Add(subscription); await _context.SaveChangesAsync(); }