Notificaciones Locales [Xamarin.Forms]


Hace algunas semanas atrás tuve la necesidad de implementar Notificaciones Locales para un proyecto de iOS en una aplicación desarrollada en Xamarin.Forms, y después de indagar me encontré con un Plugin que facilita esto.

Es por eso que el día de hoy voy a demostrar cómo se pueden crear notificaciones locales en nuestras aplicaciones de Xamarin.Forms.

Antes de proceder, recordemos que la idea de utilizar notificaciones locales es evitar el uso de Notificaciones Push en momentos innecesarios. Ya contemplando esto, empecemos.

Generemos una solución nueva:

1

2

Una vez con la solución creada, agreguemos el paquete NuGet, hagamos clic con el botón derecho sobre la solución y seleccionemos “Manage NuGet Packages for Solution …”.

3

Busquemos “Xam.Plugins.Notifier” e instalemoslo

4

Seleccionemos todos los proyectos y hagamos clic en el botón “Install”.

5

XAML

En nuestro archivo MainPage.xaml generemos un botón que servirá para disparar la notificación, a través de la propiedad Clicked, en donde le daremos por nombre al método Launch_Notification.

Button x:Name=”Notificationbtn”
BackgroundColor=”Transparent”
Text=”Notificacion”
Clicked=”Launch_Notification”

Código

En el método Launch_Notification utilizaremos CrossLocalNotifications.Current.Show, al cual le asignaremos un título y un cuerpo para la notificación.

public void Launch_Notification(object sender, EventArgs e)
{
 CrossLocalNotifications.Current.Show("Titulo", "Ejemplo notificacion VG");
}

Resultado

Development GIF - Find & Share on GIPHY

Para poder mostrar las notificaciones en dispositivos iOS 8+ se debe obtener el permiso del usuario para permitir desplegar las notificaciones.

Para hacerlo, incluyamos el siguiente código en el método FinishedLaunching () del archivo AppDelegate:


 if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // Ask the user for permission to get notifications on iOS 10.0+
                UNUserNotificationCenter.Current.RequestAuthorization(
                    UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                    (approved, error) => { });

                // Watch for notifications while app is active
                UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                // Ask the user for permission to get notifications on iOS 8.0+
                var settings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>

Para dispositivos con iOS 10.0+ se debe especificar cómo se manejan las notificaciones cuando la aplicación está activa, para esto hay que crear una clase de delegado que subclasifique UNUserNotificationCenterDelegate y lo asigne a UNUserNotificationCenter.

 public class UserNotificationCenterDelegate : UNUserNotificationCenterDelegate
    {
        public override void WillPresentNotification (UNUserNotificationCenter center, UNNotification notification, Action completionHandler)
        {
            completionHandler(UNNotificationPresentationOptions.Alert);
        }
    }

Ya por ultimo es necesario habilitar el poder recibir notificaciones remotas que se encuentra en el archivo Info.plist, en la pestaña de capacidades (capabilities):

6

Resultado:

Ios GIF - Find & Share on GIPHY

Para obtener más detalles, consulten la muestra incluida en este repositorio y/o consulten la documentación del framework de notificaciones de usuario de iOS 10 de Xamarin.

Descarga el código completo de este ejemplo desde mi GitHub.

GitIronMan

Hasta la próxima!

Más información: Xam.Plugins.Notifier

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s