Пошаговое руководство. Использование локальных уведомлений в Xamarin.iOS
В этом разделе описано, как использовать локальные уведомления в приложении Xamarin.iOS. В нем демонстрируются основы создания и публикации уведомления, которое появляется оповещение при получении приложением.
Внимание
Сведения, приведенные в этом разделе, относятся к iOS 9 и более ранним, он был оставлен здесь для поддержки старых версий iOS. Сведения о iOS 10 и более поздних версиях см. в руководстве по платформе уведомлений пользователей для поддержки локального и удаленного уведомлений на устройстве iOS.
Пошаговое руководство
Давайте создадим простое приложение, которое будет отображать локальные уведомления в действии. В этом приложении будет одна кнопка. При нажатии кнопки он создаст локальное уведомление. После истечения указанного периода времени появится уведомление.
В Visual Studio для Mac создайте новое решение iOS с одним представлением и вызовите его
Notifications
.Откройте файл и перетащите
Main.storyboard
кнопку в представление. Назовите кнопку кнопки и присвойте ей название "Добавить уведомление". Вы также можете задать некоторые ограничения на кнопку на этом этапе:Измените
ViewController
класс и добавьте следующий обработчик событий в метод 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); };
Этот код создаст уведомление, использующее звук, задает значение значка значок 1 и отображает оповещение пользователю.
Затем измените файл
AppDelegate.cs
, сначала добавьте следующий код вFinishedLaunching
метод. Мы проверка, чтобы узнать, работает ли устройство под управлением iOS 8, если это необходимо для того, чтобы запрашивать разрешение пользователя на получение уведомлений:if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) { var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); application.RegisterUserNotificationSettings (notificationSettings); }
AppDelegate.cs
Тем не менее добавьте следующий метод, который будет вызываться при получении уведомления: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; }
Нам нужно обработать ситуацию, когда уведомление было запущено из-за локального уведомления. Измените метод
FinishedLaunching
в приведенномAppDelegate
ниже фрагменте кода:// 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; } } }
Наконец, запустите приложение. В iOS 8 вам будет предложено разрешить уведомления. Нажмите кнопку "ОК " и нажмите кнопку "Добавить уведомление ". После короткой приостановки вы увидите диалоговое окно оповещения, как показано на следующих снимках экрана:
Итоги
В этом пошаговом руководстве показано, как использовать различные API для создания и публикации уведомлений в iOS. В нем также показано, как обновить значок приложения с эмблемой, чтобы предоставить пользователю определенные отзывы о приложении.