Поделиться через


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

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

Power on Windows

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

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

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

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

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

Приоритеты

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

Приоритеты:

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

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

Задание приоритета

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

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

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

Подробное описание поведения настольного компьютера

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

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

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

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

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