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.
In Visual Studio per Mac creare una nuova soluzione iOS a visualizzazione singola e chiamarla
Notifications
.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: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.
Modificare quindi il file
AppDelegate.cs
, aggiungere prima il codice seguente alFinishedLaunching
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); }
Sempre in
AppDelegate.cs
aggiungere 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; }
È necessario gestire il caso in cui è stata avviata la notifica a causa di una notifica locale. Modificare il metodo
FinishedLaunching
inAppDelegate
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; } } }
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:
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.