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

Установив для уведомления приоритет с простым заголовком сообщения WNS POST, вы можете управлять доставкой уведомлений в ситуациях с учетом батареи.

Включение в Windows

Поскольку все больше пользователей работают только на устройствах с питанием от батареи, минимизация энергопотребления стала стандартным требованием для всех приложений. Если приложения потребляют больше энергии, чем они предоставляют, пользователи могут удалить приложения. Хотя операционная система Windows снижает потребление энергии батареи, где это возможно, приложение несет ответственность за эффективную работу.

Приоритеты WNS — это один из способов перемещения некритических работ от батареи. Приоритеты WNS сообщают системе, какие уведомления должны доставляться мгновенно, а какие могут ждать, пока устройство не будет подключено к источнику питания. С помощью этих указаний система может доставлять уведомления точно в то время, когда они являются наиболее ценными как для пользователя, так и для приложения.

Режимы питания на устройстве

Каждое устройство с Windows работает в различных режимах питания (батарея, экономия заряда и заряда), и пользователи ожидают различного поведения от приложений в разных режимах питания. Когда устройство включено, должны быть доставлены все уведомления. В режиме экономии заряда должны доставляться только самые важные уведомления. Пока устройство подключено, можно выполнить операции синхронизации или некритичные по времени операции.

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

Приоритеты

Приложение может использовать четыре приоритета при отправке push-уведомлений. Приоритет задается для отдельных уведомлений, что позволяет выбрать, какие уведомления должны быть доставлены мгновенно (например, мгновенное сообщение) и какие из них могут ждать (например, обновления фотографий контакта).

Приоритеты:

Приоритет Переопределение пользователей Описание Пример
Высокий Да — пользователь может заблокировать все уведомления от приложения или запретить регулирование приложения в режиме экономии заряда. Наиболее важные уведомления, которые должны быть доставлены сразу при любых обстоятельствах, когда устройство может получать уведомления. К этой категории относятся такие вещи, как вызовы VoIP или критические оповещения, которые должны разбудить устройство. Вызовы VoIP, критически важные по времени оповещения
Средний Да — пользователь может заблокировать все уведомления от приложения или запретить регулирование приложения в режиме экономии заряда. Это вещи, которые не так важны, то, что не должно происходить сразу, но пользователи будут раздражать, если они не работают в фоновом режиме. Вторичная Email синхронизация учетной записи, динамические обновления плиток.
Низкий Да — пользователь может заблокировать все уведомления от приложения или запретить регулирование приложения в режиме экономии заряда. Уведомления, имеющие смысл только в том случае, если пользователь использует устройство или когда фоновая активность имеет смысл. Они кэшируются и не обрабатываются до тех пор, пока пользователь не войдет в систему или не подключит свое устройство. Состояние контакта (в сети или в автономном режиме)

Обратите внимание, что многие приложения будут иметь уведомления с разным приоритетом на протяжении всего жизненного цикла. Так как приоритет задается на основе каждого уведомления, это не проблема. Приложение VoIP может отправлять уведомление с высоким приоритетом для входящего звонка, а затем следить за ним с низким приоритетом при подключении контакта к сети.

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

Установка приоритета в запросе на уведомление выполняется с помощью дополнительного заголовка в запросе POST , X-WNS-PRIORITY. Это целочисленное значение от 1 до 4, которое сопоставляется с приоритетом:

Имя приоритета Значение X-WNS-PRIORITY По умолчанию для:
Высокий 1 Всплывающие уведомления
Средний 2 Плитки и эмблемы
Низкий 3 Raw

Чтобы обеспечить обратную совместимость, установка приоритета не требуется. Если приложение не задает приоритет уведомлений, система предоставит приоритет по умолчанию. Значения по умолчанию показаны на приведенной выше диаграмме и соответствуют поведению существующих версий Windows.

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

Если вы поставляете приложение через множество различных SKU Windows, обычно лучше следовать диаграмме в приведенном выше разделе.

Ниже перечислены более конкретные рекомендуемые варианты поведения для каждого приоритета. Это не гарантирует, что каждое устройство будет работать точно в соответствии с диаграммой. Изготовители оборудования могут настроить поведение по-разному, но большинство из них близки к этой диаграмме.

Состояние устройства ПРИОРИТЕТ: высокий ПРИОРИТЕТ: средний ПРИОРИТЕТ: низкий ПРИОРИТЕТ: Очень низкий
Экран включен или подключен Доставка Доставка Доставка Доставка
Экран выключен и на аккумуляторе Доставка Если пользователь исключен: deliver Else: cache Если пользователь исключен: deliver Else: cache * Кэш
Функция экономии заряда включена Если пользователь исключен: deliver Else: cache Если пользователь исключен: deliver Else: cache Если пользователь исключен: deliver Else: cache Кэш
На батарее + экономия заряда включен + экран выключен Если пользователь исключен: deliver Else: cache Если пользователь исключен: deliver Else: cache Если пользователь исключен: deliver Else: cache Кэш

Обратите внимание, что уведомления с низким приоритетом будут доставляться по умолчанию для выключения экрана и батареи только для устройств на основе Windows Phone. Это связано с мейнтианской совместимостью с уже существовающей политикой MPNS. Кроме того, обратите внимание, что четвертая и пятая строки являются одинаковыми, просто вызывая разные сценарии.

Чтобы исключить приложение в режиме экономии заряда, пользователи должны перейти к разделу "Использование батареи по приложениям" в разделе "Параметры" и выбрать "Разрешить приложению выполнять фоновые задачи". Этот выбор пользователем исключает приложение из экономии заряда для уведомлений с высоким, средним и низким приоритетом. Вы также можете вызвать API BackgroundExecutionManager для программного запрашивания разрешения пользователя.