Tutorial: uso de notificaciones locales en Xamarin.iOS
En esta sección se explica cómo usar notificaciones locales en una aplicación de Xamarin.iOS. Se mostrarán los conceptos básicos de la creación y publicación de notificaciones que mostrará una alerta cuando la aplicación la reciba.
Importante
La información de esta sección pertenece a iOS 9 y versiones anteriores, se ha dejado aquí para admitir versiones anteriores de iOS. Para iOS 10 y versiones posteriores, consulte la guía del marco de notificaciones de usuario para admitir notificaciones locales y remotas en un dispositivo iOS.
Tutorial
Permita crear una aplicación sencilla que muestre las notificaciones locales en acción. Esta aplicación tendrá un solo botón. Al hacer clic en el botón, se creará una notificación local. Una vez transcurrido el período de tiempo especificado, veremos que aparece la notificación.
En Visual Studio para Mac, cree una nueva solución de iOS de vista única y llámela
Notifications
.Abra el archivo
Main.storyboard
y arrastre un botón a la vista. Asigne al botón el nombre botón y asígnele el título Agregar notificación. También puede establecer algunas restricciones en el botón en este punto:Edite la clase
ViewController
y agregue el siguiente controlador de eventos al método ViewDidLoad:button.TouchUpInside += (sender, e) => { // create the notification var notification = new UILocalNotification(); // set the fire date (the date time in which it will fire) notification.FireDate = NSDate.FromTimeIntervalSinceNow(60); // configure the alert notification.AlertAction = "View Alert"; notification.AlertBody = "Your one minute alert has fired!"; // modify the badge notification.ApplicationIconBadgeNumber = 1; // set the sound to be the default sound notification.SoundName = UILocalNotification.DefaultSoundName; // schedule it UIApplication.SharedApplication.ScheduleLocalNotification(notification); };
Este código creará una notificación que usa un sonido, establece el valor del distintivo de icono en 1 y muestra una alerta al usuario.
A continuación, edite el archivo
AppDelegate.cs
; agregue primero el código siguiente al métodoFinishedLaunching
. Hemos comprobado si el dispositivo ejecuta iOS 8, si es así, es necesario solicitar el permiso del usuario para recibir notificaciones:if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) { var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); application.RegisterUserNotificationSettings (notificationSettings); }
Todavía en
AppDelegate.cs
, agregue el siguiente método al que se llamará cuando se reciba una notificación:public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification) { // show an alert UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert); okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(okayAlertController, true, null); // reset our badge UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; }
Es necesario controlar el caso en el que se inició la notificación debido a una notificación local. Edite el método
FinishedLaunching
enAppDelegate
para incluir el siguiente fragmento de código:// check for a notification if (launchOptions != null) { // check for a local notification if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey)) { var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification; if (localNotification != null) { UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert); okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); Window.RootViewController.PresentViewController(okayAlertController, true, null); // reset our badge UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } } }
Por último, ejecute la aplicación. En iOS 8, se le pedirá que permita las notificaciones. Haga clic en Aceptar y, a continuación, haga clic en el botón Agregar notificación. Después de una breve pausa, debería ver el cuadro de diálogo de alerta, como se muestra en las capturas de pantalla siguientes:
Resumen
En este tutorial se muestra cómo usar las distintas API para crear y publicar notificaciones en iOS. También se mostró cómo actualizar el icono de aplicación con un distintivo para proporcionar algunos comentarios específicos de la aplicación al usuario.