public async void EnviarNotificacion(Models.Usuarios_Disp[] dispositivos, decimal viajeId, string titulo, string mensaje, Accion accion) { // Inicializo los objetos para hacer el Request var client = new HttpClient(); var request = new HttpRequestMessage(); request.Method = HttpMethod.Post; // Arma la URL para enviar la notificación request.RequestUri = new Uri("https://fcm.googleapis.com/fcm/send"); request.Headers.TryAddWithoutValidation("Authorization", "key=" + Startup.Firebase.CloudMessagingKey); // Arma la lista de tokens var tokens = new List <string>(); foreach (var d in dispositivos) { tokens.Add(d.DispositivoId); } // Crea la instancia de la notificación Notificacion notificacion = new Notificacion(tokens.ToArray(), viajeId, titulo, mensaje, accion); // Adjunta el body var json = JsonConvert.SerializeObject(notificacion); Consola.Debug("json", json); request.Content = new StringContent(json); // Adjunta los headers request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // Envía el request al Firebase var response = await client.SendAsync(request); // Crea los datos del registro a insertar var r = new Models.Notificaciones { NotFchHr = DateTime.Now, ViajeId = viajeId, NotMensaje = titulo + " - " + mensaje + " - Data: " + json, NotRespuesta = response.Content.ReadAsStringAsync().Result, NotEst = response.StatusCode.ToString() }; // Uso una nueva conexión porque este método se llama asíncronamente using (var db2 = new VolquexDB()) // Creo un registro con cada token foreach (var disp in dispositivos) { r.UsuarioId = disp.UsuarioId; r.DispositivoId = disp.DispositivoId; // Hago el insert db2.InsertWithDecimalIdentity(r); } client.Dispose(); }
public decimal Insertar(Models.Notificaciones o) { return(db.InsertWithDecimalIdentity(o)); }