Локальные уведомленияLocal notifications

В этом разделе показано, как реализовать локальных уведомлений в Xamarin.Android. Он объясняет различные элементы пользовательского интерфейса уведомление Android и описываются API связанных с созданием и отображение уведомления.This section shows how to implement local notifications in Xamarin.Android. It explains the various UI elements of an Android notification and discusses the API's involved with creating and displaying a notification.

Общие сведения о локальных уведомленийLocal notifications overview

Android предоставляет две области, управляемые системы для отображения значки уведомления и уведомления об уровне обслуживания для пользователя.Android provides two system-controlled areas for displaying notification icons and notification information to the user. При первой публикации уведомления его значок отображается в области уведомлений, как показано на следующем снимке экрана:When a notification is first published, its icon is displayed in the notification area, as shown in the following screenshot:

Пример области уведомлений на устройстве

Для получения сведений об уведомлении, пользователь может открыть панель уведомлений (которая разворачивается каждый значок уведомления, чтобы показать содержимое уведомления) и выполнять любые действия, связанные с уведомлениями.To obtain details about the notification, the user can open the notification drawer (which expands each notification icon to reveal notification content) and perform any actions associated with the notifications. На следующем снимке экрана показан панель уведомлений , соответствующий области уведомлений, отображенный выше:The following screenshot shows a notification drawer that corresponds to the notification area displayed above:

Панель уведомлений пример отображения трех уведомленийExample notification drawer displaying three notifications

Android уведомления используют два вида макетов:Android notifications use two types of layouts:

  • Базовая схема – формат compact, основного представления.Base layout – a compact, fixed presentation format.

  • Расширенный макет – формат представления, можно разворачивать для большего размера для получения сведений.Expanded layout – a presentation format that can expand to a larger size to reveal more information.

В следующих разделах описан каждый из этих типов макета (и об их создании).Each of these layout types (and how to create them) is explained in the following sections.

Примечание

Это руководство посвящено API-интерфейсы NotificationCompat из библиотека поддержки Android.This guide focuses on the NotificationCompat APIs from the Android support library. Эти API-интерфейсы будут обеспечения максимально обратной совместимости для Android 4.0 (уровень API 14).These APIs will ensure maximum backwards compatibility to Android 4.0 (API level 14).

Базовый макетBase layout

Все уведомления Android основаны на формате базовый макет, который, как минимум, включает следующие элементы:All Android notifications are built on the base layout format, which, at a minimum, includes the following elements:

  1. Объект значок уведомления, который представляет исходного приложения, или тип уведомления, если приложение поддерживает различные типы уведомлений.A notification icon, which represents the originating app, or the notification type if the app supports different types of notifications.

  2. Уведомление title, или имя отправителя, если это уведомление личное сообщение.The notification title, or the name of the sender if the notification is a personal message.

  3. Сообщение уведомления.The notification message.

  4. Объект timestamp.A timestamp.

Эти элементы отображаются, как показано на следующей схеме:These elements are displayed as illustrated in the following diagram:

Расположение элементов уведомления оLocation of notification elements

Базовый макеты ограничены 64 density независимых пикселях (dp) в высоту.Base layouts are limited to 64 density-independent pixels (dp) in height. По умолчанию Android создает этот стиль базовое уведомление.Android creates this basic notification style by default.

При необходимости уведомления можно отобразить крупный значок, представляющий приложение или фотографию отправителя.Optionally, notifications can display a large icon that represents the application or the sender's photo. При использовании крупного значка в уведомлении в Android 5.0 и более поздних версий небольшой значок отображается в виде значка на значке больших:When a large icon is used in a notification in Android 5.0 and later, the small notification icon is displayed as a badge over the large icon:

Простое уведомление о фото

Начиная с Android 5.0, уведомления можно также появляются на экране блокировки:Beginning with Android 5.0, notifications can also appear on the lock screen:

Пример уведомления об экрана блокировкиExample lock screen notification

Пользователь может дважды щелкните уведомление экрана блокировки, разблокировки устройства и перейти к приложению, являющийся источником этого уведомления, или проведите по экрану, чтобы закрыть уведомление.The user can double-tap the lock screen notification to unlock the device and jump to the app that originated that notification, or swipe to dismiss the notification. Приложения можно задать уровень видимости уведомления для управления, то, что отображается на экране блокировки, и пользователи могут выбирать, следует ли разрешить конфиденциального содержимого, которые должны отображаться в уведомления на экране блокировки.Apps can set the visibility level of a notification to control what is shown on the lock screen, and users can choose whether to allow sensitive content to be shown in lock screen notifications.

Android 5.0 появились формате презентации уведомлений с высоким приоритетом, который называется информационных индикаторов.Android 5.0 introduced a high-priority notification presentation format called Heads-up. Уведомления о новинках проведите пальцем вниз из верхней части экрана на несколько секунд и затем кто куда резервное копирование на области уведомлений:Heads-up notifications slide down from the top of the screen for a few seconds and then retreat back up to the notification area:

Пример heads-up уведомленийExample heads-up notification

Уведомления о новинках делают возможным для системы пользовательского интерфейса, чтобы поместить важные сведения глазах у пользователя без нарушения состояния текущего выполняемого действия.Heads-up notifications make it possible for the system UI to put important information in front of the user without disrupting the state of the currently running activity.

Android поддерживает метаданные уведомлений, чтобы уведомления могут быть отсортированы и интеллектуально.Android includes support for notification metadata so that notifications can be sorted and displayed intelligently. Метаданные уведомлений также контролирует, как уведомления будут представлены на экране блокировки и в формате информационных индикаторов.Notification metadata also controls how notifications are presented on the lock screen and in Heads-up format. Приложение может задать следующие виды метаданных уведомлений:Applications can set the following types of notification metadata:

  • Приоритет – уровень приоритета определяет, как и когда уведомления будут представлены.Priority – The priority level determines how and when notifications are presented. Например, в Android 5.0 важных уведомлений отображаются в виде уведомления информационных индикаторов.For example, In Android 5.0, high-priority notifications are displayed as Heads-up notifications.

  • Видимость – указывает объем содержимого уведомлений должен отображаться, когда уведомление отображается на экране блокировки.Visibility – Specifies how much notification content is to be displayed when the notification appears on the lock screen.

  • Категория – сообщает системе, как обрабатывать уведомления в различных ситуациях, например когда устройство находится в не беспокоить режим.Category – Informs the system how to handle the notification in various circumstances, such as when the device is in Do Not Disturb mode.

Примечание. Видимость и категории были введены в Android 5.0 и недоступны в более ранних версиях Android.Note: Visibility and Category were introduced in Android 5.0 and are not available in earlier versions of Android. Начиная с Android 8.0 каналы уведомления используются для управления, как уведомления будут представлены для пользователя.Beginning with Android 8.0, notification channels are used to control how notifications are presented to the user.

Развернутое макетыExpanded layouts

Начиная с Android версии 4.1, уведомления можно настроить с использованием стилей расширенный макет, позволяющие пользователю развернуть высоту уведомление, чтобы просмотреть дополнительные материалы.Beginning with Android 4.1, notifications can be configured with expanded layout styles that allow the user to expand the height of the notification to view more content. Например в следующем примере показано уведомление о развернутой макет в режиме сокращенного:For example, the following example illustrates an expanded layout notification in contracted mode:

Проясняет уведомлений

При развертывании этого уведомления, оно показывает все сообщение:When this notification is expanded, it reveals the entire message:

Расширенные уведомления

Android делятся на три категории расширенный макет для уведомлений о событиях один:Android supports three expanded layout styles for single-event notifications:

  • Большой фрагмент текста – в режиме проясняет, отображает выдержкой из первой строки сообщения, следуют две точки.Big Text – In contracted mode, displays an excerpt of the first line of the message followed by two periods. В развернутом режиме отображаются все сообщение (как показано в приведенном выше примере).In expanded mode, displays the entire message (as seen in the above example).

  • Папки "Входящие" – в режиме проясняет, число новых сообщений.Inbox – In contracted mode, displays the number of new messages. В развернутом режиме отображает первое сообщение электронной почты или список сообщений в папке "Входящие".In expanded mode, displays the first email message or a list of the messages in the inbox.

  • Изображение – в режиме проясняет, отображает только текст сообщения.Image – In contracted mode, displays only the message text. В развернутом режиме отображает текст и изображения.In expanded mode, displays the text and an image.

Помимо уведомлений Basic (Далее в этой статье) описаны способы создания большой фрагмент текста, папки "Входящие", и изображение уведомления.Beyond the Basic Notification (later in this article) explains how to create Big Text, Inbox, and Image notifications.

Каналы уведомленияNotification channels

Начиная с Android 8.0 (Oreo), можно использовать каналы уведомления функции для создания настраиваемых пользователями канала для каждого типа уведомлений, которое будет отображаться.Beginning with Android 8.0 (Oreo), you can use the notification channels feature to create a user-customizable channel for each type of notification that you want to display. Каналы уведомления позволяют автоматически группы уведомлений, чтобы все уведомления отправляется приложение канал такое же поведение.Notification channels make it possible for you to group notifications so that all notifications posted to a channel exhibit the same behavior. Например возможно, предназначенный для получения уведомлений, которые требуют немедленного внимания канал уведомления и отдельный канал «тише», который используется для информационных сообщений.For example, you might have a notification channel that is intended for notifications that require immediate attention, and a separate "quieter" channel that is used for informational messages.

YouTube приложение, которое устанавливается вместе с Android Oreo перечислены две категории уведомлений: Скачайте уведомления и общие уведомления:The YouTube app that is installed with Android Oreo lists two notification categories: Download notifications and General notifications:

Экраны уведомлений для YouTube в Android OreoNotification screens for YouTube in Android Oreo

Каждый из этих категорий соответствует канала уведомления.Each of these categories corresponds to a notification channel. Реализует приложение YouTube уведомления канала и общие уведомления канала.The YouTube app implements a Download Notifications channel and a General Notifications channel. Когда пользователь выберет скачать уведомления, отображающий на экране параметров для приложения загрузки канала уведомления:The user can tap Download notifications, which displays the settings screen for the app's download notifications channel:

Скачайте экрана уведомления для приложения YouTubeDownload notifications screen for the YouTube app

На этом экране, пользователь может изменить поведение загрузить канала уведомлений с помощью следующих действий:In this screen, the user can modify the behavior of the Download notifications channel by doing the following:

  • Установите уровень важности срочно, высокого уровня, Средний, или низкой, который настраивает уровень звуковые и визуальные прерывания.Set the Importance level to Urgent, High, Medium, or Low, which configures the level of sound and visual interruption.

  • Отключение точки уведомления.Turn the notification dot on or off.

  • Выключать мигающий свет.Turn the blinking light on or off.

  • Показать или скрыть уведомления на экране блокировки.Show or hide notifications on the lock screen.

  • Переопределить не беспокоить параметр.Override the Do Not Disturb setting.

Общие уведомления канал имеет те же параметры:The General Notifications channel has similar settings:

Общие уведомления экрана для приложения YouTubeGeneral notifications screen for the YouTube app

Обратите внимание на то, что у вас нет контролирует взаимодействие с пользователем каналы уведомлений – пользователь может изменять параметры для любого канала уведомления на устройстве, как показано на снимках экрана выше.Notice that you do not have absolute control over how your notification channels interact with the user – the user can modify the settings for any notification channel on the device as seen in the screenshots above. Тем не менее можно настроить значения по умолчанию (как будет описано ниже).However, you can configure default values (as will be described below). Как показывают эти примеры, новая функция каналы уведомлений позволяет предоставить пользователям возможность точного управления различных типов уведомлений.As these examples illustrate, the new notification channels feature makes it possible for you to give users fine-grained control over different kinds of notifications.

Создание уведомленийNotification creation

Для создания уведомления в Android, используется NotificationCompat.Builder класса из Xamarin.Android.Support.v4 пакет NuGet.To create a notification in Android, you use the NotificationCompat.Builder class from the Xamarin.Android.Support.v4 NuGet package. Этот класс позволяет создавать и публиковать уведомления в старых версиях Android.This class makes it possible to create and publish notifications on older versions of Android. Дополнительные сведения об использовании NotificationCompat.Builder, см. в разделе совместимости далее в этом разделе.For more information about using NotificationCompat.Builder, see Compatibility later in this topic.

NotificationCompat.Builder Предоставляет методы для установки различных параметров в уведомления, такие как:NotificationCompat.Builder provides methods for setting the various options in a notification, such as:

  • Содержимое, включая заголовок, текст сообщения и значок уведомления.The content, including the title, the message text, and the notification icon.

  • Стиль уведомления, такие как большой фрагмент текста, папки "Входящие", или изображение стиля.The style of the notification, such as Big Text, Inbox, or Image style.

  • Приоритет уведомления: минимум, низкое значение, по умолчанию, высокая или Максимальная.The priority of the notification: minimum, low, default, high, or maximum. В Android 8.0 и более поздних версий, приоритет задается с помощью канала уведомления.On Android 8.0 and higher, the priority is set via a notification channel.

  • Видимость уведомлений на экране блокировки: public, private или секрет.The visibility of the notification on the lock screen: public, private, or secret.

  • Категории метаданных, которая помогает Android классификации и фильтрации уведомление.Category metadata that helps Android classify and filter the notification.

  • Необязательный рассчитывает, что указывает действие для запуска при нажатии уведомления.An optional intent that indicates an activity to launch when the notification is tapped.

  • Идентификатор канала уведомления, что уведомление будет опубликовано на (Android 8.0 и более поздних версий).The ID of the notification channel that the notification will be published on (Android 8.0 and higher).

После установки этих параметров в построителе, создается объект уведомления, который содержит параметры.After you set these options in the builder, you generate a notification object that contains the settings. Чтобы опубликовать уведомление, передать этот объект уведомления для диспетчер уведомлений.To publish the notification, you pass this notification object to the Notification Manager. Android предоставляет NotificationManager класс, отвечающий за публикацию уведомления и их отображение для пользователя.Android provides the NotificationManager class, which is responsible for publishing notifications and displaying them to the user. Ссылка на класс можно получить из контекста, например действие или службы.A reference to this class can be obtained from any context, such as an activity or a service.

Создание канала уведомленияCreating a notification channel

Приложения, работающие на Android 8.0 необходимо создать канал уведомлений их уведомления.Apps that are running on Android 8.0 must create a notification channel for their notifications. Канал уведомления требуются следующие три элемента информации:A notification channel requires the following three pieces of information:

  • Строка идентификатора, который уникален в пакет, которому будет определяться канала.An ID string that is unique to the package that will identify the channel.
  • Имя канала, который будет отображаться для пользователя.The name of the channel that will be displayed to the user. Имя должно быть от одного до 40 символов.The name must be between one and 40 characters.
  • Важность канала.The importance of the channel.

Приложения потребуется проверка версии Android, в которой они выполняются.Apps will need to check the version of Android that they are running. Устройства под управлением версии старше, чем Android 8.0 не следует создавать канал уведомления.Devices running versions older than Android 8.0 should not create a notification channel. Следующий метод является примером того, как создать канал уведомлений в действии:The following method is one example of how to create a notification channel in an activity:

void CreateNotificationChannel()
{
    if (Build.VERSION.SdkInt < BuildVersionCodes.O)
    {
        // Notification channels are new in API 26 (and not a part of the
        // support library). There is no need to create a notification
        // channel on older versions of Android.
        return;
    }

    var channelName = Resources.GetString(Resource.String.channel_name);
    var channelDescription = GetString(Resource.String.channel_description);
    var channel = new NotificationChannel(CHANNEL_ID, channelName, NotificationImportance.Default)
                  {
                      Description = channelDescription
                  };

    var notificationManager = (NotificationManager) GetSystemService(NotificationService);
    notificationManager.CreateNotificationChannel(channel);
}

Канал уведомления должны создаваться каждый раз, когда действие создается.The notification channel should be created each time the activity is created. Для CreateNotificationChannel метод, он должен вызываться OnCreate метод действия.For the CreateNotificationChannel method, it should be called in the OnCreate method of an activity.

Создание и публикация уведомлениеCreating and publishing a notification

Для создания уведомления в Android, выполните следующие действия.To generate a notification in Android, follow these steps:

  1. Создать экземпляр NotificationCompat.Builder объекта.Instantiate a NotificationCompat.Builder object.

  2. Вызывать различные методы для NotificationCompat.Builder объекта, чтобы задать параметры уведомлений.Call various methods on the NotificationCompat.Builder object to set notification options.

  3. Вызовите построения метод NotificationCompat.Builder объекта для создания экземпляра объекта уведомления.Call the Build method of the NotificationCompat.Builder object to instantiate a notification object.

  4. Вызовите Notify метод опубликовать уведомление в диспетчер уведомлений.Call the Notify method of the notification manager to publish the notification.

Необходимо указать по крайней мере следующие сведения для каждого из уведомлений:You must provide at least the following information for each notification:

  • Небольшой значок (24 x 24 точки распространения в размер)A small icon (24x24 dp in size)

  • Краткое названиеA short title

  • Текст уведомленияThe text of the notification

В следующем примере кода показано, как использовать NotificationCompat.Builder для создания базовое уведомление.The following code example illustrates how to use NotificationCompat.Builder to generate a basic notification. Обратите внимание, что NotificationCompat.Builder методы поддерживают объединения методов в цепочку; то есть каждый метод возвращает построитель объекта, поэтому результат последнего вызова метода можно использовать для вызова следующего вызова метода:Notice that NotificationCompat.Builder methods support method chaining; that is, each method returns the builder object so you can use the result of the last method call to invoke the next method call:

// Instantiate the builder and set notification elements:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

В этом примере новый NotificationCompat.Builder объект с именем builder создается, а также идентификатор канала уведомления для использования.In this example, a new NotificationCompat.Builder object called builder is instantiated, along with the ID of the notification channel to be used. Заголовок и текст уведомления задания, а значок уведомления загружается из Resources/drawable/ic_notification.png.The title and text of the notification are set, and the notification icon is loaded from Resources/drawable/ic_notification.png. Вызов к конструктору уведомлений Build метод создает объект уведомления с использованием этих параметров.The call to the notification builder's Build method creates a notification object with these settings. Следующим шагом является вызов Notify метод диспетчера уведомлений.The next step is to call the Notify method of the notification manager. Чтобы найти в диспетчер уведомлений, вызовите GetSystemService, как показано выше.To locate the notification manager, you call GetSystemService, as shown above.

Notify Метод принимает два параметра: идентификатор уведомления и уведомления объект.The Notify method accepts two parameters: the notification identifier and the notification object. Идентификатор уведомления является уникальным целым числом, определяющий уведомление в приложение.The notification identifier is a unique integer that identifies the notification to your application. В этом примере идентификатор уведомления имеет значение ноль (0); Однако в рабочем приложении, необходимо предоставить уникальный идентификатор для каждого уведомления.In this example, the notification identifier is set to zero (0); however, in a production application, you will want to give each notification a unique identifier. Повторное использование предыдущего значения идентификатора в вызове Notify приводит к переопределению последнего уведомления.Reusing the previous identifier value in a call to Notify causes the last notification to be overwritten.

Когда этот код выполняется на устройстве Android 5.0, он создает уведомление, которое выглядит как в следующем примере:When this code runs on an Android 5.0 device, it generates a notification that looks like the following example:

Результат уведомления для примера кода

Значок уведомления отображается на левой уведомления – этот образ кружке “я” имеет альфа-канал, чтобы Android можно рисовать серый фон циклическая за ней.The notification icon is displayed on the left hand side of the notification – this image of a circled “i” has an alpha channel so that Android can draw a gray circular background behind it. Можно также указать значок без альфа-канал.You can also supply an icon without an alpha channel. Для отображения фотографии в виде значка, см. в разделе большого формата значков далее в этом разделе.To display a photographic image as an icon, see Large Icon Format later in this topic.

Отметка времени задается автоматически, но этот параметр можно переопределить путем вызова умолчаниюПри метод построителя уведомлений.The timestamp is set automatically, but you can override this setting by calling the SetWhen method of the notification builder. Например в следующем примере кода задает метку времени на текущее время:For example, the following code example sets the timestamp to the current time:

builder.SetWhen (Java.Lang.JavaSystem.CurrentTimeMillis());

Включение звука и вибрацииEnabling sound and vibration

Следует также звуковое уведомление можно вызвать конструктор уведомлений SetDefaults метод и передать NotificationDefaults.Sound флаг:If you want your notification to also play a sound, you can call the notification builder's SetDefaults method and pass in the NotificationDefaults.Sound flag:

// Instantiate the notification builder and enable sound:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first notification!")
    .SetDefaults (NotificationDefaults.Sound)
    .SetSmallIcon (Resource.Drawable.ic_notification);

Этот вызов SetDefaults устройство для воспроизведения звука при публикации уведомления.This call to SetDefaults will cause the device to play a sound when the notification is published. Если нужно предоставить устройству «вибрация», а не воспроизводить звук, вы можете передать NotificationDefaults.Vibrate для SetDefaults. Если нужно предоставить устройству для воспроизведения звука и управлять вибрацией устройства, вы можете передать обоих флагов для SetDefaults:If you want the device to vibrate rather than play a sound, you can pass NotificationDefaults.Vibrate to SetDefaults. If you want the device to play a sound and vibrate the device, you can pass both flags to SetDefaults:

builder.SetDefaults (NotificationDefaults.Sound | NotificationDefaults.Vibrate);

При включении звука без указания звук, воспроизводимый Android использует системный звук уведомлений по умолчанию.If you enable sound without specifying a sound to play, Android uses the default system notification sound. Тем не менее, можно изменить звук, который будет воспроизводиться, вызвав конструктор уведомлений SetSound метод.However, you can change the sound that will be played by calling the notification builder's SetSound method. Например, воспроизведение сигнала звука уведомления (а не по умолчанию звуковой сигнал), можно получить URI для сигнала звук из RingtoneManager и передать его в SetSound:For example, to play the alarm sound with your notification (instead of the default notification sound), you can get the URI for the alarm sound from the RingtoneManager and pass it to SetSound:

builder.SetSound (RingtoneManager.GetDefaultUri(RingtoneType.Alarm));

В качестве альтернативы можно использовать мелодию звонка по умолчанию системы звуковые уведомления:Alternatively, you can use the system default ringtone sound for your notification:

builder.SetSound (RingtoneManager.GetDefaultUri(RingtoneType.Ringtone));

После создания объекта уведомления, можно задать свойства для уведомления объекта уведомления (вместо их настройки заранее до NotificationCompat.Builder методов).After you create a notification object, it's possible to set notification properties on the notification object (rather than configure them in advance through NotificationCompat.Builder methods). Например, вместо вызова метода SetDefaults способ включения вибрации для уведомления о можно непосредственно изменить одноразрядный флаг уведомления по умолчанию свойство:For example, instead of calling the SetDefaults method to enable vibration on a notification, you can directly modify the bit flag of the notification's Defaults property:

// Build the notification:
Notification notification = builder.Build();

// Turn on vibrate:
notification.Defaults |= NotificationDefaults.Vibrate;

В этом примере заставляет устройство вибрацию, когда публикуется уведомление.This example causes the device to vibrate when the notification is published.

Обновление уведомлениеUpdating a notification

Если вы хотите обновить содержимое уведомление после его публикации, можно повторно использовать существующий NotificationCompat.Builder для создания объекта уведомления, а также опубликовать это уведомление с идентификатором последнего уведомления.If you want to update the content of a notification after it has been published, you can reuse the existing NotificationCompat.Builder object to create a new notification object and publish this notification with the identifier of the last notification. Пример:For example:

// Update the existing notification builder content:
builder.SetContentTitle ("Updated Notification");
builder.SetContentText ("Changed to this message.");

// Build a notification object with updated content:
notification = builder.Build();

// Publish the new notification with the existing ID:
notificationManager.Notify (notificationId, notification);

В этом примере существующий NotificationCompat.Builder объект используется для создания нового объекта уведомления с помощью различных заголовком и сообщением.In this example, the existing NotificationCompat.Builder object is used to create a new notification object with a different title and message. Новый объект уведомления опубликована с использованием идентификатор предыдущего уведомления и при этом обновляется содержимое уведомления ранее опубликованные:The new notification object is published using the identifier of the previous notification, and this updates the content of the previously-published notification:

Обновленные уведомлений

Текст предыдущего уведомления используется повторно – только заголовок и текст уведомления меняется, когда уведомление отображается в панели уведомлений.The body of the previous notification is reused – only the title and the text of the notification changes while the notification is displayed in the notification drawer. Текст заголовка меняется с «Пример уведомления» на «Обновить уведомление» и текст сообщения меняется с «Hello World!The title text changes from "Sample Notification" to "Updated Notification" and the message text changes from "Hello World! Это Мой первый уведомлений!»This is my first notification!" Для «Изменение на это сообщение.»to "Changed to this message."

Уведомление остается видимой, пока не произойдет одно из трех действий:A notification remains visible until one of three things happens:

  • Пользователь не закрывает уведомления (или касается его очистить все).The user dismisses the notification (or taps Clear All).

  • Приложение выполняет вызов NotificationManager.Cancel, передавая идентификатор уникальный уведомления, который был задан при публикации уведомления.The application makes a call to NotificationManager.Cancel, passing in the unique notification ID that was assigned when the notification was published.

  • Приложение вызывает NotificationManager.CancelAll.The application calls NotificationManager.CancelAll.

Дополнительные сведения об обновлении Android уведомлений, см. в разделе изменить уведомление.For more about updating Android notifications, see Modify a Notification.

Запуск действия для уведомленияStarting an activity from a notification

В Android, довольно часто уведомление должно быть связано с действие – действие, которое запускается, когда пользователь касается уведомления.In Android, it's common for a notification to be associated with an action – an activity that's launched when the user taps the notification. Это действие может находиться в другом приложении или даже в другой задачи.This activity can reside in another application or even in another task. Чтобы добавить действие уведомления, создаваемые PendingIntent и свяжите PendingIntent с уведомлением.To add an action to a notification, you create a PendingIntent object and associate the PendingIntent with the notification. Объект PendingIntent — это специальный тип рассчитывает, что позволяет приложению-получателю для запуска предварительно определенная часть кода с разрешениями, передающего приложения.A PendingIntent is a special type of intent that allows the recipient application to run a predefined piece of code with the permissions of the sending application. Когда пользователь касается уведомления, Android запускается действие, заданное PendingIntent.When the user taps the notification, Android starts up the activity specified by the PendingIntent.

В следующем фрагменте кода показано, как создать уведомление с PendingIntent , запустит действие исходного приложения, MainActivity:The following code snippet illustrates how to create a notification with a PendingIntent that will launch the activity of the originating app, MainActivity:

// Set up an intent so that tapping the notifications returns to this app:
Intent intent = new Intent (this, typeof(MainActivity));

// Create a PendingIntent; we're only using one PendingIntent (ID = 0):
const int pendingIntentId = 0;
PendingIntent pendingIntent =
    PendingIntent.GetActivity (this, pendingIntentId, intent, PendingIntentFlags.OneShot);

// Instantiate the builder and set notification elements, including pending intent:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentIntent (pendingIntent)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first action notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

Этот код очень похож код уведомления в предыдущем разделе, за исключением случаев, PendingIntent добавляется к объекту уведомления.This code is very similar to the notification code in the previous section, except that a PendingIntent is added to the notification object. В этом примере PendingIntent связан с действием исходного приложения, прежде чем передается в конструктор уведомлений SetContentIntent метод.In this example, the PendingIntent is associated with the activity of the originating app before it is passed to the notification builder's SetContentIntent method. PendingIntentFlags.OneShot Флаг передается PendingIntent.GetActivity метод, чтобы PendingIntent используется только один раз.The PendingIntentFlags.OneShot flag is passed to the PendingIntent.GetActivity method so that the PendingIntent is used only once. При выполнении этого кода, отображается следующее уведомление:When this code runs, the following notification is displayed:

Первый уведомление о действии

При касании этого уведомления направляет пользователя обратно к источника действия.Tapping this notification takes the user back to the originating activity.

В рабочем приложении, приложение должно обрабатывать стек переходов назад при нажатии обратно кнопку в пределах действия уведомления (Если вы не знакомы с Android задачами и стек переходов назад, см. в разделе Задачи и стек переходов назад).In a production app, your app must handle the back stack when the user presses the Back button within the notification activity (if you are not familiar with Android tasks and the back stack, see Tasks and Back Stack). В большинстве случаев переход из действия уведомлений в обратном направлении должен возвращать пользователя из приложения и обратно на начальном экране.In most cases, navigating backward out of the notification activity should return the user out of the app and back to Home screen. Для управления стек переходов назад, используемую приложением TaskStackBuilder создаваемого класса PendingIntent с стек переходов назад.To manage the back stack, your app uses the TaskStackBuilder class to create a PendingIntent with a back stack.

Еще один нюанс реальных является источника действия может потребоваться отправлять данные в действие уведомления.Another real-world consideration is that the originating activity may need to send data to the notification activity. Например о том, что поступил текстовое сообщение, и действие уведомления (сообщения Просмотр экрана), требуется идентификатор сообщения для отображения сообщения пользователю.For example, the notification may indicate that a text message has arrived, and the notification activity (a message viewing screen), requires the ID of the message to display the message to the user. Действие, которое создает PendingIntent можно использовать Intent.PutExtra метод для добавления данных (например, строка) к объекту intent, чтобы эти данные передаются в действие уведомления.The activity that creates the PendingIntent can use the Intent.PutExtra method to add data (for example, a string) to the intent so that this data is passed to the notification activity.

В следующем образце кода показано, как использовать TaskStackBuilder для управления стек переходов назад и он содержит пример того, как для отправки одного сообщения строки действие уведомления с именем SecondActivity:The following code sample illustrates how to use TaskStackBuilder to manage the back stack, and it includes an example of how to send a single message string to a notification activity called SecondActivity:

// Setup an intent for SecondActivity:
Intent secondIntent = new Intent (this, typeof(SecondActivity));

// Pass some information to SecondActivity:
secondIntent.PutExtra ("message", "Greetings from MainActivity!");

// Create a task stack builder to manage the back stack:
TaskStackBuilder stackBuilder = TaskStackBuilder.Create(this);

// Add all parents of SecondActivity to the stack:
stackBuilder.AddParentStack (Java.Lang.Class.FromType (typeof (SecondActivity)));

// Push the intent that starts SecondActivity onto the stack:
stackBuilder.AddNextIntent (secondIntent);

// Obtain the PendingIntent for launching the task constructed by
// stackbuilder. The pending intent can be used only once (one shot):
const int pendingIntentId = 0;
PendingIntent pendingIntent =
    stackBuilder.GetPendingIntent (pendingIntentId, PendingIntentFlags.OneShot);

// Instantiate the builder and set notification elements, including
// the pending intent:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentIntent (pendingIntent)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my second action notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

В этом примере кода приложение состоит из двух действий: MainActivity (который содержит приведенный выше код уведомления), и SecondActivity, пользователь видит после при нажатии уведомления экрана.In this code example, the app consists of two activities: MainActivity (which contains the notification code above), and SecondActivity, the screen the user sees after tapping the notification. При выполнении этого кода, представлен простое уведомление (как в предыдущем примере).When this code is run, a simple notification (similar to the previous example) is presented. Щелкнув уведомление направляет пользователя к SecondActivity экрана:Tapping on the notification takes the user to the SecondActivity screen:

Второй снимок экрана действия

Строковое сообщение (переданные намерение PutExtra метод) извлекается в SecondActivity через эту строку кода:The string message (passed into the intent's PutExtra method) is retrieved in SecondActivity via this line of code:

// Get the message from the intent:
string message = Intent.Extras.GetString ("message", "");

Этот извлеченного сообщения «Добро пожаловать из MainActivity!,» отображается в SecondActivity экрана, как показано в приведенном выше снимке экрана.This retrieved message, "Greetings from MainActivity!," is displayed in the SecondActivity screen, as shown in the above screenshot. Когда пользователь нажимает обратно кнопку в активном в SecondActivity, навигации ведет из приложения и на экран, перед запуском приложения.When the user presses the Back button while in SecondActivity, navigation leads out of the app and back to the screen preceding the launch of the app.

Дополнительные сведения о создании ожидающие намерения см. в разделе PendingIntent.For more information about creating pending intents, see PendingIntent.

Помимо уведомлений basicBeyond the basic notification

Уведомления по умолчанию в формате простого базовый макет в Android, но вы можете улучшить этот базовый формат путем внесения дополнительных NotificationCompat.Builder вызовы методов.Notifications default to a simple base layout format in Android, but you can enhance this basic format by making additional NotificationCompat.Builder method calls. В этом разделе вы узнаете, как добавить значок большую фотографию в уведомления, и вы увидите примеры того, как создать макет расширенные уведомления.In this section, you'll learn how to add a large photo icon to your notification, and you'll see examples of how to create expanded layout notifications.

Формат крупный значокLarge icon format

Android уведомлений обычно значком исходного приложения (в левой части уведомление).Android notifications typically display the icon of the originating app (on the left side of the notification). Тем не менее, уведомления можно отобразить изображения или фотографии ( крупный значок) вместо стандартной мелкого значка.However, notifications can display an image or a photo (a large icon) instead of the standard small icon. Например приложении для обмена сообщениями может отобразить фотографию отправителя, а не на значок приложения.For example, a messaging app could display a photo of the sender rather than the app icon.

Ниже приведен пример базовое уведомление Android 5.0 – отображается только значок небольшое приложение:Here is an example of a basic Android 5.0 notification – it displays only the small app icon:

Пример обычного уведомления

Ниже приведен снимок экрана уведомление после его изменения для отображения крупных значков – используется значок создается из образа операционной системы monkey кода Xamarin:And here is a screenshot of the notification after modifying it to display a large icon – it uses an icon created from an image of a Xamarin code monkey:

Пример уведомления об крупный значок

Обратите внимание, что когда уведомление предоставляется в формате больших значков, значок небольшое приложение виде значка в правом нижнем углу крупных значков.Notice that when a notification is presented in large icon format, the small app icon is displayed as a badge on the lower right corner of the large icon.

Чтобы использовать изображение в виде крупных значков в уведомлении, вызовите конструктор уведомлений SetLargeIcon метод и передать растрового изображения.To use an image as a large icon in a notification, you call the notification builder's SetLargeIcon method and pass in a bitmap of the image. В отличие от SetSmallIcon, SetLargeIcon принимает только растрового изображения.Unlike SetSmallIcon, SetLargeIcon only accepts a bitmap. Для преобразования файл изображения в растровое изображение, используется BitmapFactory класса.To convert an image file into a bitmap, you use the BitmapFactory class. Пример:For example:

builder.SetLargeIcon (BitmapFactory.DecodeResource (Resources, Resource.Drawable.monkey_icon));

Этот пример кода открывает файл изображения в Resources/drawable/monkey_icon.png, преобразует его в растровое изображение и передает конечного растрового изображения для NotificationCompat.Builder.This example code opens the image file at Resources/drawable/monkey_icon.png, converts it to a bitmap, and passes the resulting bitmap to NotificationCompat.Builder. Как правило, разрешение изображения источника больше, чем мелкого значка – , но не гораздо большего размера.Typically, the source image resolution is larger than the small icon – but not much larger. Изображение слишком большого размера может привести к ненужных операций по изменению размера, которые могут вызвать задержку учета уведомления.An image that is too large might cause unnecessary resizing operations that could delay the posting of the notification.

Стиль большой фрагмент текстаBig text style

Большой фрагмент текста стиля приведен расширенный макет шаблона, используемого для отображения сообщений о длительных в уведомлениях.The Big Text style is an expanded layout template that you use for displaying long messages in notifications. Как все уведомления расширенный макет уведомление большой фрагмент текста изначально отображается в формате compact представления:Like all expanded layout notifications, the Big Text notification is initially displayed in a compact presentation format:

Пример уведомления об большой фрагмент текста

В таком формате отображается только фрагмент сообщения, завершаемый двумя точками.In this format, only an excerpt of the message is shown, terminated by two periods. Когда пользователь перетаскивает на уведомление, он расширяет для отображения сообщения уведомлений:When the user drags down on the notification, it expands to reveal the entire notification message:

Расширенный большой фрагмент текста уведомления

Этот формат развернутой макета также включает текст сводки в нижней части уведомление.This expanded layout format also includes summary text at the bottom of the notification. Максимальная высота большой фрагмент текста уведомлений — 256 точки распространения.The maximum height of the Big Text notification is 256 dp.

Чтобы создать большой фрагмент текста уведомления, необходимо создать экземпляр NotificationCompat.Builder объекта, как и раньше и затем создать экземпляр и добавить BigTextStyle объект NotificationCompat.Builder объекта.To create a Big Text notification, you instantiate a NotificationCompat.Builder object, as before, and then instantiate and add a BigTextStyle object to the NotificationCompat.Builder object. Пример:Here is an example:

// Instantiate the Big Text style:
Notification.BigTextStyle textStyle = new Notification.BigTextStyle();

// Fill it with text:
string longTextMessage = "I went up one pair of stairs.";
longTextMessage += " / Just like me. ";
//...
textStyle.BigText (longTextMessage);

// Set the summary text:
textStyle.SetSummaryText ("The summary text goes here.");

// Plug this style into the builder:
builder.SetStyle (textStyle);

// Create the notification and publish it ...

В этом примере текст сообщения и текст сводки, хранятся в BigTextStyle объекта (textStyle) перед передачей в NotificationCompat.Builder.In this example, the message text and summary text are stored in the BigTextStyle object (textStyle) before it is passed to NotificationCompat.Builder.

Стиль изображенияImage style

Изображение стиля (также называется общая картина стиля) является форматом расширенные уведомления, который можно использовать для отображения изображения в тексте уведомления.The Image style (also called the Big Picture style) is an expanded notification format that you can use to display an image in the body of a notification. Например, можно использовать на снимке экрана приложение или приложение по обмену фотографиями изображение уведомлений стиля для предоставления пользователю уведомление о доступности последнего образа, который был записан.For example, a screenshot app or a photo app can use the Image notification style to provide the user with a notification of the last image that was captured. Обратите внимание, что максимальная высота изображение уведомлений — 256 dp – Android будет изменяет размер изображения, чтобы поместиться в это ограничение максимальной высоты, в пределах доступной памяти.Note that the maximum height of the Image notification is 256 dp – Android will resize the image to fit into this maximum height restriction, within the limits of available memory.

Подобно всем расширен уведомления макета изображение уведомления сначала отображаются в компактной форме, отображающий фрагмент сопутствующий текст сообщения:Like all expanded layout notifications, Image notifications are first displayed in a compact format that displays an excerpt of the accompanying message text:

Уведомление Compact изображений показывает изображение не

Когда пользователь перетаскивает изображение уведомлений, он расширяет для отображения изображения.When the user drags down on the Image notification, it expands to reveal an image. Например вот расширенную версию предыдущего уведомления:For example, here is the expanded version of the previous notification:

Изображение выявляет Развернутое изображение уведомлений

Обратите внимание на то, что когда уведомление отображается в компактном формате, отображает текст уведомления (текст, который передается в конструктор уведомлений SetContentText метод, как показано выше).Notice that when the notification is displayed in compact format, it displays notification text (the text that is passed to the notification builder's SetContentText method, as shown earlier). Тем не менее когда уведомление развернута для отображения изображения, отображает текст сводки над изображением.However, when the notification is expanded to reveal the image, it displays summary text above the image.

Для создания изображение уведомления, необходимо создать экземпляр NotificationCompat.Builder объекта, как и раньше и затем создать и вставить BigPictureStyle в коллекцию NotificationCompat.Builder объекта.To create an Image notification, you instantiate a NotificationCompat.Builder object as before, and then create and insert a BigPictureStyle object into the NotificationCompat.Builder object. Пример:For example:

// Instantiate the Image (Big Picture) style:
Notification.BigPictureStyle picStyle = new Notification.BigPictureStyle();

// Convert the image to a bitmap before passing it into the style:
picStyle.BigPicture (BitmapFactory.DecodeResource (Resources, Resource.Drawable.x_bldg));

// Set the summary text that will appear with the image:
picStyle.SetSummaryText ("The summary text goes here.");

// Plug this style into the builder:
builder.SetStyle (picStyle);

// Create the notification and publish it ...

Как и SetLargeIcon метод NotificationCompat.Builder, BigPicture метод BigPictureStyle требует растрового изображения, которое будет отображаться в тексте уведомления.Like the SetLargeIcon method of NotificationCompat.Builder, the BigPicture method of BigPictureStyle requires a bitmap of the image that you want to display in the body of the notification. В этом примере DecodeResource метод BitmapFactory операций чтения, файл изображения, расположенный Resources/drawable/x_bldg.png и преобразует его в растровое изображение.In this example, the DecodeResource method of BitmapFactory reads the image file located at Resources/drawable/x_bldg.png and converts it into a bitmap.

Также можно отобразить изображения, которые не упакованы как ресурс.You can also display images that are not packaged as a resource. Например, в следующем примере кода загружает изображение из локального SD-карту и отображает его в изображение уведомлений:For example, the following sample code loads an image from the local SD card and displays it in an Image notification:

// Using the Image (Big Picture) style:
Notification.BigPictureStyle picStyle = new Notification.BigPictureStyle();

// Read an image from the SD card, subsample to half size:
BitmapFactory.Options options = new BitmapFactory.Options();
options.InSampleSize = 2;
string imagePath = "/sdcard/Pictures/my-tshirt.jpg";
picStyle.BigPicture (BitmapFactory.DecodeFile (imagePath, options));

// Set the summary text that will appear with the image:
picStyle.SetSummaryText ("Check out my new T-Shirt!");

// Plug this style into the builder:
builder.SetStyle (picStyle);

// Create notification and publish it ...

В этом примере файл изображения расположенный /sdcard/Pictures/my-tshirt.jpg загружается, изменяется до половины от его исходного размера и затем преобразуется в растровое изображение для использования в уведомлении:In this example, the image file located at /sdcard/Pictures/my-tshirt.jpg is loaded, resized to half of its original size, and then converted to a bitmap for use in the notification:

Пример футболку изображения в уведомлении

Если вы заранее не знаете размер файла изображения, рекомендуется поместить вызов BitmapFactory.DecodeFile в обработчик исключений – OutOfMemoryError исключение может быть вызвано, если изображение слишком велико для Android для изменения размера.If you don't know the size of the image file in advance, it's a good idea to wrap the call to BitmapFactory.DecodeFile in an exception handler – an OutOfMemoryError exception might be thrown if the image is too large for Android to resize.

Дополнительные сведения о загрузке и декодирование изображений большую битовую карту, см. в разделе загрузка больших растровых изображений эффективно.For more about loading and decoding large bitmap images, see Load Large Bitmaps Efficiently.

Стиль папки "Входящие"Inbox style

Папки "Входящие" формат — шаблон расширенный макет, предназначенный для отображения отдельных строк текста (например, в сводных ящик электронной почты) в тексте уведомления.The Inbox format is an expanded layout template intended for displaying separate lines of text (such as an email inbox summary) in the body of the notification. Папки "Входящие" в компактной форме сначала отображается уведомление формат:The Inbox format notification is first displayed in a compact format:

Пример уведомления об compact папки "Входящие"

Когда пользователь перетаскивает на уведомление, он расширяет, чтобы отобразить сводку по электронной почте, как показано на следующем снимке экрана:When the user drags down on the notification, it expands to reveal an email summary as seen in the screenshot below:

Пример уведомления об папки "Входящие" развернута

Чтобы создать папки "Входящие" уведомления, необходимо создать экземпляр NotificationCompat.Builder объекта, как и раньше и добавить InboxStyle объект NotificationCompat.Builder.To create an Inbox notification, you instantiate a NotificationCompat.Builder object, as before, and add an InboxStyle object to the NotificationCompat.Builder. Пример:Here is an example:

// Instantiate the Inbox style:
Notification.InboxStyle inboxStyle = new Notification.InboxStyle();

// Set the title and text of the notification:
builder.SetContentTitle ("5 new messages");
builder.SetContentText ("chimchim@xamarin.com");

// Generate a message summary for the body of the notification:
inboxStyle.AddLine ("Cheeta: Bananas on sale");
inboxStyle.AddLine ("George: Curious about your blog post");
inboxStyle.AddLine ("Nikko: Need a ride to Evolve?");
inboxStyle.SetSummaryText ("+2 more");

// Plug this style into the builder:
builder.SetStyle (inboxStyle);

Чтобы добавить новые строки текста в текст уведомления, вызовите Addline метод InboxStyle объекта (максимальная высота папки "Входящие" уведомлений — 256 dp).To add new lines of text to the notification body, call the Addline method of the InboxStyle object (the maximum height of the Inbox notification is 256 dp). Обратите внимание, что, в отличие от большой фрагмент текста стиль, папки "Входящие" стиль поддерживает отдельные строки текста в текст уведомления.Note that, unlike Big Text style, the Inbox style supports individual lines of text in the notification body.

Можно также использовать папки "Входящие" стиля для всех уведомлений, необходимые для отображения отдельные строки текста в развернутом виде.You can also use the Inbox style for any notification that needs to display individual lines of text in an expanded format. Например папки "Входящие" стиля уведомлений можно использовать для объединения нескольких уведомлений в состоянии ожидания в сводки уведомление – можно обновить один папки "Входящие" стиля уведомлений с помощью new строки содержимое уведомления (см. в разделе обновление уведомление выше), а не создавать уведомления о новых, главным образом как непрерывный поток.For example, the Inbox notification style can be used to combine multiple pending notifications into a summary notification – you can update a single Inbox style notification with new lines of notification content (see Updating a Notification above), rather than generate a continuous stream of new, mostly similar notifications.

Настройка метаданныхConfiguring metadata

NotificationCompat.Builder включает методы, которые можно вызвать, чтобы задать метаданные о уведомления, такие как приоритет, видимость и категории.NotificationCompat.Builder includes methods that you can call to set metadata about your notification, such as priority, visibility, and category. Android использует эти сведения — вместе с настройки параметров пользователя — для определения того, как и когда отображать уведомления.Android uses this information — along with user preference settings — to determine how and when to display notifications.

Параметры приоритетаPriority settings

Приложения, работающие на Android 7.1 и нижний необходимо задать приоритет непосредственно на в уведомлении.Apps running on Android 7.1 and lower need to set the priority directly on the notification itself. Параметр приоритета уведомления определяет два результата, когда публикуется уведомление:The priority setting of a notification determines two outcomes when the notification is published:

  • Где уведомление отображается относительно других уведомлений.Where the notification appears in relation to other notifications. Например, с высоким приоритетом уведомления передаются выше нижней приоритет уведомления на панели уведомлений вне зависимости от при публикации каждого уведомления.For example, high priority notifications are presented above lower priority notifications in the notifications drawer, regardless of when each notification was published.

  • Следует ли отображать уведомление в формат Heads-up уведомлений (Android 5.0 и более поздние версии).Whether the notification is displayed in the Heads-up notification format (Android 5.0 and later). Только высокой и максимальное приоритет уведомления отображаются в виде информационных индикаторов уведомления.Only high and maximum priority notifications are displayed as Heads-up notifications.

Xamarin.Android определяет следующие перечисления для задания приоритета уведомлений:Xamarin.Android defines the following enumerations for setting notification priority:

  • NotificationPriority.Max – Предупредит пользователя об срочные или важные условия (например, входящего вызова, направлениях включить, отключить или получен сигнал тревоги).NotificationPriority.Max – Alerts the user to an urgent or critical condition (for example, an incoming call, turn-by-turn directions, or an emergency alert). На Android 5.0 и более поздних версий максимальный приоритет уведомления отображаются в формате информационных индикаторов.On Android 5.0 and later devices, maximum priority notifications are displayed in Heads-up format.

  • NotificationPriority.High – Информирует пользователя о важных событиях (например, для важных сообщений электронной почты или получения сообщения чата в реальном времени).NotificationPriority.High – Informs the user of important events (such as important emails or the arrival of real-time chat messages). На Android 5.0 и более поздних версий с высоким приоритетом уведомления отображаются в формате информационных индикаторов.On Android 5.0 and later devices, high priority notifications are displayed in Heads-up format.

  • NotificationPriority.Default – Уведомляет пользователя о условия, которым должны средний уровень важности.NotificationPriority.Default – Notifies the user of conditions that have a medium level of importance.

  • NotificationPriority.Low – Не срочные сведения, что пользователь должен получать информацию (например, напоминания обновления программного обеспечения или обновления социальной сети).NotificationPriority.Low – For non-urgent information that the user needs to be informed of (for example, software update reminders or social network updates).

  • NotificationPriority.Min – Справочные сведения, что пользователь видит только тогда, когда Просмотр уведомления (например, расположение или погоды сведения).NotificationPriority.Min – For background information that the user notices only when viewing notifications (for example, location or weather information).

Чтобы задать приоритет уведомления, вызовите SetPriority метод NotificationCompat.Builder объекта, передавая в уровень приоритета.To set the priority of a notification, call the SetPriority method of the NotificationCompat.Builder object, passing in the priority level. Пример:For example:

builder.SetPriority (NotificationPriority.High);

В следующем примере, уведомление с высоким приоритетом, «Важное сообщение!»In the following example, the high priority notification, "An important message!" отображается в верхней части откройте панель уведомлений:appears at the top of the notification drawer:

Пример уведомления об высоким приоритетом

Так как это уведомление высоким приоритетом, он также отображается в виде информационных индикаторов уведомлений поверх экрана текущее действие пользователя в Android 5.0:Because this is a high-priority notification, it is also displayed as a Heads-up notification above the user's current activity screen in Android 5.0:

Пример уведомления об информационных индикаторов

В следующем примере уведомление низким приоритетом «Рассматривать за день» отображается уведомление уровня батареи более высоким приоритетом:In the next example, the low-priority "Thought for the day" notification is displayed under a higher-priority battery level notification:

Пример уведомления об низким приоритетом

Так как низкоприоритетные это уведомление «Идейным за день», Android не отобразит его в формате Heads-up.Because the "Thought for the day" notification is a low-priority notification, Android will not display it in Heads-up format.

Примечание

В Android 8.0 и более поздних версий приоритет канала и пользователем параметров уведомлений будет определить приоритет уведомления.On Android 8.0 and higher, the priority of the notification channel and user settings will determine the priority of the notification.

Параметры видимостиVisibility settings

Начиная с Android 5.0 видимость доступен параметр для управления объем содержимого уведомления появляются на экране блокировки безопасности.Beginning with Android 5.0, the visibility setting is available to control how much notification content appears on the secure lock screen. Xamarin.Android определяет следующие перечисления для настройки видимости уведомлений:Xamarin.Android defines the following enumerations for setting notification visibility:

  • NotificationVisibility.Public – Полный текст уведомления отображается на экране блокировки безопасности.NotificationVisibility.Public – The full content of the notification is displayed on the secure lock screen.

  • NotificationVisibility.Private – Отображаются только важные сведения на экране блокировки безопасности (например, значок и имя приложения, его публикации), но остальная часть сведений об уведомлении скрыты.NotificationVisibility.Private – Only essential information is displayed on the secure lock screen (such as the notification icon and the name of the app that posted it), but the rest of the notification's details are hidden. По умолчанию все уведомления NotificationVisibility.Private.All notifications default to NotificationVisibility.Private.

  • NotificationVisibility.Secret – Ничего не отображается на экране блокировки безопасности, даже не значок уведомления.NotificationVisibility.Secret – Nothing is displayed on the secure lock screen, not even the notification icon. Содержимое уведомления становится доступна только в том случае, после этот пользователь разблокирует устройства.The notification content is available only after the user unlocks the device.

Задание видимости уведомления, вызов приложения SetVisibility метод NotificationCompat.Builder объекта, передавая параметр видимости.To set the visibility of a notification, apps call the SetVisibility method of the NotificationCompat.Builder object, passing in the visibility setting. Например, этот вызов SetVisibility делает уведомление Private:For example, this call to SetVisibility makes the notification Private:

builder.SetVisibility (NotificationVisibility.Private);

Когда Private отправке уведомления, только имя и значок приложения отображается на экране блокировки безопасности.When a Private notification is posted, only the name and icon of the app is displayed on the secure lock screen. Вместо сообщения уведомления пользователь видит «Разблокировать устройства для этого уведомления см. в разделе»:Instead of the notification message, the user sees "Unlock your device to see this notification":

Разблокировать сообщения уведомлений устройства

В этом примере NotificationsLab имя исходного приложения.In this example, NotificationsLab is the name of the originating app. Это исправленная версия уведомление отображается версия только когда на экране блокировки является безопасным (т. е. защищено с помощью ПИН-кода, шаблон или пароль) – доступен Если экран блокировки не является безопасным, полный текст уведомления на экране блокировки.This redacted version of the notification appears only when the Lock screen is secure (i.e., secured via PIN, pattern, or password) – if the lock screen is not secure, the full content of the notification is available on the lock screen.

Параметры категорииCategory settings

Начиная с Android 5.0, стандартные категории доступны для ранжирования и фильтрации уведомлений.Beginning with Android 5.0, predefined categories are available for ranking and filtering notifications. Xamarin.Android предоставляет следующие перечисления для следующих категорий:Xamarin.Android provides the following enumerations for these categories:

  • Notification.CategoryCall – Телефонный звонок.Notification.CategoryCall – Incoming phone call.

  • Notification.CategoryMessage – Текст входящего сообщения.Notification.CategoryMessage – Incoming text message.

  • Notification.CategoryAlarm – Сигнал условие или таймер срока действия.Notification.CategoryAlarm – An alarm condition or timer expiration.

  • Notification.CategoryEmail – Входящее сообщение электронной почты.Notification.CategoryEmail – Incoming email message.

  • Notification.CategoryEvent – События календаря.Notification.CategoryEvent – A calendar event.

  • Notification.CategoryPromo – Рекламное сообщение или объявления.Notification.CategoryPromo – A promotional message or advertisement.

  • Notification.CategoryProgress – Ход выполнения фоновой операции.Notification.CategoryProgress – The progress of a background operation.

  • Notification.CategorySocial – Социальные сети обновления.Notification.CategorySocial – Social networking update.

  • Notification.CategoryError – Сбой в фоновом процессе операция или проверки подлинности.Notification.CategoryError – Failure of a background operation or authentication process.

  • Notification.CategoryTransport – Обновление воспроизведения мультимедиа.Notification.CategoryTransport – Media playback update.

  • Notification.CategorySystem – Зарезервировано для системного использования (состояние системы или устройства).Notification.CategorySystem – Reserved for system use (system or device status).

  • Notification.CategoryService – Указывает, что фоновая служба запущена.Notification.CategoryService – Indicates that a background service is running.

  • Notification.CategoryRecommendation – Сообщение рекомендации, связанные с запущенного приложения.Notification.CategoryRecommendation – A recommendation message related to the currently running app.

  • Notification.CategoryStatus – Сведения об устройстве.Notification.CategoryStatus – Information about the device.

Когда уведомления были отсортированы, уведомления приоритет имеет приоритет над его параметр категории.When notifications are sorted, the notification's priority takes precedence over its category setting. К примеру, уведомление высоким приоритетом будет отображаться как информационных индикаторов, даже если он принадлежит Promo категории.For example, a high-priority notification will be displayed as Heads-up even if it belongs to the Promo category. Чтобы задать категорию уведомления, вызывать SetCategory метод NotificationCompat.Builder объекта, передавая параметр категории.To set the category of a notification, you call the SetCategory method of the NotificationCompat.Builder object, passing in the category setting. Пример:For example:

builder.SetCategory (Notification.CategoryCall);

Не беспокоить функция (новое в Android 5.0) фильтрует уведомления на основе категорий.The Do not disturb feature (new in Android 5.0) filters notifications based on categories. Например не беспокоить экрана в параметры позволяет исключить уведомления для телефонные звонки и сообщения:For example, the Do not disturb screen in Settings allows the user to exempt notifications for phone calls and messages:

Не беспокоить коммутаторы экрана

Когда пользователь настраивает не беспокоить блокировать все прерывания, за исключением телефонные звонки (как показано в приведенном выше снимке экрана), Android разрешает уведомлений с помощью настройки категории Notification.CategoryCall должна присутствовать и устройство в не беспокоить режим.When the user configures Do not disturb to block all interrupts except for phone calls (as illustrated in the above screenshot), Android allows notifications with a category setting of Notification.CategoryCall to be presented while the device is in Do not disturb mode. Обратите внимание, что Notification.CategoryAlarm уведомления никогда не блокируются не беспокоить режим.Note that Notification.CategoryAlarm notifications are never blocked in Do not disturb mode.

LocalNotifications образце показано, как использовать NotificationCompat.Builder для запуска второго действия для уведомления.The LocalNotifications sample demonstrates how to use NotificationCompat.Builder to launch a second activity from a notification. В этом примере кода рассматривается в с помощью локальных уведомлений в Xamarin.Android Пошаговое руководство.This sample code is explained in the Using Local Notifications in Xamarin.Android walkthrough.

Стили уведомленийNotification styles

Для создания большой фрагмент текста, изображение, или папки "Входящие" стиля уведомлений с помощью NotificationCompat.Builder, приложение должно использовать совместимости версий этих стилей.To create Big Text, Image, or Inbox style notifications with NotificationCompat.Builder, your app must use the compatibility versions of these styles. Например, чтобы использовать большой фрагмент текста стиля, создать экземпляр NotificationCompat.BigTextstyle:For example, to use the Big Text style, instantiate NotificationCompat.BigTextstyle:

NotificationCompat.BigTextStyle textStyle = new NotificationCompat.BigTextStyle();

// Plug this style into the builder:
builder.SetStyle (textStyle);

Аналогичным образом, приложение может использовать NotificationCompat.InboxStyle и NotificationCompat.BigPictureStyle для папки "Входящие" и изображение стили, соответственно.Similarly, your app can use NotificationCompat.InboxStyle and NotificationCompat.BigPictureStyle for Inbox and Image styles, respectively.

Уведомление приоритета и категорииNotification priority and category

NotificationCompat.Builder поддерживает SetPriority (доступны начиная с Android версии 4.1).NotificationCompat.Builder supports the SetPriority method (available starting with Android 4.1). Тем не менее SetCategory метод не поддерживаемых NotificationCompat.Builder поскольку категории являются частью новой системы метаданных уведомлений, появившихся в Android 5.0.However, the SetCategory method is not supported by NotificationCompat.Builder because categories are part of the new notification metadata system that was introduced in Android 5.0.

Для поддержки более старых версиях Android, где SetCategory будет недоступен, ваш код может проверять уровень API во время выполнения для условного вызова SetCategory при уровне API равным или больше, чем Android 5.0 (уровень API 21):To support older versions of Android, where SetCategory is not available, your code can check the API level at runtime to conditionally call SetCategory when the API level is equal to or greater than Android 5.0 (API level 21):

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) {
    builder.SetCategory (Notification.CategoryEmail);
}

В этом примере приложения требуемой версии .NET Framework присваивается Android 5.0 и минимальной версии Android присваивается Android 4.1 (уровень API 16).In this example, the app's Target Framework is set to Android 5.0 and the Minimum Android Version is set to Android 4.1 (API Level 16). Так как SetCategory — доступная в уровень API 21 и более поздние версии, будет вызывать этот пример кода SetCategory только он станет доступен – не вызовет SetCategory при меньше 21 уровень API.Because SetCategory is available in API level 21 and later, this example code will call SetCategory only when it is available – it will not call SetCategory when the API level is less than 21.

Видимость экрана блокировкиLock screen visibility

Так как Android не поддерживает уведомления на экране блокировки до Android 5.0 (уровень API 21), NotificationCompat.Builder не поддерживает SetVisibility метод.Because Android did not support lock screen notifications before Android 5.0 (API level 21), NotificationCompat.Builder does not support the SetVisibility method. Как описано выше для SetCategory, ваш код может проверять уровень API во время выполнения и вызов SetVisiblity только он станет доступен:As explained above for SetCategory, your code can check the API level at runtime and call SetVisiblity only when it is available:

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) {
    builder.SetVisibility (Notification.Public);
}

СводкаSummary

В этой статье описываются способы создания локальных уведомлений в Android.This article explained how to create local notifications in Android. Описывались Анатомия уведомление, оно было рассмотрено, как использовать NotificationCompat.Builder для создания уведомлений, как уведомления стиля в крупных значков большой фрагмент текста, изображение и папки "Входящие" форматы, как задать параметры метаданные, такие как приоритет, видимость и категорию уведомлений и запуск действия для уведомления.It described the anatomy of a notification, it explained how to use NotificationCompat.Builder to create notifications, how to style notifications in large icon, Big Text, Image and Inbox formats, how to set notification metadata settings such as priority, visibility, and category, and how to launch an activity from a notification. В этой статье также описано, как работают эти параметры уведомлений с помощью информационных индикаторов новый экран блокировки, и не беспокоить функции, представленные в Android 5.0.This article also described how these notification settings work with the new Heads-up, lock screen, and Do not disturb features introduced in Android 5.0. Наконец, вы узнали, как использовать NotificationCompat.Builder для поддержки уведомлений совместимости с более ранних версиях Android.Finally, you learned how to use NotificationCompat.Builder to maintain notification compatibility with earlier versions of Android.

Рекомендации по проектированию уведомления для Android, см. в разделе уведомления.For guidelines about designing notifications for Android, see Notifications.