Übersicht über Windows-Pushbenachrichtigungsdienste (Windows Push Notification Services, WNS)Windows Push Notification Services (WNS) overview

Mit dem Windows Push Notification Services (WNS) können Entwickler von Drittanbietern Popup-, Kachel-, Badge-und rohupdates von Ihrem eigenen clouddienst senden.The Windows Push Notification Services (WNS) enable third-party developers to send toast, tile, badge, and raw updates from their own cloud service. Dadurch steht ein Mechanismus zur Verfügung, mit dem Sie Ihren Benutzern auf energieeffiziente und verlässliche Weise neue Updates bereitstellen können.This provides a mechanism to deliver new updates to your users in a power-efficient and dependable way.

FunktionsweiseHow it works

Das folgende Diagramm gibt Aufschluss über den vollständigen Datenfluss beim Senden einer Pushbenachrichtigung.The following diagram shows the complete data flow for sending a push notification. Sie umfasst die folgenden Schritte:It involves these steps:

  1. Ihre APP fordert von WNS einen pushbenachrichtigungskanal an.Your app requests a push notification channel from WNS.
  2. Windows fordert WNS zum Erstellen eines Benachrichtigungskanals auf.Windows asks WNS to create a notification channel. Dieser Kanal wird an das aufrufende Gerät in Form eines URIs (Uniform Resource Identifier) zurückgegeben.This channel is returned to the calling device in the form of a Uniform Resource Identifier (URI).
  3. Der Benachrichtigungs Kanal-URI wird von WNS an Ihre APP zurückgegeben.The notification channel URI is returned by WNS to your app.
  4. Ihre App sendet den URI an Ihren eigenen Clouddienst.Your app sends the URI to your own cloud service. Dann speichern Sie den URI in Ihrem eigenen Clouddienst, damit Sie auf den URI zugreifen können, wenn Sie Benachrichtigungen senden.You then store the URI on your own cloud service so that you can access the URI when you send notifications. Der URI ist eine Schnittstelle zwischen Ihrer App und Ihrem Dienst. Es liegt in Ihrer Verantwortung, diese Schnittstelle mit sicheren Webstandards zu implementieren.The URI is an interface between your own app and your own service; it's your responsibility to implement this interface with safe and secure web standards.
  5. Wenn Ihr Clouddienst über ein zu sendendes Update verfügt, benachrichtigt er WNS über den Kanal-URI.When your cloud service has an update to send, it notifies WNS using the channel URI. Zu diesem Zweck wird eine HTTP POST-Anforderung (einschließlich der Benachrichtigungsnutzlast) über SSL (Secure Sockets Layer) ausgegeben.This is done by issuing an HTTP POST request, including the notification payload, over Secure Sockets Layer (SSL). Dieser Schritt erfordert eine Authentifizierung.This step requires authentication.
  6. WNS empfängt die Anforderung und leitet die Benachrichtigung an das entsprechende Gerät weiter.WNS receives the request and routes the notification to the appropriate device.

WNS-Datenflussdiagramm für Pushbenachrichtigungen

Registrieren Ihrer App und Empfangen der Anmeldeinformationen für Ihren ClouddienstRegistering your app and receiving the credentials for your cloud service

Bevor Sie Benachrichtigungen mithilfe von WNS senden können, muss Ihre APP im Store-Dashboard registriert werden, wie hierbeschrieben.Before you can send notifications using WNS, your app must be registered with the Store Dashboard, as described here.

Anfordern eines BenachrichtigungskanalsRequesting a notification channel

Wenn eine App ausgeführt wird, die Pushbenachrichtigungen empfangen kann, muss sie zunächst mithilfe von CreatePushNotificationChannelForApplicationAsync einen Benachrichtigungskanal anfordern.When an app that is capable of receiving push notifications runs, it must first request a notification channel through the CreatePushNotificationChannelForApplicationAsync. Eine umfassende Erläuterung sowie Beispielcode finden Sie in Anfordern, Erstellen und Speichern eines Benachrichtigungskanals.For a full discussion and example code, see How to request, create, and save a notification channel. Diese API gibt einen Kanal-URI zurück, der eindeutig mit der aufrufenden Anwendung und der zugehörigen Kachel verknüpft ist und über den alle Benachrichtigungstypen gesendet werden können.This API returns a channel URI that is uniquely linked to the calling application and its tile, and through which all notification types can be sent.

Nach erfolgreicher Erstellung eines Kanal-URIs sendet die App den URI zusammen mit den App-spezifischen Metadaten, die dem URI zugeordnet werden sollen, an den zugehörigen Clouddienst.After the app has successfully created a channel URI, it sends it to its cloud service, together with any app-specific metadata that should be associated with this URI.

Wichtige HinweiseImportant notes

  • Wir können nicht garantieren, dass der Benachrichtigungskanal-URI für eine App jederzeit gleich bleibt.We do not guarantee that the notification channel URI for an app will always remain the same. Wenn sich der URI ändert, empfehlen wir, die App immer einen neuen Kanal anfordern zu lassen, wenn sie ausgeführt wird und ihren Dienst aktualisiert.We advise that the app requests a new channel every time it runs and updates its service when the URI changes. Der Entwickler sollte den Kanal-URI niemals ändern und ihn als Blackbox-Zeichenfolge betrachten.The developer should never modify the channel URI and should consider it as a black-box string. Derzeit laufen Kanal-URIs nach 30 Tagen ab.At this time, channel URIs expire after 30 days. Wenn Ihre App für Windows 10 in regelmäßigen Abständen den Kanal im Hintergrund erneuert, können Sie das Beispiel für Pushbenachrichtigungen und regelmäßige Benachrichtigungen für Windows 8.1 herunterladen und den Quellcode und/oder das veranschaulichte Muster wiederverwenden.If your Windows 10 app will periodically renew its channel in the background then you can download the Push and periodic notifications sample for Windows 8.1 and re-use its source code and/or the pattern it demonstrates.
  • Die Schnittstelle zwischen dem Clouddienst und dem der Client-App wird von Ihnen (dem Entwickler) implementiert.The interface between the cloud service and the client app is implemented by you, the developer. Wir empfehlen, die App mit dem eigenen Dienst einen Authentifizierungsprozess durchlaufen zu lassen und die Daten über ein sicheres Protokoll (beispielsweise HTTPS) zu übermitteln.We recommend that the app go through an authentication process with its own service and transmit data over a secure protocol such as HTTPS.
  • Der Clouddienst muss stets sicherstellen, dass der Kanal-URI die Domäne „notify.windows.com” verwendet.It is important that the cloud service always ensures that the channel URI uses the domain "notify.windows.com". Der Dienst darf Benachrichtigungen niemals per Push an einen Kanal aus einer anderen Domäne übertragen.The service should never push notifications to a channel on any other domain. Im Falle einer Kompromittierung des Rückrufs für Ihre App könnte ein böswilliger Angreifer einen Kanal-URI übermitteln, um WNS zu täuschen.If the callback for your app is ever compromised, a malicious attacker could submit a channel URI to spoof WNS. Ohne die Domäne zu überprüfen, könnte der clouddienst dem Angreifer möglicherweise unwissentlich Informationen offenlegen.Without inspecting the domain, your cloud service could potentially disclose information to this attacker unknowingly.
  • Wenn der Clouddienst versucht, eine Benachrichtigung an einen abgelaufenen Kanal zu senden, wird von WNS der Antwortcode 410 zurückgegeben.If your cloud service attempts to deliver a notification to an expired channel, WNS will return response code 410. Als Reaktion auf diesen Code sollte der Dienst keine Benachrichtigungen mehr an diesen URI senden.In response to that code, your service should no longer attempt to send notifications to that URI.

Authentifizieren Ihres ClouddienstsAuthenticating your cloud service

Zum Senden einer Authentifizierung muss der Clouddienst per WNS authentifiziert werden.To send a notification, the cloud service must be authenticated through WNS. Der erste Schritt in diesem Vorgang tritt auf, wenn Sie Ihre APP mit dem Microsoft Store-Dashboard registrieren.The first step in this process occurs when you register your app with the Microsoft Store Dashboard. Im Rahmen der Registrierung erhält Ihre App eine Paket-Sicherheits-ID (Security Identifier, SID) sowie einen geheimen Schlüssel.During the registration process, your app is given a Package security identifier (SID) and a secret key. Anhand dieser Informationen kann sich Ihr Clouddienst gegenüber WNS authentifizieren.This information is used by your cloud service to authenticate with WNS.

Das WNS-Authentifizierungsschema wird unter Verwendung des Client-Anmeldeinformationsprofils aus dem Protokoll OAuth 2.0 implementiert.The WNS authentication scheme is implemented using the client credentials profile from the OAuth 2.0 protocol. Der Clouddienst authentifiziert sich gegenüber WNS durch Angeben seiner Anmeldeinformationen (Paket-SID und geheimer Schlüssel).The cloud service authenticates with WNS by providing its credentials (Package SID and secret key). Im Gegenzug erhält er ein Zugriffstoken.In return, it receives an access token. Dieses Zugriffstoken ermöglicht einem Clouddienst das Senden von Benachrichtigungen.This access token allows a cloud service to send a notification. Das Token wird bei jeder an WNS gesendeten Benachrichtigungsanforderung benötigt.The token is required with every notification request sent to the WNS.

Im Anschluss finden Sie eine Übersicht über die Informationskette:At a high level, the information chain is as follows:

  1. Der Clouddienst sendet seine Anmeldeinformationen per HTTPS und gemäß OAuth 2.0-Protokoll an WNS.The cloud service sends its credentials to WNS over HTTPS following the OAuth 2.0 protocol. Dadurch wird der Dienst gegenüber WNS authentifiziert.This authenticates the service with WNS.
  2. Bei erfolgreicher Authentifizierung gibt WNS ein Zugriffstoken zurück.WNS returns an access token if the authentication was successful. Dieses Zugriffstoken wird bis zu seinem Ablauf in allen weiteren Benachrichtigungsanforderungen verwendet.This access token is used in all subsequent notification requests until it expires.

WNS-Diagramm für Clouddienstauthentifizierung

Im Rahmen der Authentifizierung gegenüber WNS übermittelt der Clouddienst eine HTTP-Anforderung per SSL (Secure Sockets Layer).In the authentication with WNS, the cloud service submits an HTTP request over Secure Sockets Layer (SSL). Die Parameter werden im Format „application/x-www-for-urlencoded” angegeben.The parameters are supplied in the "application/x-www-for-urlencoded" format. Geben Sie die Paket-sid im Feld "Client- _ ID" und ihren geheimen Schlüssel im Feld "Client _ Geheimnis" an, wie im folgenden Beispiel gezeigt.Supply your Package SID in the "client_id" field and your secret key in the "client_secret" field as shown in the following example. Ausführliche Informationen zur Syntax finden Sie in der Referenz zur Zugriffstokenanforderung.For syntax details, see the access token request reference.

Hinweis

Dies ist nur ein Beispiel, kein Ausschneide-und Einfüge Code, den Sie in Ihrem eigenen Code erfolgreich verwenden können.This is just an example, not cut-and-paste code that you can successfully use in your own code. 

 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-1345238579-3987825745-2155616079-650196962&client_secret=Vex8L9WOFZuj95euaLrvSH7XyoDhLJc7&scope=notify.windows.com

WNS authentifiziert den Clouddienst und sendet bei erfolgreicher Authentifizierung die Antwort „200 OK”.The WNS authenticates the cloud service and, if successful, sends a response of "200 OK". Das Zugriffstoken wird in den Parametern innerhalb des Texts der HTTP-Antwort zurückgegeben. Hierbei wird der Medientyp „application/json” verwendet.The access token is returned in the parameters included in the body of the HTTP response, using the "application/json" media type. Sobald Ihr Dienst das Zugriffstoken erhalten hat, können Sie Benachrichtigungen senden.After your service has received the access token, you are ready to send notifications.

Das folgende Beispiel zeigt eine erfolgreiche Authentifizierungsantwort einschließlich Zugriffstoken.The following example shows a successful authentication response, including the access token. Ausführliche Informationen zur Syntax finden Sie unter Anforderungs- und Antwortheader des Pushbenachrichtigungsdiensts.For syntax details, see Push notification service request and response headers.

 HTTP/1.1 200 OK   
 Cache-Control: no-store
 Content-Length: 422
 Content-Type: application/json
 
 {
     "access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=", 
     "token_type":"bearer"
 }

Wichtige HinweiseImportant notes

  • Das in dieser Prozedur unterstützte OAuth 2.0-Protokoll folgt der Entwurfsversion V16.The OAuth 2.0 protocol supported in this procedure follows draft version V16.
  • Die OAuth-RFC (Request for Comments) verwendet für den Clouddienst den Begriff "Client".The OAuth Request for Comments (RFC) uses the term "client" to refer to the cloud service.
  • Diese Prozedur wird bis zur Finalisierung des OAuth-Entwurfs unter Umständen noch geändert.There might be changes to this procedure when the OAuth draft is finalized.
  • Das Zugriffstoken kann für mehrere Benachrichtigungsanforderungen wiederverwendet werden.The access token can be reused for multiple notification requests. Dadurch muss sich der Clouddienst zum Senden mehrerer Benachrichtigungen lediglich einmal authentifizieren.This allows the cloud service to authenticate just once to send many notifications. Nach Ablauf des Zugriffstokens muss sich der Clouddienst allerdings erneut authentifizieren, um ein neues Zugriffstoken zu erhalten.However, when the access token expires, the cloud service must authenticate again to receive a new access token.

Senden einer BenachrichtigungSending a notification

Mit dem Kanal-URI kann der Clouddienst eine Benachrichtigung senden, sobald ein Update für den Benutzer zur Verfügung steht.Using the channel URI, the cloud service can send a notification whenever it has an update for the user.

Das weiter oben beschriebene Zugriffstoken kann für mehrere Benachrichtigungsanforderungen wiederverwendet werden. Der Cloudserver muss nicht für jede Benachrichtigung ein neues Zugriffstoken anfordern.The access token described above can be reused for multiple notification requests; the cloud server is not required to request a new access token for every notification. Nach Ablauf des Zugriffstokens gibt die Benachrichtigungsanforderung einen Fehler zurück.If the access token has expired, the notification request will return an error. Wir empfehlen, das Senden der Benachrichtigung bei Ablehnung des Zugriffstokens höchstens einmal zu wiederholen.We recommended that you do not try to re-send your notification more than once if the access token is rejected. Im Falle dieses Fehlers müssen Sie ein neues Zugriffstoken anfordern und die Benachrichtigung erneut senden.If you encounter this error, you will need to request a new access token and resend the notification. Den genauen Fehlercode finden Sie unter Antwortcodes für Pushbenachrichtigungen.For the exact error code, see Push notification response codes.

  1. Der Clouddienst führt eine HTTP-POST-Anforderung an den Kanal-URI aus.The cloud service makes an HTTP POST to the channel URI. Diese Anforderung enthält die erforderlichen Header sowie die Benachrichtigungsnutzlast und muss per SSL erfolgen.This request must be made over SSL and contains the necessary headers and the notification payload. Der Autorisierungsheader muss das erhaltene Zugriffstoken für die Autorisierung enthalten.The authorization header must include the acquired access token for authorization.

    Hier sehen Sie eine Beispielanforderung.An example request is shown here. Ausführliche Informationen zur Syntax finden Sie unter Antwortcodes für Pushbenachrichtigungen.For syntax details, see Push notification response codes.

    Ausführliche Informationen zum Erstellen der Benachrichtigungsnutzlast finden Sie unter Schnellstart: Senden einer Pushbenachrichtigung.For details on composing the notification payload, see Quickstart: Sending a push notification. Die Nutzlast einer Kachel-, Popup- oder Signalpushbenachrichtigung wird als XML-Inhalt bereitgestellt, der den entsprechenden definierten Schemas für adaptive Kacheln oder Schema für Legacykacheln entspricht.The payload of a tile, toast, or badge push notification is supplied as XML content that adheres to their respective defined Adaptive tiles schema or Legacy tiles schema. Die Nutzlast einer unformatierten Benachrichtigung muss keine festgelegte Struktur aufweisen.The payload of a raw notification does not have a specified structure. Sie wird durch die App definiert.It is strictly app-defined.

     POST https://cloud.notify.windows.com/?token=AQE%bU%2fSjZOCvRjjpILow%3d%3d HTTP/1.1
     Content-Type: text/xml
     X-WNS-Type: wns/tile
     Authorization: Bearer EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=
     Host: cloud.notify.windows.com
     Content-Length: 24
    
     <body>
     ....
    
  2. WNS antwortet, um anzugeben, dass die Benachrichtigung empfangen wurde und bei nächster Gelegenheit übermittelt wird.WNS responds to indicate that the notification has been received and will be delivered at the next available opportunity. WNS liefert jedoch keine End-to-End-Bestätigung, dass Ihre Benachrichtigung vom Gerät oder von der Anwendung empfangen wurde.However, WNS does not provide end-to-end confirmation that your notification has been received by the device or application.

Dieses Diagramm veranschaulicht den Datenfluss:This diagram illustrates the data flow:

WNS-Diagramm für das Senden einer Benachrichtigung

Wichtige HinweiseImportant notes

  • WNS garantiert nicht die Zuverlässigkeit oder Latenz einer Benachrichtigung.WNS does not guarantee the reliability or latency of a notification.
  • Benachrichtigungen dürfen niemals vertrauliche oder sensible Daten enthalten.Notifications should never include confidential or sensitive data.
  • Zum Senden einer Benachrichtigung muss sich der Clouddienst zunächst gegenüber WNS authentifizieren und ein Zugriffstoken erhalten.To send a notification, the cloud service must first authenticate with WNS and receive an access token.
  • Mit einem Zugriffstoken kann der Clouddienst nur Benachrichtigungen an genau die App senden, für die das Token erstellt wurde.An access token only allows a cloud service to send notifications to the single app for which the token was created. Ein einzelnes Zugriffstoken kann nicht dazu verwendet werden, Benachrichtigungen an mehrere Apps zu senden.One access token cannot be used to send notifications across multiple apps. Unterstützt Ihr Clouddienst also mehrere Apps, muss er das korrekte Zugriffstoken für die jeweilige App angeben, wenn er eine Benachrichtigung per Push an die einzelnen Kanal-URIs übermittelt.Therefore, if your cloud service supports multiple apps, it must provide the correct access token for the app when pushing a notification to each channel URI.
  • Ist das Gerät offline, speichert WNS standardmäßig für jede App bis zu fünf Kachelbenachrichtigungen (bei aktivierter Warteschlange, ansonsten nur eine), eine Signalbenachrichtigung für jeden Kanal-URI und keine unformatierten Benachrichtigungen.When the device is offline, by default WNS will store up to five tile notifications (if queuing is enabled; otherwise, one tile notification) and one badge notification for each channel URI, and no raw notifications. Dieses standardmäßige Zwischenspeicherungsverhalten kann über den X-WNS-Cache-Policy-Header geändert werden.This default caching behavior can be changed through the X-WNS-Cache-Policy header. Beachten Sie, dass Popupbenachrichtigungen nie gespeichert werden, wenn das Gerät offline ist.Note that toast notifications are never stored when the device is offline.
  • In Szenarien mit personalisiertem Benachrichtigungsinhalt für den Benutzer empfiehlt WNS, dass der Clouddienst die Updates umgehend nach Eingang übermittelt.In scenarios where the notification content is personalized to the user, WNS recommends that the cloud service immediately send those updates when those are received. Beispiele für ein solches Szenario wären Feedupdates für soziale Medien, Chateinladungen, Benachrichtigungen über neue Nachrichten oder Warnungen.Examples of this scenario include social media feed updates, instant communication invitations, new message notifications, or alerts. Als Alternative ist auch denkbar, dass das gleiche allgemeine Update häufig an eine große Untergruppe von Benutzern gesendet wird (beispielsweise Wetterinfos, Börsendaten oder Nachrichten).As an alternative, you can have scenarios in which the same generic update is frequently delivered to a large subset of your users; for example, weather, stock, and news updates. Gemäß den WNS-Richtlinien muss der zeitliche Abstand zwischen diesen Updates mindestens 30 Minuten betragen.WNS guidelines specify that the frequency of these updates should be at most one every 30 minutes. Häufigere Routineupdates werden vom Endbenutzer oder von WNS unter Umständen als Missbrauch wahrgenommen.The end user or WNS may determine more frequent routine updates to be abusive.
  • Die Windows-Benachrichtigungs Plattform unterhält eine regelmäßige Datenverbindung mit WNS, um den Socket aktiv und fehlerfrei zu halten.Windows Notification Platform maintains a periodic data connection with WNS to keep the socket alive and healthy. Wenn keine Anwendungen Benachrichtigungs Kanäle anfordern oder verwenden, wird der Socket nicht erstellt.If there are no applications requesting or using notification channels then the socket will not be created.

Ablauf der Kachel- und SignalbenachrichtigungenExpiration of tile and badge notifications

Standardmäßig laufen die Kachel- und Signalbenachrichtigungen drei Tage, nachdem sie heruntergeladen wurden, ab.By default, tile and badge notifications expire three days after being downloaded. Wenn eine Benachrichtigung abläuft, wird der Inhalt von der Kachel oder aus der Warteschlange entfernt und nicht mehr angezeigt.When a notification expires, the content is removed from the tile or queue and is no longer shown to the user. Daher wird empfohlen, für alle Kachel- und Signalbenachrichtigungen eine Gültigkeitsdauer festzulegen. Verwenden Sie eine Ablaufzeit, die für Ihre App sinnvoll ist. So können Sie sicherstellen, dass der Inhalt einer Kachel nur so lange beibehalten wird, wie er von Bedeutung ist.It's a best practice to set an expiration (using a time that makes sense for your app) on all tile and badge notifications so that your tile's content doesn't persist longer than it is relevant. Eine explizite Ablaufzeit ist für Inhalte mit definierter Lebensdauer von großer Bedeutung.An explicit expiration time is essential for content with a defined lifespan. Durch sie wird außerdem sichergestellt, dass veraltete Inhalte entfernt werden, wenn Ihr Clouddienst keine Benachrichtigungen mehr sendet oder der Benutzer die Verbindung mit dem Netzwerk für längere Zeit trennt.This also assures the removal of stale content if your cloud service stops sending notifications, or if the user disconnects from the network for an extended period.

Ihr clouddienst kann für jede Benachrichtigung einen Ablauf festlegen, indem Sie den HTTP-Header "X-WNS-TTL" festlegen, um die Zeit (in Sekunden) anzugeben, die die Benachrichtigung nach dem Senden gültig bleibt.Your cloud service can set an expiration for each notification by setting the X-WNS-TTL HTTP header to specify the time (in seconds) that your notification will remain valid after it is sent. Weitere Informationen finden Sie unter Push Notification Service Request und Response Headers.For more information, see Push notification service request and response headers.

Während eines aktiven Börsenhandelstags können Sie beispielsweise die Gültigkeitsdauer für eine Aktienpreisaktualisierung gegenüber dem Sendeintervall verdoppeln (wie z. B. eine Stunde nach Empfang beim Senden von Benachrichtigungen zu jeder halben Stunde).For example, during a stock market's active trading day, you can set the expiration for a stock price update to twice that of your sending interval (such as one hour after receipt if you are sending notifications every half-hour). Als weiteres Beispiel dient eine News-App, bei der festgestellt wird, dass ein Intervall von einem Tag für eine tägliche Kachelaktualisierung angemessen ist.As another example, a news app might determine that one day is an appropriate expiration time for a daily news tile update.

Pushbenachrichtigungen und StromsparmodusPush notifications and battery saver

Der Stromsparmodus schränkt Hintergrundaktivitäten auf dem Gerät ein und verlängert dadurch die Akkulaufzeit.Battery saver extends battery life by limiting background activity on the device. In Windows 10 kann der Benutzer den Stromsparmodus auf die automatische Aktivierung festlegen, wenn der Akku einen bestimmten Schwellenwert unterschreitet.Windows 10 lets the user set battery saver to turn on automatically when the battery drops below a specified threshold. Wenn der Stromsparmodus aktiviert ist, ist der Empfang von Pushbenachrichtigungen deaktiviert, um Energie zu sparen.When battery saver is on, the receipt of push notifications is disabled to save energy. Es gibt allerdings einige Ausnahmen.But there are a couple exceptions to this. Mit den folgenden Einstellungen in Windows 10 (in der Einstellungs-App) kann der Stromsparmodus so eingerichtet werden, dass Ihre App auch bei aktiviertem Stromsparmodus Pushbenachrichtigungen empfängt.The following Windows 10 battery saver settings (found in the Settings app) allow your app to receive push notifications even when battery saver is on.

  • Im Stromsparmodus Pushbenachrichtigungen von jeder App zulassen: Alle Apps können Pushbenachrichtigungen empfangen, wenn der Stromsparmodus aktiviert ist.Allow push notifications from any app while in battery saver: This setting lets all apps receive push notifications while battery saver is on. Beachten Sie, dass diese Einstellung nur für Desktop-Editionen von Windows 10 gilt (Home, Pro, Enterprise und Education).Note that this setting applies only to Windows 10 for desktop editions (Home, Pro, Enterprise, and Education).
  • Immer zugelassen: Bestimmte Apps können im Hintergrund ausgeführt werden, wenn der Stromsparmodus aktiviert ist. Dies beinhaltet auch den Empfang von Pushbenachrichtigungen.Always allowed: This setting lets specific apps run in the background while battery saver is on - including receiving push notifications. Die Liste wird manuell vom Benutzer verwaltet.This list is maintained manually by the user.

Es ist nicht möglich, den Status dieser beiden Einstellungen zu überprüfen, Sie können aber den Status des Stromsparmodus feststellen.There is no way to check the state of these two settings, but you can check the state of battery saver. Verwenden Sie in Windows 10 die EnergySaverStatus-Eigenschaft, um den Status des Stromsparmodus zu überprüfen.In Windows 10, use the EnergySaverStatus property to check battery saver state. Ihre App kann auch mithilfe des EnergySaverStatusChanged-Ereignisses Änderungen des Stromsparmodus überwachen.Your app can also use the EnergySaverStatusChanged event to listen for changes to battery saver.

Falls Pushbenachrichtigungen bei Ihrer App sehr wichtig sind, sollten Sie die Benutzer darüber informieren, dass sie bei aktiviertem Stromsparmodus keine Benachrichtigungen erhalten, und eine einfache Möglichkeit zum Anpassen der Einstellungen für den Stromsparmodus vorsehen.If your app depends heavily on push notifications, we recommend notifying users that they may not receive notifications while battery saver is on and to make it easy for them to adjust battery saver settings. Sie können mit dem URI-Schema für die Einstellungen für den Stromsparmodus in Windows 10, ms-settings:batterysaver-settings, direkt einen Link zur Einstellungs-App bereitstellen.Using the battery saver settings URI scheme in Windows 10, ms-settings:batterysaver-settings, you can provide a convenient link to the Settings app.

Tipp

Bei der Benachrichtigung des Benutzers über die Einstellungen des Akku Schoners empfiehlt es sich, die Nachricht in Zukunft zu unterdrücken.When notifying the user about battery saver settings, we recommend providing a way to suppress the message in the future. Das Kontrollkästchen dontAskMeAgainBox im folgenden Beispiel speichert z. B. die Benutzereinstellung in LocalSettings.For example, the dontAskMeAgainBox checkbox in the following example persists the user's preference in LocalSettings.

Im folgenden finden Sie ein Beispiel dafür, wie Sie überprüfen können, ob Akku Schoner in Windows 10 aktiviert ist.Here's an example of how to check whether battery saver is turned on in Windows 10. In diesem Beispiel wird der Benutzer benachrichtigt, und die Einstellungs-App wird gestartet, um Einstellungen für Stromsparmodus anzuzeigen.This example notifies the user and launches the Settings app to battery saver settings. Mit dem Kontrollkästchen dontAskAgainSetting kann der Benutzer die Meldung unterdrücken, wenn er nicht erneut benachrichtigt werden möchte.The dontAskAgainSetting lets the user suppress the message if they don't want to be notified again.

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using Windows.System;
using Windows.System.Power;
...
...
async public void CheckForEnergySaving()
{
   //Get reminder preference from LocalSettings
   bool dontAskAgain;
   var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
   object dontAskSetting = localSettings.Values["dontAskAgainSetting"];
   if (dontAskSetting == null)
   {  // Setting does not exist
      dontAskAgain = false;
   }
   else
   {  // Retrieve setting value
      dontAskAgain = Convert.ToBoolean(dontAskSetting);
   }
   
   // Check if battery saver is on and that it's okay to raise dialog
   if ((PowerManager.EnergySaverStatus == EnergySaverStatus.On)
         && (dontAskAgain == false))
   {
      // Check dialog results
      ContentDialogResult dialogResult = await saveEnergyDialog.ShowAsync();
      if (dialogResult == ContentDialogResult.Primary)
      {
         // Launch battery saver settings (settings are available only when a battery is present)
         await Launcher.LaunchUriAsync(new Uri("ms-settings:batterysaver-settings"));
      }

      // Save reminder preference
      if (dontAskAgainBox.IsChecked == true)
      {  // Don't raise dialog again
         localSettings.Values["dontAskAgainSetting"] = "true";
      }
   }
}
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.System.h>
#include <winrt/Windows.System.Power.h>
#include <winrt/Windows.UI.Xaml.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
#include <winrt/Windows.UI.Xaml.Navigation.h>
using namespace winrt;
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::Storage;
using namespace winrt::Windows::System;
using namespace winrt::Windows::System::Power;
using namespace winrt::Windows::UI::Xaml;
using namespace winrt::Windows::UI::Xaml::Controls;
using namespace winrt::Windows::UI::Xaml::Navigation;
...
winrt::fire_and_forget CheckForEnergySaving()
{
    // Get reminder preference from LocalSettings.
    bool dontAskAgain{ false };
    auto localSettings = ApplicationData::Current().LocalSettings();
    IInspectable dontAskSetting = localSettings.Values().Lookup(L"dontAskAgainSetting");
    if (!dontAskSetting)
    {
        // Setting doesn't exist.
        dontAskAgain = false;
    }
    else
    {
        // Retrieve setting value
        dontAskAgain = winrt::unbox_value<bool>(dontAskSetting);
    }

    // Check whether battery saver is on, and whether it's okay to raise dialog.
    if ((PowerManager::EnergySaverStatus() == EnergySaverStatus::On) && (!dontAskAgain))
    {
        // Check dialog results.
        ContentDialogResult dialogResult = co_await saveEnergyDialog().ShowAsync();
        if (dialogResult == ContentDialogResult::Primary)
        {
            // Launch battery saver settings
            // (settings are available only when a battery is present).
            co_await Launcher::LaunchUriAsync(Uri(L"ms-settings:batterysaver-settings"));
        }

        // Save reminder preference.
        if (dontAskAgainBox().IsChecked())
        {
            // Don't raise the dialog again.
            localSettings.Values().Insert(L"dontAskAgainSetting", winrt::box_value(true));
        }
    }
}

Dies ist der XAML-Code für das in diesem Beispiel vorgestellte ContentDialog.This is the XAML for the ContentDialog featured in this example.

<ContentDialog x:Name="saveEnergyDialog"
               PrimaryButtonText="Open battery saver settings"
               SecondaryButtonText="Ignore"
               Title="Battery saver is on."> 
   <StackPanel>
      <TextBlock TextWrapping="WrapWholeWords">
         <LineBreak/><Run>Battery saver is on and you may 
          not receive push notifications.</Run><LineBreak/>
         <LineBreak/><Run>You can choose to allow this app to work normally
         while in battery saver, including receiving push notifications.</Run>
         <LineBreak/>
      </TextBlock>
      <CheckBox x:Name="dontAskAgainBox" Content="OK, got it."/>
   </StackPanel>
</ContentDialog>