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

В этом разделе мы рассмотрим, как использовать локальные уведомления в приложении Xamarin. iOS. В нем демонстрируются основы создания и публикации уведомления, которое будет отображать оповещение при получении приложением.In this section we'll walk through how to use local notifications in a Xamarin.iOS application. It will demonstrate the basics of creating and publishing a notification that will pop up an alert when received by the app.

Важно!

Сведения в этом разделе относятся к iOS 9 и более ранним версиям, поэтому она оставлена для поддержки более старых версий iOS.The information in this section pertains to iOS 9 and prior, it has been left here to support older iOS versions. Для iOS 10 и более поздних версий ознакомьтесь с руководством по платформе пользовательских уведомлений для поддержки локальных и удаленных уведомлений на устройстве iOS.For iOS 10 and later, please see the User Notification Framework guide for supporting both Local and Remote Notification on an iOS device.

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

Позвольте создать простое приложение, которое будет отображать локальные уведомления в действии.Let create a simple application that will show local notifications in action. Это приложение будет иметь одну кнопку.This application will have a single button on it. При нажатии кнопки будет создано локальное уведомление.When we click on the button, it will create a local notification. По истечении указанного периода времени будет отображено уведомление.After the specified time period has elapsed, we will see the notification appear.

  1. В Visual Studio для Mac создайте новое решение для iOS с одним представлением и назовите его Notifications.In Visual Studio for Mac, create a new Single View iOS solution and call it Notifications.

  2. Main.storyboard Откройте файл и перетащите кнопку на представление.Open the Main.storyboard file, and drag a button onto the View. Назовите кнопку кнопки иприсвойте ей название добавить уведомление.Name the button button, and give it the title Add Notification. В этот момент может потребоваться задать некоторые ограничения для кнопки:You may also want to set some constraints to the button at this point:

  3. ViewController Измените класс и добавьте в метод ViewDidLoad следующий обработчик событий:Edit the ViewController class, and add the following event handler to the ViewDidLoad method:

    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 и отображает предупреждение для пользователя.This code will create a notification that uses a sound, sets the value of the icon badge to 1, and displays an alert to the user.

  4. Затем измените файл AppDelegate.cs, добавьте следующий код FinishedLaunching в метод.Next edit the file AppDelegate.cs, first add the following code to the FinishedLaunching method. Мы проверили, работает ли устройство под управлением iOS 8, если это так, поэтому нам нужно запросить разрешение пользователя на получение уведомлений:We have checked to see if the device is running iOS 8, if so we are required to ask for the user's permission to receive notifications:

    if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
            var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes (
                UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
            );
    
            application.RegisterUserNotificationSettings (notificationSettings);
        }
    
  5. По-прежнему добавьте следующий метод ,которыйбудетвызыватьсяприполученииуведомления:AppDelegate.csStill in AppDelegate.cs, add the following method which will be called when a notification is received:

    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. Необходимо обменять случай, когда уведомление было запущено из-за локального уведомления.We need to handle the case where the notification was launched because of a local notification. Измените метод FinishedLaunching в, чтобы AppDelegate включить в него следующий фрагмент кода:Edit the method FinishedLaunching in the AppDelegate to include the following snippet of code:

    // 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. Наконец, запустите приложение.Finally, run the application. В iOS 8 вам будет предложено разрешить уведомления.On iOS 8 you will be prompted to allow notifications. Нажмите кнопку ОК , а затем нажмите кнопку добавить уведомление .Click OK and then click the Add notification button. После небольшой паузы вы увидите диалоговое окно предупреждения, как показано на следующих снимках экрана:After a short pause you should see the alert dialog, as shown in the following screenshots:

СводкаSummary

В этом пошаговом руководстве показано, как использовать различные API для создания и публикации уведомлений в iOS.This walkthrough showed how to use the various API's for creating and publishing notifications in iOS. Также показано, как обновить значок приложения с помощью значка, чтобы предоставить пользователю специальные отзывы.It also demonstrated how to update the application icon with a badge to provide some application specific feedback to the user.