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 }; } }
/// <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(); }