Пошаговое руководство. Использование локальных уведомлений в 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 и более поздние версии, см. в разделе руководство по Framework уведомление пользователя за поддержку локальных и удаленных уведомлений на устройства 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.cs, добавьте следующий метод, который будет вызываться при получении уведомления:Still 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.