Share via


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.

  1. En Visual Studio para Mac, cree una nueva solución de iOS de vista única y llámela Notifications.

  2. 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: Establecimiento de algunas restricciones en el botón

  3. 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.

  4. A continuación, edite el archivo AppDelegate.cs; agregue primero el código siguiente al método FinishedLaunching. 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);
    }
    
  5. 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;
    }
    
  6. Es necesario controlar el caso en el que se inició la notificación debido a una notificación local. Edite el método FinishedLaunching en AppDelegate 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;
            }
        }
    }
    
  7. 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:

    Confirmación de la capacidad de enviar notificacionesBotón Agregar notificaciónCuadro de diálogo de alerta de notificación

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.