This article needs to be updated. The reason given is: does the WNS still exist in/has it been changed for Windows 11?. Please help update this article to reflect recent events or newly available information. (March 2025)
Windows Push Notification Service (commonly referred to as Windows Notification Service or WNS) is a notification service developed by Microsoft for all devices running Microsoft Windows platforms. It allows for developers to send push data («toast» and «tile» updates) to Windows and Universal Windows Platform applications which implement the feature.[1] Designed as a successor to the Microsoft Push Notification Service, it was first supported on Windows 8 and subsequently on Windows Phone 8.1 upon its release.[2]
Windows Push Notification Service
Overview of the WNS architecture. |
|
Developer(s) | Microsoft |
---|---|
Target platform(s) | Windows Phone 8.1, Windows 8, Windows 8.1, Windows 10, Windows 10 Mobile |
Programming language(s) | C# |
Status | Active |
License | Closed-source |
Website | dev |
Design and compatibility
edit
The Windows Push Notification Service (WNS) was designed as a successor to the Microsoft Push Notification Service (MPNS), which was only supported natively on the Windows Phone 8 Operating System. Developers can still use the MPNS on apps that are installed on newer versions of Windows Mobile (Windows Phone 8 or Windows Phone 8.1), but only if the Windows application was already registered to use the MPNS and has been converted to a Microsoft Silverlight application and modified to re-target the new platform.[3]
In 2015, Microsoft announced that the WNS would be expanded to utilize the Universal Windows Platform architecture, allowing for push data to be sent to Windows 10, Windows 10 Mobile, Xbox, as well as other supported platforms using universal API calls and POST requests.[4]
During the 2015 Build keynote, Microsoft announced a Universal Windows Platform bridge that would allow Android and iOS software to be ported to Windows 10 Mobile and published to the Windows Store.[5] In August 2015, A version of the Microsoft Android bridge toolset was reported to be leaked and available on the internet along with its documentation.[6] The leaked toolset required developers to register and use the WNS to send notification data to ported applications, and would not allow for Google Cloud Messaging to be used instead. Microsoft later discontinued the Android bridge project in favor of continuing support for iOS application porting instead.[7]
During the 2016 Build keynote, Microsoft announced an update to the WNS and the Windows 10 Operating System that will allow for Android and iOS devices to forward push notifications received to Windows 10 to be viewed and discarded.[8]
The architecture of the Windows Push Notification Service is similar to that of its predecessor, in that it consists of servers and interfaces that generate, maintain, store, and authenticate unique identifiers (called Channel URI Identifiers) for all devices that register to use the service.[2] When a device enrolls to receive data and notification information using the WNS, it first sends a device registration request to the WNS network. The WNS network acknowledges the request, and responds with the device’s unique Channel URI Identifier.[9] Typically, the device will then send its identifier to a server owned by the developer so that it can be stored and used for sending notifications.[1] When the app developer wishes to transmit a notification or other WNS data to the device, it will transmit a POST request to the WNS network.[10] The network will acknowledge and authenticate the request. If the authentication succeeds, the data to be transmitted is enqueued and then sent to the device from the WNS network using the Channel URI Identifier.[citation needed]
- ^ a b «Windows 8 push notifications». June 3, 2012. Archived from the original on October 12, 2016. Retrieved May 28, 2016.
- ^ a b «Windows Push Notification Services (WNS) overview (Windows Runtime apps)». Microsoft. 31 August 2015. Archived from the original on November 15, 2017. Retrieved November 29, 2015.
- ^ «Choosing MPNS or WNS for a Windows Phone Silverlight 8.1 app». Microsoft. Archived from the original on March 4, 2016. Retrieved November 4, 2015.
- ^ Gallo, Kevin (March 2, 2015). «A first look at the Windows 10 universal app platform». Microsoft. Archived from the original on December 30, 2016. Retrieved November 29, 2015.
- ^ Hachman, Mark (August 6, 2015). «Microsoft releases iOS-to-Windows app maker Windows Bridge to open source». PC World. IDG. Archived from the original on July 4, 2017. Retrieved October 9, 2015.
- ^ Saran, Cliff (August 18, 2015). «Android for Windows Mobile tools leaked on web». Computer Weekly. Archived from the original on March 11, 2022. Retrieved May 28, 2016.
- ^ Jo Foley, Mary (February 25, 2016). «Microsoft: Our Android Windows 10 bridge is dead, but iOS, Win32 ones moving ahead». ZDNet. Archived from the original on October 26, 2021. Retrieved February 26, 2016.
- ^ Ligas, Nicola (April 1, 2016). «Windows 10 will support notifications from Android (ah yes, even Windows 10 Mobile)». Smartworld.it. Archived from the original on May 12, 2016. Retrieved May 28, 2016.
- ^ «Windows Push Notification Services (WNS) overview». Microsoft. May 4, 2016. Archived from the original on November 16, 2016. Retrieved May 28, 2016.
- ^ Snoei, Ton. «Windows Phone 8.1 Universal App Push Notifications (WNS) – Part 1». Snoei.net. Archived from the original on May 22, 2016. Retrieved May 28, 2016.
- Official website
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Appearance settings
-
Home
-
News
- Windows Push Notification User Service High CPU/Memory Usage
By Aurelie | Follow |
Last Updated
What is Windows Push Notification User Service? How to fix Windows Push Notification User Service high CPU or memory usage? Read this post from MiniTool Website carefully, and you will be enlightened.
Windows Push Notifications User Service High CPU Usage
Windows Push Notifications User Service is a background system process that manages push notifications from different services and applications. Usually, it might consume some system resources and the impact is minimal.
However, what should you do if you find this process is using excessive resource usage on Windows 10/11? In this post, we will explore how to fix Windows Push Notification User Service high CPU, disk, or memory usage for you.
Tips:
High CPU issues like Windows Push Notification User Service high CPU usage might slow down your computer, even making your computer freezing and unresponsive. Therefore, it is strongly recommended to create a daily backup when you are using your computer. To do so, MiniTool ShadowMaker is worth trying. This free PC backup software is aimed to provide easy and professional data protection and disaster recovery solutions for individuals and companies. Get the free trial and have a whirl!
MiniTool ShadowMaker TrialClick to Download100%Clean & Safe
How to Fix Windows Push Notifications User Service High CPU Usage on Windows 10/11?
Fix 1: Terminate the Process Manually
Most of the time, a simple restart of this process might help to solve some problems like Windows Push Notification User Service high CPU usage. To do so:
Step 1. Press Ctrl + Shift + Esc to launch Task Manager.
Step 2. In the Details tab, locate Service Host: Windows Push Notification User Service and then right-click on it to choose End task.
Fix 2: Disable All Notifications
If there are so many notifications from different apps, no wonder you will receive Windows Push Notification User Service high CPU usage. In this condition, you can choose to stop receiving all notifications to fix this issue.
Step 1. Press Win + I to open Windows Settings.
Step 2. Go to System > Notification & actions > toggle off all notifications.
Fix 3: Restart Windows Push Notifications User Service
When certain background services or applications can not work properly, you can consider restarting them. Follow these steps:
Step 1. Press Win + R to open the Run box.
Step 2. Type services.msc and hit Enter to launch Services.
Step 3. In the services menu, find Windows Push Notification User Service and right-click on it to choose Properties.
Step 4. If this service is running, hit Stop and then restart it. If it is stopped, hit Start to run it.
Fix 4: Perform a Clean Boot
Third-party programs might be responsible for issues like Windows Push Notification User Service high CPU usage. If this is the case, you can perform a clean boot to exclude their interference. To do so:
Step 1. Type system configuration in the search bar and hit Enter.
Step 2. In the Services tab, tick Hide all Microsoft services and hit Disable all.
Step 3. Head to the Startup tab, click on Open Task Manager and then disable all third-party apps & programs.
Step 4. Go back to the Services tab and hit Apply & OK to save the changes.
Step 5. Restart your computer to enter the clean boot state to check if Windows Push Notification User Service high memory or CPU usage persists. If not, a third-party could be to blame. Then you need to uninstall all recently installed applications to see if it works.
Fix 5: Run SFC & DISM
Chances are that some system files are corrupted or missing. Therefore, you can run SFC and DISM in sequence to detect and repair these system files. Here’s how to do it:
Step 1. Launch Command Prompt with administrative privilege.
Step 2. In the command window, type sfc /scannow and hit Enter.
Step 3. After completion, restart your computer.
Step 4. Launch an administrative Command Prompt and run the following commands one by one.
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
Final Words
After reading through this post, Windows Push Notification User Service high resource consumption will not be a concerning problem and your operating system will run smoothly.
About The Author
Position: Columnist
Aurelie is a passionate soul who always enjoys researching & writing articles and solutions to help others. Her posts mainly cover topics related to games, data backup & recovery, file sync and so on. Apart from writing, her primary interests include reading novels and poems, travelling and listening to country music.
Аннотация: Для обновления плитки, установки индикатора уведомления или отправки всплывающего уведомления настолько быстро, насколько позволяет система, и для персонализации содержимого (как в случае с напоминаниями календаря или оповещениями об электронной почте) используются push-уведомления.
Вот мы и добрались до того места этой лекции, где мы можем отвлечься от исполняющихся приложений и посмотреть на больше интересных вещей, которые происходят в глубинах системы. Раньше, в «Периодических обновлениях», мы узнали, что самый короткий интервал, который может использовать этот метод, слишком велик по компьтерным меркам: 30 минут. Это долго и по многим человеческим стандартам, особенно тогда, когда пользователь по-настоящему желает знать, что происходит с любым источником информации, к которому подключено ваше приложение.
Для обновления плитки, установки индикатора уведомления или отправки всплывающего уведомления настолько быстро, насколько позволяет система, и для персонализации содержимого (как в случае с напоминаниями календаря или оповещениями об электронной почте), нужно быть немного настойчивее и использовать push-уведомления. Это уведомления, которые поступают в систему от агента, расположенного за её пределами, обычно – от сервиса, который отслеживает состояние каких-то других источников информации и обнаруживает условия, когда нужно отправить уведомление. Мы видели этот механизм в разделе «Четыре источника для обновлений и уведомлений» и на
рис.
4.14. Подводя итоги, можно сказать:
- При запуске, приложение запрашивает URI канала для каждой из своих динамических плиток и затем отправляет эти URI связанному с ним веб-сервису. Приложению следует делать это каждый раз при запуске, так как период истечения срока действия для WNS-канала – 30 дней . Каждый URI канала уникален для пользователя, плитки и устройства.
- Веб-сервис сохраняет URI канала и связывает его с пользователем для настройки содержимого уведомлений для него (как, опять же, происходит с оповещениями об электронной почте и о событиях календаря, уведомлениями об активности друзей и так далее).
- При необходимости веб-сервис отправляет обновление (полезные данные XML) в этот канал.
- WNS, в свою очередь, отправляет уведомление на устройство клиента, где приложение запросило URI канала. Это уведомление может обновлять плитки, индикаторы уведомлений, вызывать показ всплывающих уведомлений и обновлять данные на экране блокировки (при условии наличия соответствующих приложений экрана блокировки и фоновых задач).
Кроме того, возможно, и службе, и WNS, отправлять то, что называется необработанными уведомлениями (raw notification), которые могут включать в себя любую полезную нагрузку, которая вам нужна: надо лишь, чтобы что-то прослушивало их, так как Windows не будет знать, что делать с этими данными. Приложение переднего плана может прослушивать их посредством события PushNotificationChannel.onpushnotificationreceived; приложение экрана блокировки может сделать это с помощью фоновой задачи. В последнем случае необработанные уведомления обычно используются для доставки информации фоновой задаче и отправки других уведомлений в ответ, или для обновления данных приложения.
Прежде чем вы сможете сделать что-либо в приложении, однако, вам нужно следовать инструкциям, описанным в материале «Проверка подлинности с помощью службы push-уведомлений Windows (WNS)» (http://msdn.microsoft.com/library/windows/apps/hh465407.aspx) в Центре разработчиков Windows (это – часть целой серии материалов «Отправка push-уведомлений» (http://msdn.microsoft.com/library/windows/apps/hh465460.aspx)). Этот материал проведет вас по шагам, которые необходимо произвести в Информационной панели Магазина Windows (Windows Store Dashboard) для получения Идентификатора безопасности пакета (Package Security Identifie) (SID) и секретного ключа, которые ваш веб-сервис должен использовать для прохождения проверки подлинности при помощи WNS.
Это сделано, теперь давайте пройдёмся по каждому из этих шагов, используя Сценарии 1 – 3 того же самого примера «Push-уведомления и периодические уведомления, клиентская часть» (http://code.msdn.microsoft.com/windowsapps/Push-and-periodic-de225603), который мы использовали ранее при работе с периодическими обновлениями.
Примечание. Так как URI канала уникально для сочетания приложение+пользователь+устройство, использование push-уведомлений может создать серьезную нагрузку на ваш веб-сервис, который должен записывать и поддерживать канал для каждой отдельной плитки каждого пользовательского устройства и затем решать, когда и какие уведомления отправлять на каждый из каналов. Если ваше приложение станет популярным, это потребует масштабирования вашего сервиса для потенциально возможной ситуации, когда придётся управлять тысячами или даже миллионами URI каналов. По этой причине, серьезно подойдите к оценке того, подходят ли для вашего сценария периодические уведомления, особенно для обновлений, которые не относятся к конкретному пользователю, так как подобное гораздо легче выполнить на стороне сервиса.
Запрос и кэширование URI канала (приложение)
Запрос URI канала выполняется с помощью объекта Windows.Networking.PushNotifications.PushNotificationChannelManager. У этого управляющего объекта есть лишь два метода: createPushNotificationChannelForApplicationAsync и createPushNotificationChannelForSecondaryTileAsync. Первый связан с приложением и всплывающими уведомлениями. Второй предназначен для использования с дополнительными плитками и принимает аргумент tileId для идентификации конкретной плитки.
Результат обеих асинхронных операций – это объект PushNotificationChannel , который будет передан обработчику завершения, как показано в Сценарии 1 примера (начинается в js/scenario1.js, затем переходит в js/notifications.js):
var channelOperation; // Канал для плитки приложения if (isPrimaryTile) { channelOperation = Windows.Networking.PushNotifications.PushNotificationChannelManager .createPushNotificationChannelForApplicationAsync(); } else { // Канал для дополнительной плитки channelOperation = Windows.Networking.PushNotifications.PushNotificationChannelManager .createPushNotificationChannelForSecondaryTileAsync(itemId); } channelOperation.done(function (newChannel) { // Отправка канала веб-сервису }; /* обработчик ошибок */ );
Объект PushNotificationChannel (newChannel в коде) это простой объект с несколькими членами, но они очень важны:
- expirationTime Свойство только для чтения, показывающее, когда истекает срок действия канала – уведомления, отправленные в этот канал после истечения срока, отклоняются. Приложение должно обновлять, при необходимости, свой канал, для того, чтобы предотвратить перебои в поступлении уведомлений.
- uri Только для чтения, содержит URI по которому веб-сервис приложения отправляет уведомления
- close Метод, который объявляет канал недействительным.
- pushnotificationreceived Событие, которое вызывается, когда уведомление поступает на клиентское устройство из канала уведомления. Оно вызывается только для приложения, которое находится на переднем плане.
Вашему приложению следует пройти через эти процедуры для того, чтобы получить необходимый URI канала, когда оно запускается или восстанавливается (в особенности, если для какого-то канала истекло время, показанное в expirationTime). Вряд ли приложение будет находиться очень долго в приостановленном режиме, но это возможно. Более того, если вы обеспокоены тем, что ваше приложение может не запускаться более чем 30 дней, вы можете реализовать фоновую задачу на основе триггера обслуживания (maintenance trigger) для этих целей. Смотрите «Задачи для триггеров обслуживания» дальше в этой лекции и Сценарий 2 примера.
Снова напоминаю, что у вас может быть больше, чем один URI канала, если вы так же используете push-уведомления для дополнительных плиток, как и для обычной плитки приложения. В этом случае вы будете работать с различными URI канала для каждой плитки.
Каждый раз, выполняя этот процесс, сохраняйте URI канала для каждой плитки в локальных данных приложения. Его вы можете проверить при следующих запусках, и если URI тот же самый, который вы уже получили и отправили вашему веб-сервису, в таком случае вы можете избежать ненужной траты сетевого трафика.
Отправка URI вашему веб-сервису может быть выполнена с помощью простого вызова WinJS.xhr, как в примере (внутри channelOperation.done). Здесь мы так же видим проверки на то, не является ли URI тем же самым, что и раньше.
channelOperation.done(function (newChannel) { // _urls[] это массив идентификаторов каналов для основной и дополнительной плиток var tileData = that._urls[itemId]; // Отправка URI канала, если клиент не зафиксировал отправку того же самого // uri на сервер if (tileData && newChannel.uri === tileData.channelUri) { // Сохраняет URI в локальных данных приложения that._updateUrl(url, newChannel.uri, itemId, isPrimaryTile); completed(newChannel); } else { WinJS.xhr({ type: "POST", url: url, headers: { "Content-Type": "application/x-www-form-urlencoded" }, data: "channelUri=" + encodeURIComponent(newChannel.uri) + "&itemId=" + encodeURIComponent(itemId) }).done(function (request) { // Обновление данных на клиенте если отправка URI канала прошла успешно. // Если это не удалось, вы можете решить настроить другую фоновую задачу, попытаться снова // и так далее. (Если операция выдаст ошибку, будет выдано исключение, тогда операция завершится // в обработчике ошибки.) that._updateUrl(url, newChannel.uri, itemId, isPrimaryTile); completed(newChannel); }, failed); } }, failed);
Управление URI каналов (Сервис)
Если вы использовали код из предыдущего раздела, ваш веб-сервис, который генерирует push-уведомления, получит запрос HTTP POST с уникальным URI канала для каждой плитки. Это не единственный способ передачи URI канала, конечно. На самом деле, так как URI канала могут быть использованы для передачи персональной информации через уведомления, его, в идеале, перед отправкой на сервер, следует зашифровать с помощью закрытого ключа. В противном случае кто-нибудь может перехватить этот URI и использовать его для перенаправления уведомлений, относящихся к конкретному пользователю.
В любом случае, сервис должен ожидать получения, для последующего управления ими, уникальных URI для каждой комбинации приложения/пользователя/устройства. Это подчеркивает тот факт, что push-уведомления лучше всего использовать для уведомлений, специфичных для пользователя, чем для широковещательных уведомлений. В последнем случае настройка сервиса для выполнения периодических уведомлений – гораздо более простое решение.
Как только сервис получит URI канала вместе с любыми данными для идентификации пользователя и цели использования канала, он должен безопасно сохранить эту информацю в каком-нибудь постоянном хранилище, таком, как база данных SQL Server (для сервиса ASP.NET) или MySQL (для PHP-сервиса).
Так же важно, чтобы сервис удалял устаревшие URI каналов. Если он получает новый URI для того же пользователя и для той же цели, ему следует заменить старый на новый. Так же ему следует удалить из хранилища любые URI, если он получает в ответе от WNS ошибки HTTP 404 или 410, что указывает на устаревший канал.
Простую страницу сервиса ASP.NET, которая получает сообщение от Сценария 1 примера «Push-уведомления и периодические уведомления, клиентская часть» (http://code.msdn.microsoft.com/windowsapps/Push-and-periodic-de225603) можно найти в проекте веб-сайта HelloTiles в дополнительных материалах к лекции, в частности, это receiveuri.aspx. Для того, чтобы запустить этот сервис, убедитесь в том, что ваш локальный хост соответствующим образом настроен, как описано выше в разделе «Использование локального хоста». Так же вам может понадобиться установить ASP.NET на ваш локальный хост. Простой способ это сделать – загрузить пример «Фоновая передача данных» ( http://code.msdn.microsoft.com/windowsapps/Background-Transfer-Sample-d7833f61), перейти в его папку Server и затем, из командной строки администратора, выполнить команду powershell -ExecutionPolicy unrestrictedfile serversetup.ps1. Если затем вы запустите сайт в Visual Studio Express 2012 для Web, как мы делали раньше, у вас должен быть порт локального хоста для сервиса (например, http://localhost:52568/HelloTiles/receiveuri.aspx).
Затем вы можете установить точку останова в коде сервиса, вставить сервисный URI в Сценарий 1 примера «Push-уведомления и периодические уведомления, клиентская часть» и нажать его кнопку Reopen Channel And Send To Server (Повторно открыть канал и отправить на сервер). При этом должна сработать точка останова в сервисе, что позволить вам пошагово исполнить код, который обрабатывает запрос. Здесь вы можете обнаружить, что запрос содержит значения channelUri и itemId (наряду с LOGON_USER), которые могут быть сохранены для отправки уведомлений WNS, когда это будет нужно. Что-то похожее, конечно, можно написать на других серверных языках, хорошее место, где можно найти инструменты, которые помогут в написании кода сервисов, является Windows Azure Toolkit ( http://watwindows8.codeplex.com/).
Отправка обновлений и оповещений (Сервис)
Прежде чем сервис сможет отправлять обновления, он должен пройти проверку подлинности с помощью WINS, отправляя ему Идентификатор безопасности пакета (SID) и секретный ключ, полученные в Магазине Windows. Это можно сделать с помощью отправки WNS запроса XmlHttpRequest (через HTTPS), что может выглядеть примерно так:
POST /accesstoken.srf HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: https://login.live.com Content-Length: 211 grant_type=client_credentials&client_id=ms-app%3a%2f%2fS-1-15-2-2972962901-2322836549-3722629029-13452385 79-3987825745-2155616079-650196962&client_secret=Vex8L9WOFZuj95euaLrvSH7XyoDhLJc7&scope=notify.windows.com
Здесь вы должны убедиться, что значения client_id и client_secret соответствуют SID пакета и секретному ключу. Если проверка подлинности прошла успешно, вы получите ответ 200 OK с маркером доступа (access token), который понадобится вам для отправки уведомлений:
HTTP/1.1 200 OK Cache-Control: no-store Content-Length: 422 Content-Type: application/json { "access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=", "token_type":"bearer" }
Код, который выполняет эти шаги для сервиса, написанного на C#, можно найти в материале «Проверка подлинности с помощью службы push-уведомлений Windows» (http://msdn.microsoft.com/library/windows/apps/hh465407.aspx), где ваш сервис будет использовать метод GetAccessToken, показанный здесь для получения объекта OAuthToken с информацией из ответа. Сервисы, написанные на других языках, очевидно, нуждаются в использовании подходящих средств для отправки запроса и получения ответа.
В любом случае, как только вы получите маркер доступа, вы готовы к тому, чтобы начать отправлять обновления и уведомления с помощью XmlHttpRequests по URI каналов, которые поддерживет сервис.
Для обновлений плиток и индикаторов события, для всплывающих уведомлений, отправка уведомления подразумевает создание полезных данных XML, как и для любых других обновлений или уведомлений, и затем отправка их WNS с ранее полученным маркером доступа. Единственная настоящая разница между этими запросами, помимо различного XML – это значение X-WNS-Type в заголовке запроса: wns/badge, wns/tile, wns/toast, или wns/raw (смотрите следующий раздел). Остальной код у них один и тот же.
Общий код для C#-сервисов можно найти в материалах «Краткое руководство: отправка push-уведомления» (http://msdn.microsoft.com/library/windows/apps/xaml/hh868252.aspx) и «Краткое руководство: отправка всплывающих push-уведомлений» (http://msdn.microsoft.com/library/windows/apps/xaml/hh868255.aspx). Я включил версию с обновлением индикатора событий в sendBadgeToWNS.aspx в сайт Hello Tiles, который находится в дополнительных материалах к этой лекции, там SID и секретный ключ – те, что я получил для примера «Push-уведомления и периодические уведомления, клиентская часть» (Вам может понадобиться создать новые для себя). Для того, чтобы всё это протестировать, запустим веб-сайт Hello Tiles в Visual Studio Express 2012 для Web и установим точку останова в начале sendBadgeToWNS.aspx. Предполагая, что вы запустили Сценарий 1 примера «Push-уведомления и периодические уведомления, клиентская часть» в Visual Studio Express 2012 для Windows 8 для отправки URI канала receiveuri.aspx, в проекте веб-сайта должен быть файл, который называется channeluri_aspx.txt, он содержит отправленные данные.
Теперь переключимся на Сценарий 3 примера и нажмём кнопку для того, чтобы начать прослушивание события pushnotificationreceived. В js/scenario3.js этого примера, установим точку останова в функции pushNotificationReceivedHandler. Когда всё готово, откроем браузер и введем адрес sendBadgeToWNS.aspx на локальном хосте: http://localhost:52568/HelloTiles/sendBadgeToWNS.aspx,например. Точка останова должна сработать в Visual Studio Express 2012 для Web, где вы можете пошагово исполнить код страницы и увидеть, что она загружает URI канала из channeluri_aspx.txt, по которому она затем отправляет обновление индикатора уведомления. Когда это происходит, должна сработать точку останова в приложении Push notifications, где вы так же можете пошагово исполнить код. Обратите внимание на то, что когда вы достигаете строки e.cancel=true, пропустите её, щелкните правой кнопкой мыши ниже её и выберите Задать следующий оператор (Set Next Statement). Это позволит Windows обработать уведомление и обновить индикатор событий для приложения-примера, который должен выглядеть сейчас примерно так, с индикатором * в нижнем правом углу:
Снова отмечу, что если вы получили в ответ от WNS сообщение об ошибке, это означает, что URI канала больше недействителен и вам следует удалить его из списка. Так же хорошо будет, чтобы ваше приложение оповещало сервис, когда ему не нужны обновления по конкретному каналу (нет смысла оплачивать непродуктивное использование полосы пропускания). И если WNS возвращает ошибку, не отправляйте обновление снова, если только это не имеет смысл для вашего сценария.
Ошибки 404 или 410, кстати, отличаются от невозможности доставить уведомление по причине того, что клиент не подключен к сети. В подобном случае WNS будет кэшировать уведомления для плитки, индикатора событий или необработанные уведомления до тех пор, пока клиент не подключится к сети. Другими словами, это не то, о чём должен беспокоиться сервис. Отправляйте уведомления как всегда, и позвольте WNS заниматься деталями их доставки.
This service hosts Windows notification platform which provides support for local and push notifications. Supported notifications are tile, toast and raw.
This service also exists in Windows 11.
Startup Type
Windows 10 version | Home | Pro | Education | Enterprise |
---|---|---|---|---|
1507 | not exists | not exists | not exists | not exists |
1511 | not exists | not exists | not exists | not exists |
1607 | Manual | Manual | Manual | Manual |
1703 | Automatic | Automatic | Automatic | Automatic |
1709 | Automatic | Automatic | Automatic | Automatic |
1803 | Automatic | Automatic | Automatic | Automatic |
1809 | Automatic | Automatic | Automatic | Automatic |
1903 | Automatic | Automatic | Automatic | Automatic |
1909 | Automatic | Automatic | Automatic | Automatic |
2004 | Automatic | Automatic | Automatic | Automatic |
20H2 | Automatic | Automatic | Automatic | Automatic |
21H1 | Automatic | Automatic | Automatic | Automatic |
21H2 | Automatic | Automatic | Automatic | Automatic |
22H2 | Automatic | Automatic | Automatic | Automatic |
Default Properties
Display name: | Windows Push Notifications User Service |
Service name: | WpnUserService |
Type: | user share process template |
Path: | %WinDir%\system32\svchost.exe -k UnistackSvcGroup |
File: | %WinDir%\System32\WpnUserService.dll |
Error control: | ignore |
Object: | LocalSystem |
Privileges: |
|
Default Behavior
If Windows Push Notifications User Service fails to load or initialize, Windows 10 start up proceeds. No warning is displayed, but the error is recorded into the Event Log.
Restore Default Startup Type of Windows Push Notifications User Service
Automated Restore
1. Select your Windows 10 edition and release, and then click on the Download button below.
2. Save the RestoreWindowsPushNotificationsUserServiceWindows10.bat file to any folder on your hard drive.
3. Right-click the downloaded batch file and select Run as administrator.
4. Restart the computer to save changes.
Note. Make sure that the WpnUserService.dll
file exists in the %WinDir%\System32
folder. If this file is missing you can try to restore it from your Windows 10 installation media.
Yea, though I walk through the valley of the shadow of death, I will fear no evil: for thou art with me; thy rod and thy staff they comfort me.