Пример #1
0
        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();
        }
Пример #2
0
 public decimal Insertar(Models.Notificaciones o)
 {
     return(db.InsertWithDecimalIdentity(o));
 }