Procedura dettagliata: Uso delle notifiche locali in Xamarin.iOS

In questa sezione verrà illustrato come usare le notifiche locali in un'applicazione Xamarin.iOS. Illustra le nozioni di base per la creazione e la pubblicazione di una notifica che visualizzerà un avviso quando viene ricevuto dall'app.

Importante

Le informazioni contenute in questa sezione riguardano iOS 9 e versioni precedenti, è stata lasciata qui per supportare le versioni precedenti di iOS. Per iOS 10 e versioni successive, vedere la Guida di User Notification Framework per supportare notifiche locali e remote in un dispositivo iOS.

scenario

Creare una semplice applicazione che visualizzerà le notifiche locali in azione. Questa applicazione avrà un singolo pulsante su di esso. Quando si fa clic sul pulsante, verrà creata una notifica locale. Dopo che è trascorso il periodo di tempo specificato, verrà visualizzata la notifica.

  1. In Visual Studio per Mac creare una nuova soluzione iOS a visualizzazione singola e chiamarla Notifications.

  2. Aprire il Main.storyboard file e trascinare un pulsante nella visualizzazione. Assegnare un nome al pulsante e assegnare il titolo Aggiungi notifica. È anche possibile impostare alcuni vincoli sul pulsante a questo punto: Impostazione di alcuni vincoli sul pulsante

  3. Modificare la ViewController classe e aggiungere il gestore eventi seguente al metodo 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);
    };
    

    Questo codice creerà una notifica che usa un suono, imposta il valore della notifica icona su 1 e visualizza un avviso all'utente.

  4. Modificare quindi il file AppDelegate.cs, aggiungere prima il codice seguente al FinishedLaunching metodo . È stato verificato se il dispositivo esegue iOS 8, se è necessario chiedere l'autorizzazione dell'utente per ricevere le notifiche:

    if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
        var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes (
            UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
        );
    
        application.RegisterUserNotificationSettings (notificationSettings);
    }
    
  5. Sempre in AppDelegate.csaggiungere il metodo seguente che verrà chiamato quando viene ricevuta una notifica:

    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. È necessario gestire il caso in cui è stata avviata la notifica a causa di una notifica locale. Modificare il metodo FinishedLaunching in AppDelegate per includere il frammento di codice seguente:

    // 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. Infine, eseguire l'applicazione. In iOS 8 verrà richiesto di consentire le notifiche. Fare clic su OK e quindi sul pulsante Aggiungi notifica . Dopo una breve pausa verrà visualizzata la finestra di dialogo di avviso, come illustrato negli screenshot seguenti:

    Conferma della possibilità di inviare notifichePulsante Aggiungi notificaFinestra di dialogo di avviso di notifica

Riepilogo

Questa procedura dettagliata ha illustrato come usare le varie API per la creazione e la pubblicazione di notifiche in iOS. È stato anche illustrato come aggiornare l'icona dell'applicazione con un badge per fornire un feedback specifico dell'applicazione all'utente.