Приоритеты уведомлений WNSWNS Notification Priorities

Установив приоритет уведомления с простым заголовком для сообщений POST в WNS, вы можете управлять доставкой уведомлений в ситуациях, зависящих от аккумулятора.By setting a notification's priority with a simple header to WNS POST messages, you can control how notifications are delivered in battery sensitive situations.

Power On WindowsPower on Windows

Так как больше пользователей работает только на устройствах с питанием от аккумулятора, минимизация энергопотребления стало стандартным требованием для всех приложений.As more users are working only on battery powered devices, minimizing power usage has become a standard requirement for all apps. Если приложения потребляют больше энергии, чем предоставленное ими значение, пользователи могут удалить эти приложения.If apps consume more energy than the value they provide, users might uninstall the apps. Хотя операционная система Windows снижает энергопотребление на батарее, когда это возможно, ответственность за эффективность работы приложения.While the Windows operating system reduces power usage on the battery where possible, it is the app's responsibility to work efficiently.

Приоритеты WNS — это один из способов переместить некритическую работу за пределы аккумулятора.WNS priorities is one way to move non-critical work off the battery. Приоритеты WNS сообщают системе, какие уведомления должны доставляться мгновенно, и что может ожидать, пока устройство не будет подключено к источнику питания.The WNS priorities tell the system which notifications should be delivered instantly and which can wait until the device is plugged into a power source. С помощью этих указаний система может доставлять уведомления на точное время, наиболее ценное для пользователя и приложения.With these hints, the system can deliver the notifications the exact time they are the most valuable to both the user and the app.

Режимы питания на устройствеPower modes on the device

Каждое устройство Windows работает с различными режимами электропитания (батарея, экономия заряда и заряд аккумулятора), и пользователи предполагают разные поведения приложений в различных режимах электропитания.Every Windows device operates through a variety of power modes (battery, battery saver, and charge), and users expect different behaviors from apps in different power modes. Если устройство включено, все уведомления должны доставляться.When the device is on, all notifications should be delivered. В режиме экономии заряда следует доставлять только самые важные уведомления.In battery saver mode, only the most important notifications should be delivered. Пока устройство подключено, можно выполнить синхронизацию или несинхронизированные критические операции.While the device is plugged in, sync or non-time critical operations can be completed.

Windows не знает, какие уведомления важны для любого пользователя или приложения, поэтому система полностью полагается на приложения, чтобы установить правильный приоритет для своих уведомлений.Windows does not know which notifications are important to any user or app, so the system relies totally on apps to set the right priority for their notifications.

ПриоритетыPriorities

Существует четыре приоритета, которые могут использоваться приложением при отправке push-уведомлений.There are four priorities available for an app to use when sending push notifications. Приоритет задается для отдельных уведомлений, что позволяет выбрать, какие уведомления должны быть доставлены мгновенно (например, сообщение IM) и какие из них могут ожидать (например, можно обратиться к обновлениям фотографий).The priority is set on individual notifications, allowing you to choose which notifications need to be delivered instantly (for example, an IM message) and which ones can wait (for example, contact photo updates).

Ниже перечислены приоритеты.The priorities are:

ПриоритетPriority Переопределение пользователяUser Override ОписаниеDescription ПримерExample
ВысокийHigh Да — пользователь может блокировать все уведомления из приложения или может препятствовать регулированию приложения в режиме экономии энергии.Yes – user can block all notifications from an app OR can prevent an app from being throttled in battery saver mode. Наиболее важные уведомления, которые должны быть немедленно доставлены в любой ситуации, когда устройство может получать уведомления.The most important notifications that must be delivered right away in any circumstance when the device can receive notifications. Такие вещи, как вызовы VoIP или критические оповещения, которые должны относить устройство к этой категории.Things like VoIP calls or critical alerts that should wake the device fall into this category. Звонки VoIP, критические по времени оповещенияVoIP calls, time- critical alerts
СреднийMedium Да — пользователь может блокировать все уведомления из приложения или может препятствовать регулированию приложения в режиме экономии энергии.Yes – user can block all notifications from an app OR can prevent an app from being throttled in battery saver mode. Это все, что не так важно, но не нужно сразу же, но пользователи будут раздражен, если они не работают в фоновом режиме.These are things that are not as important, things that don’t need to happen right away, but users would be annoyed if they are not running in the background. Синхронизация дополнительной учетной записи электронной почты, Обновление динамических плиток.Secondary Email account sync, live tile updates.
НизкийLow Да — пользователь может блокировать все уведомления из приложения или может препятствовать регулированию приложения в режиме экономии энергии.Yes – user can block all notifications from an app OR can prevent an app from being throttled in battery saver mode. Уведомления, имеющие смысл только в том случае, если пользователь использует устройство или если фоновое действие имеет смысл.Notifications that only make sense when the user is using the device or when background activity makes sense. Они кэшируются и не обрабатываются до тех пор, пока пользователь не войдет в систему или не подключается к устройству.These are cached and not processed until the user signs in or plugs in their device. Состояние контакта (в сети или вне сети)Contact status (online/offline)
Очень низкийVery Low Нет — он не может препятствовать регулированию уведомлений с низким приоритетом в режиме экономии энергии.No – It cannot prevent very low priority notifications from being throttled in battery saver mode. Это почти то же самое, что и низкий приоритет, за исключением того, что пользователи не могут переопределять политику экономии заряда.This is almost the same as low priority except users cannot override the battery saver policy. Эти уведомления никогда не будут доставляться в заставку аккумулятора.These notifications will never be delivered in battery saver. Синхронизация файлов для службы синхронизации.Syncing files for a sync service.

Обратите внимание, что многие приложения будут иметь уведомления с разными приоритетами в течение жизненного цикла.Note that many apps will have notifications of different priority throughout their lifecycle. Так как приоритет установлен для каждого уведомления, это не является проблемой.Since the priority is set on a per-notification basis, this isn’t an issue. Приложение VoIP может отправить уведомление с высоким приоритетом для входящего звонка, а затем следовать ему с низким приоритетом, когда контакт переходит в режим «в сети».A VoIP app can send a high priority notification for an incoming call and then follow it up with a low priority one when a contact comes online.

Установка приоритетаSetting the priority

Установка приоритета для запроса уведомления выполняется в дополнительном заголовке запроса POST X-WNS-PRIORITY .Setting the priority on the notification request is done through an additional header on the POST request, X-WNS-PRIORITY. Это целочисленное значение от 1 до 4, которое соответствует приоритету:This is an integer value between 1 and 4 which maps to a priority:

Имя приоритетаPriority Name Значение X-WNS-PRIORITYX-WNS-PRIORITY Value По умолчанию для:Default for:
ВысокийHigh 11 Всплывающие уведомленияToasts
СредняяMeduim 22 Плитки и эмблемыTiles and Badges
НизкийLow 33 RawRaw
Очень низкийVery Low 44

Для обеспечения обратной совместимости Установка приоритета не требуется.To be backward compatible, setting a priority is not required. Если приложение не устанавливает приоритет своих уведомлений, система будет предоставлять приоритет по умолчанию.In case an app doesn’t set the priority of their notifications, the system will provide a default priority. Значения по умолчанию показаны на приведенной выше диаграмме и соответствуют поведению существующих версий Windows.The defaults are shown in the chart above and match the behavior of existing versions of Windows.

Подробный список поведения рабочего столаDetailed listing of desktop behavior

Если вы отправите приложение на множество различных SKU Windows, лучше всего следовать приведенной выше диаграмме.If you are shipping your app across many different SKUs of Windows, it is normally best to follow the chart in the above section.

Ниже перечислены более конкретные Рекомендуемые варианты поведения для каждого приоритета.More specific recommended behaviors for each priority are listed below. Это не гарантирует, что каждое устройство будет работать в точности в соответствии с диаграммой.This is not a guarantee that each device will work exactly according to the chart. Поставщики вычислительной техники могут настроить поведение по-разному, но большинство из них близко к этой диаграмме.OEMs are free to configure the behavior differently, but most are close to this chart.

Состояние устройстваDevice State ПРИОРИТЕТ: высокий.PRIORITY: High ПРИОРИТЕТ: среднийPRIORITY: Medium ПРИОРИТЕТ: низкийPRIORITY: Low ПРИОРИТЕТ: очень низкийPRIORITY: Very Low
Экран включен или подключенScreen On OR plugged in ДоставкаDeliver ДоставкаDeliver ДоставкаDeliver ДоставкаDeliver
Экран и питание от аккумулятораScreen Off AND on battery ДоставкаDeliver Если пользователь исключен: Доставка else: пакетнаяIf user exempted: deliver Else: batch Если пользователь исключен: Доставка else: Cache *If user exempted: deliver Else: cache * КэшCache
Экономия заряда включенаBattery Saver enabled Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache КэшCache
От аккумулятора + заставка аккумулятора включено + экран выключенOn battery + battery saver enabled + screen off Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache Если пользователь исключен: Доставка else: CacheIf user exempted: deliver Else: cache КэшCache

Обратите внимание, что уведомления с низким приоритетом будут доставляться по умолчанию для экрана и аккумулятора только для устройств на базе Windows Phone.Note that low priority notifications will be delivered by default for screen off and battery only for Windows Phone based devices. Это маинтиан совместимость с существовавшей ранее политикой MPNS.This is to maintian compatibility with preexisting MPNS policy. Также обратите внимание, что четвертая и пятая строки одинаковы, просто вызывая различные сценарии.Also note that the fourth and fifth rows are the same, just calling out different scenarios.

Чтобы исключить приложение в режиме экономии заряда, пользователи должны переходить в раздел "Использование аккумулятора приложением" в параметрах и выбрать "разрешить приложению выполнять фоновые задачи".To exempt an app in battery saver, users must go to the "Battery Usage by App" in Settings and select "Allow the app to run background tasks." Этот выбор пользователей исключают приложение от экономии заряда, чтобы получать уведомления о высокой, средней и низкой важности.This user selection exempts the app from battery saver for high, medium, and low priority notifications. Вы также можете вызвать API баккграундексекутионманажер, чтобы программно запросить разрешение пользователя.You can also call BackgroundExecutionManager API to programatically ask for the user's permission.