Ejemplo n.º 1
0
        public void DelegarAccionDeNotificacion(MensajeSocio mensaje)
        {
            NotificationReceived?.Invoke(this, mensaje);
            var paginaSolicitarServicio = typeof(SolicitarServicio);
            var paginaActual            = App.Current.MainPage.Navigation.NavigationStack[App.Current.MainPage.Navigation.NavigationStack.Count - 1];

            if (paginaActual.GetType() == paginaSolicitarServicio)
            {
                var dtx      = paginaActual.BindingContext as Core.Lib.ViewModels.Socios.SolicitarServicioViewModel;
                var servicio = new SolicitudServicio
                {
                    Mensaje           = mensaje.MensajePrincipal,
                    ClaveTipoServicio = mensaje.ClaveTipoServicio,
                    FechaSolicitud    = mensaje.FechaSolicitud,
                    FolioSolicitud    = mensaje.FolioSolicitud,
                    IdCliente         = mensaje.IdCliente,
                    IdSolicitud       = mensaje.IdSolicitud,
                    IdTipoSolicitud   = mensaje.IdTipoSolicitud,
                    NombreCliente     = mensaje.NombreCliente,
                    NombreServicio    = mensaje.NombreServicio,
                    TipoServicio      = mensaje.TipoServicio,
                    Ubicacion         = mensaje.Ubicacion,
                    TipoNotificacion  = mensaje.TipoNotificacion
                };
                if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.ClienteSolicita))
                {
                    dtx.MostrarModalSolicitudCommand.Execute(servicio);
                }
                else if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.Alerta))
                {
                    dtx.AbrirModalAlertaCommand.Execute(mensaje.MensajePrincipal);
                }
            }
            else
            {
                MPS.Core.Lib.Helpers.Settings.Current.Solicitud = new SharedAPIModel.Socios.SolicitudServicio
                {
                    Mensaje           = mensaje.MensajePrincipal,
                    ClaveTipoServicio = mensaje.ClaveTipoServicio,
                    FechaSolicitud    = mensaje.FechaSolicitud,
                    FolioSolicitud    = mensaje.FolioSolicitud,
                    IdCliente         = mensaje.IdCliente,
                    IdSolicitud       = mensaje.IdSolicitud,
                    IdTipoSolicitud   = mensaje.IdTipoSolicitud,
                    NombreCliente     = mensaje.NombreCliente,
                    NombreServicio    = mensaje.NombreServicio,
                    TipoServicio      = mensaje.TipoServicio,
                    Ubicacion         = mensaje.Ubicacion,
                    TipoNotificacion  = mensaje.TipoNotificacion
                };
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Monitorea las notificaciones
        /// </summary>
        /// <seealso cref="https://documentation.onesignal.com/docs/xamarin-sdk#section--notificationreceived-"/>
        public void Init()
        {
            //Handle when your app starts
            OneSignal.Current.IdsAvailable(async(playerID, pushToken) =>
            {
                await operacionesBL.RegistrarDispositivoAsync(new Dispositivo
                {
                    Id              = Guid.Parse(Settings.Current.LoginInfo.Usr.Id),
                    Modelo          = Settings.Current.ModeloDispositivo,
                    SO              = Settings.Current.SO,
                    TipoDispositivo = Settings.Current.TipoDispositivo,
                    TipoUsuario     = (int)TipoUsuarioEnum.Socio,
                    VercionApp      = !string.IsNullOrEmpty(Settings.Current.VersionApp) ? Settings.Current.VersionApp : "0",
                    TimeZona        = "-28800",
                    PlayerId        = playerID
                });
            });

            //Inicializa la subscripción
            OneSignal.Current.StartInit(MPS.Core.Lib.Helpers.AppSettingsManager.Settings["PushNotificationAppID"])
            .InFocusDisplaying(Com.OneSignal.Abstractions.OSInFocusDisplayOption.Notification)
            .HandleNotificationReceived((notification) =>
            {
                var mensaje = new MensajeSocio(notification.payload.additionalData);
                DelegarAccionDeNotificacion(mensaje);
            })
            .HandleNotificationOpened((notification) =>
            {
                var mensaje = new MensajeSocio(notification.notification.payload.additionalData);
                MPS.Core.Lib.Helpers.Settings.Current.Solicitud = new SharedAPIModel.Socios.SolicitudServicio
                {
                    Mensaje           = mensaje.MensajePrincipal,
                    ClaveTipoServicio = mensaje.ClaveTipoServicio,
                    FechaSolicitud    = mensaje.FechaSolicitud,
                    FolioSolicitud    = mensaje.FolioSolicitud,
                    IdCliente         = mensaje.IdCliente,
                    IdSolicitud       = mensaje.IdSolicitud,
                    IdTipoSolicitud   = mensaje.IdTipoSolicitud,
                    NombreCliente     = mensaje.NombreCliente,
                    NombreServicio    = mensaje.NombreServicio,
                    TipoServicio      = mensaje.TipoServicio,
                    Ubicacion         = mensaje.Ubicacion,
                    TipoNotificacion  = mensaje.TipoNotificacion
                };
            })
            .HandleInAppMessageClicked((notification) =>
            {
            }).EndInit();
        }