Пошаговое руководство. Использование локальных уведомлений в Xamarin.iOS

В этом разделе описано, как использовать локальные уведомления в приложении Xamarin.iOS. В нем демонстрируются основы создания и публикации уведомления, которое появляется оповещение при получении приложением.

Внимание

Сведения, приведенные в этом разделе, относятся к iOS 9 и более ранним, он был оставлен здесь для поддержки старых версий iOS. Сведения о iOS 10 и более поздних версиях см. в руководстве по платформе уведомлений пользователей для поддержки локального и удаленного уведомлений на устройстве iOS.

Пошаговое руководство

Давайте создадим простое приложение, которое будет отображать локальные уведомления в действии. В этом приложении будет одна кнопка. При нажатии кнопки он создаст локальное уведомление. После истечения указанного периода времени появится уведомление.

  1. В Visual Studio для Mac создайте новое решение iOS с одним представлением и вызовите егоNotifications.

  2. Откройте файл и перетащите Main.storyboard кнопку в представление. Назовите кнопку кнопки и присвойте ей название "Добавить уведомление". Вы также можете задать некоторые ограничения на кнопку на этом этапе: Настройка некоторых ограничений на кнопку

  3. Измените 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 и отображает оповещение пользователю.

  4. Затем измените файл 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);
    }
    
  5. 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;
    }
    
  6. Нам нужно обработать ситуацию, когда уведомление было запущено из-за локального уведомления. Измените метод 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;
            }
        }
    }
    
  7. Наконец, запустите приложение. В iOS 8 вам будет предложено разрешить уведомления. Нажмите кнопку "ОК " и нажмите кнопку "Добавить уведомление ". После короткой приостановки вы увидите диалоговое окно оповещения, как показано на следующих снимках экрана:

    Подтверждение возможности отправки уведомленийКнопка Диалоговое окно оповещений уведомления

Итоги

В этом пошаговом руководстве показано, как использовать различные API для создания и публикации уведомлений в iOS. В нем также показано, как обновить значок приложения с эмблемой, чтобы предоставить пользователю определенные отзывы о приложении.