Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Rohe Benachrichtigungen sind kurze, universelle Push-Benachrichtigungen. Sie sind ausschließlich instruktiv und enthalten keine Benutzeroberflächenkomponente. Wie bei anderen Pushbenachrichtigungen stellt die Funktion der Windows-Pushbenachrichtigungsdienste (Windows Push Notification Services, WNS) Rohbenachrichtigungen von Ihrem Clouddienst an Ihre App bereit.
Sie können unformatierte Benachrichtigungen für eine Vielzahl von Zwecken verwenden, z. B. zum Auslösen der App zum Ausführen einer Hintergrundaufgabe, wenn der Benutzer die App dazu berechtigt hat. Wenn Sie WNS für die Kommunikation mit Ihrer App verwenden, können Sie den Verarbeitungsaufwand beim Erstellen persistenter Socketverbindungen, senden von HTTP GET-Nachrichten und anderen Dienst-zu-App-Verbindungen vermeiden.
Important
Um unformatierte Benachrichtigungen zu verstehen, sollten Sie sich mit den in der Übersicht Windows-Pushbenachrichtigungsdienste (Windows Push Notification Services, WNS) beschriebenen Konzepten vertraut machen.
Wie bei Toast-, Kachel- und Badge-Pushbenachrichtigungen wird eine unformatierte Benachrichtigung vom Clouddienst Ihrer App über einen zugewiesenen Kanal-URI (Uniform Resource Identifier) an WNS gesendet. WNS übermittelt wiederum die Benachrichtigung an das Gerät und das Benutzerkonto, das diesem Kanal zugeordnet ist. Im Gegensatz zu anderen Pushbenachrichtigungen verfügen unformatierte Benachrichtigungen nicht über ein angegebenes Format. Der Inhalt der Payload wird vollständig von der App definiert.
Als Abbildung einer App, die von unformatierten Benachrichtigungen profitieren könnte, sehen wir uns eine theoretische Dokumentzusammenarbeits-App an. Erwägen Sie zwei Benutzer, die dasselbe Dokument gleichzeitig bearbeiten. Der Clouddienst, der das freigegebene Dokument hostt, kann unformatierte Benachrichtigungen verwenden, um jeden Benutzer zu benachrichtigen, wenn Änderungen vom anderen Benutzer vorgenommen werden. Die unformatierten Benachrichtigungen enthalten nicht unbedingt die Änderungen am Dokument, sondern signalisieren stattdessen jeder Benutzerkopie der App, den zentralen Speicherort zu kontaktieren und die verfügbaren Änderungen zu synchronisieren. Durch die Verwendung von unformatierten Benachrichtigungen kann die App und ihr Clouddienst den Aufwand für die Aufrechterhaltung dauerhafter Verbindungen während des gesamten Öffnens des Dokuments sparen.
Funktionsweise von unformatierten Benachrichtigungen
Alle unformatierten Benachrichtigungen sind Pushbenachrichtigungen. Daher gilt das Setup, das zum Senden und Empfangen von Pushbenachrichtigungen erforderlich ist, auch für unformatierte Benachrichtigungen:
- Sie müssen über einen gültigen WNS-Kanal verfügen, um unformatierte Benachrichtigungen zu senden. Weitere Informationen zum Abrufen eines Pushbenachrichtigungskanals finden Sie unter Anfordern, Erstellen und Speichern eines Benachrichtigungskanals.
- Sie müssen die Internet--Funktion in das Manifest Ihrer App aufnehmen. Im Manifest-Editor von Microsoft Visual Studio finden Sie diese Option auf der Registerkarte Funktionen als Internet (Client) aufgeführt. Weitere Informationen finden Sie unter Fähigkeiten.
Der Textkörper der Benachrichtigung befindet sich in einem app-definierten Format. Der Client empfängt die Daten als mit Null beendete Zeichenfolge (HSTRING), die nur von der App verstanden werden müssen.
Wenn der Client offline ist, werden Rohbenachrichtigungen nur dann von WNS im Cache gespeichert, wenn der X-WNS-Cache-Policy Header in der Benachrichtigung enthalten ist. Es wird jedoch nur eine unformatierte Benachrichtigung zwischengespeichert und übermittelt, sobald das Gerät wieder online ist.
Es gibt nur drei mögliche Pfade für eine unformatierte Benachrichtigung für den Client: Sie werden über ein Benachrichtigungsübermittlungsereignis an Ihre ausgeführte App übermittelt, an eine Hintergrundaufgabe gesendet oder verworfen. Wenn der Client offline ist und WNS versucht, eine unformatierte Benachrichtigung zu übermitteln, wird die Benachrichtigung gelöscht.
Erstellen einer Rohbenachrichtigung
Das Senden einer unformatierten Benachrichtigung ähnelt dem Senden einer Kachel-, Toast- oder Badge-Pushbenachrichtigung mit den folgenden Unterschieden:
- Der HTTP-Inhaltstypheader muss auf "application/octet-stream" festgelegt werden.
- Der HTTP-Header vom X-WNS-Type muss auf „wns/raw“ festgelegt werden.
- Der Benachrichtigungstext darf jede Zeichenfolgen-Payload von weniger als 5 KB enthalten, darf jedoch keine leere Zeichenfolge sein.
Unformatierte Benachrichtigungen sollen als kurze Nachrichten verwendet werden, die Ihre App auslösen, um eine Aktion auszuführen, z. B. direkt mit dem Dienst in Verbindung zu treten, um eine größere Datenmenge zu synchronisieren oder basierend auf dem Benachrichtigungsinhalt eine lokale Zustandsänderung vorzunehmen. Beachten Sie, dass die Zustellung von WNS-Pushbenachrichtigungen nicht garantiert werden kann, sodass Ihre App und Ihr Clouddienst die Möglichkeit berücksichtigen müssen, dass die Rohbenachrichtigung den Client unter Umständen nicht erreicht, zum Beispiel wenn der Client offline ist.
Weitere Informationen zum Senden von Pushbenachrichtigungen finden Sie unter Schnellstart: Senden einer Pushbenachrichtigung.
Empfangen einer unformatierten Benachrichtigung
Es gibt zwei Möglichkeiten, über die Ihre App unformatierte Benachrichtigungen empfangen kann:
- Durch Benachrichtigungsübermittlungsereignisse, während die Anwendung ausgeführt wird.
- Durch Hintergrundaufgaben, die durch die unformatierte Benachrichtigung ausgelöst werden, wenn Ihre App zum Ausführen von Hintergrundaufgaben aktiviert ist.
Eine App kann beide Mechanismen verwenden, um unformatierte Benachrichtigungen zu empfangen. Wenn eine App sowohl den Ereignishandler für die Benachrichtigungsübermittlung als auch Hintergrundaufgaben implementiert, die durch Rohbenachrichtigungen ausgelöst werden, hat das Ereignis der Benachrichtigungsübermittlung Priorität, wenn die App ausgeführt wird.
- Wenn die App ausgeführt wird, hat das Benachrichtigungsübermittlungsereignis Vorrang vor der Hintergrundaufgabe, und die App hat die erste Möglichkeit, die Benachrichtigung zu verarbeiten.
- Der Ereignishandler für die Benachrichtigungsübermittlung kann durch Festlegen der PushNotificationReceivedEventArgs.Cancel-Eigenschaft auf true angeben, dass die unformatierte Benachrichtigung nicht an die Hintergrundaufgabe übergeben werden soll, sobald der Handler beendet wurde. Wenn die Cancel-Eigenschaft auf false festgelegt ist oder nicht festgelegt ist (der Standardwert ist false), löst die unformatierte Benachrichtigung die Hintergrundaufgabe aus, nachdem der Ereignishandler für die Benachrichtigungsübermittlung seine Arbeit ausgeführt hat.
Benachrichtigungsübermittlungsereignisse
Ihre App kann ein Benachrichtigungsübermittlungsereignis (PushNotificationReceived) verwenden, um unformatierte Benachrichtigungen zu empfangen, während die App genutzt wird. Wenn der Clouddienst eine unformatierte Benachrichtigung sendet, kann die laufende App sie empfangen, indem das Benachrichtigungsübermittlungsereignis an der Kanal-URI bearbeitet wird.
Wenn Ihre App nicht ausgeführt wird und keine Hintergrundaufgaben verwendet, werden alle unformatierten Benachrichtigungen, die an diese App gesendet werden, beim Empfang durch WNS verworfen. Um zu vermeiden, dass die Ressourcen Ihres Clouddiensts verschwendet werden, sollten Sie erwägen, eine Logik im Dienst zu implementieren, um nachzuverfolgen, ob die App aktiv ist. Es gibt zwei Quellen dieser Informationen: Eine App kann dem Dienst explizit mitteilen, dass er bereit ist, Benachrichtigungen zu empfangen, und WNS kann dem Dienst mitteilen, wann er beendet wird.
Die App benachrichtigt den Clouddienst: Die App kann sich an den Dienst wenden, um ihn darüber zu informieren, dass die App im Vordergrund ausgeführt wird. Der Nachteil dieses Ansatzes besteht darin, dass die App am Ende sehr häufig mit Ihrem Dienst in Kontakt treten kann. Es hat jedoch den Vorteil, dass der Dienst immer weiß, wann die App bereit ist, eingehende unformatierte Benachrichtigungen zu empfangen. Ein weiterer Vorteil ist, dass der Dienst, wenn die App mit dem Dienst Kontakt aufnimmt, unformatierte Benachrichtigungen an die spezifische Instanz dieser App senden kann, anstatt einen Broadcast zu erstellen.
Der Clouddienst antwortet auf WNS-Antwortnachrichten: Ihr App-Dienst kann die X-WNS-NotificationStatus- und X-WNS-DeviceConnectionStatus- von WNS zurückgegebenen Informationen verwenden, um zu bestimmen, wann das Senden unformatierter Benachrichtigungen an die App beendet werden soll. Wenn Ihr Dienst eine Benachrichtigung als HTTP POST an einen Kanal sendet, kann er eine der folgenden Nachrichten in der Antwort empfangen:
- X-WNS-NotificationStatus: dropped: Dies gibt an, dass die Benachrichtigung nicht vom Empfänger empfangen wurde. Es ist eine sichere Annahme, dass die gelöschte Antwort durch Ihre App verursacht wird, die nicht mehr im Vordergrund auf dem Gerät des Benutzers ausgeführt wird.
- X-WNS-DeviceConnectionStatus: disconnected oder X-WNS-DeviceConnectionStatus: tempconnected: Dies weist darauf hin, dass der Windows-Client keine Verbindung mehr mit WNS hat. Beachten Sie, dass Sie, um diese Nachricht von WNS zu empfangen, dies anfordern müssen, indem Sie den X-WNS-RequestForStatus--Header in der HTTP-POST-Anfrage der Benachrichtigung festlegen.
Der Clouddienst Ihrer App kann die Informationen in diesen Statusmeldungen verwenden, um Kommunikationsversuche über unformatierte Benachrichtigungen zu beenden. Der Dienst kann das Senden unformatierter Benachrichtigungen fortsetzen, sobald er von der App kontaktiert wird, wenn die App wieder in den Vordergrund wechselt.
Beachten Sie, dass Sie sich nicht auf X-WNS-NotificationStatus verlassen sollten, um festzustellen, ob die Benachrichtigung erfolgreich an den Client übermittelt wurde.
Weitere Informationen finden Sie unter Anforderungs- und Antwortheader des Pushbenachrichtigungsdiensts
Hintergrundaufgaben, die durch unformatierte Benachrichtigungen ausgelöst werden
Important
Bevor unformatierte Benachrichtigungs-Hintergrundaufgaben verwendet werden können, muss einer App Hintergrundzugriff durch BackgroundExecutionManager.RequestAccessAsync gewährt werden.
Ihre Hintergrundaufgabe muss mit einem PushNotificationTrigger registriert werden. Wenn sie nicht registriert ist, wird die Aufgabe nicht ausgeführt, wenn eine unformatierte Benachrichtigung empfangen wird.
Eine Hintergrundaufgabe, die durch eine unformatierte Benachrichtigung ausgelöst wird, ermöglicht es dem Clouddienst Ihrer App, Kontakt zu Ihrer App aufzunehmen, selbst wenn die App nicht läuft (auch wenn sie dadurch möglicherweise gestartet wird). Dies geschieht, ohne dass die App eine kontinuierliche Verbindung beibehalten muss. Unformatierte Benachrichtigungen sind der einzige Benachrichtigungstyp, der Hintergrundaufgaben auslösen kann. Während Toast-, Kachel- und Badge-Pushbenachrichtigungen keine Hintergrundaufgaben auslösen können, können Hintergrundaufgaben, die durch unformatierte Benachrichtigungen ausgelöst werden, Kacheln aktualisieren und Toast-Benachrichtigungen über lokale API-Aufrufe aufrufen.
Als Abbildung der Funktionsweise von Hintergrundaufgaben, die durch unformatierte Benachrichtigungen ausgelöst werden, betrachten wir eine App, die zum Lesen von E-Books verwendet wird. Zuerst kauft ein Benutzer ein Buch online, möglicherweise auf einem anderen Gerät. Als Reaktion darauf kann der Clouddienst der App eine Rohbenachrichtigung mit einer Nutzlast an jedes Gerät des Benutzers senden, die besagt, dass ein Buch gekauft wurde und die App es herunterladen sollte. Die App kontaktiert dann direkt den Clouddienst der App, um einen Hintergrunddownload des neuen Buchs zu starten, damit das Buch später, wenn der Benutzer die App startet, bereits vorhanden ist und zum Lesen bereit ist.
Um eine unformatierte Benachrichtigung zum Auslösen einer Hintergrundaufgabe zu verwenden, muss Ihre App Folgendes ausführen:
- Fordern Sie die Berechtigung zum Ausführen von Aufgaben im Hintergrund an (die der Benutzer jederzeit widerrufen kann), indem Sie BackgroundExecutionManager.RequestAccessAsyncverwenden.
- Implementieren Sie die Hintergrundaufgabe. Weitere Informationen finden Sie unter Unterstützen der App mit Hintergrundaufgaben
Ihre Hintergrundaufgabe wird dann jedes Mal als Antwort auf den PushNotificationTrigger- aufgerufen, wenn eine unformatierte Benachrichtigung für Ihre App empfangen wird. Ihre Hintergrundaufgabe interpretiert die appspezifische Payload der unformatierten Benachrichtigung und reagiert darauf.
Für jede App kann jeweils nur eine Hintergrundaufgabe ausgeführt werden. Wenn eine Hintergrundaufgabe für eine App ausgelöst wird, für die bereits eine Hintergrundaufgabe ausgeführt wird, muss die erste Hintergrundaufgabe abgeschlossen werden, bevor die neue ausgeführt wird.
Sonstige Ressourcen
In diesem UWP-Artikel wird das Verhalten der älteren PushNotificationTrigger Hintergrundaufgabe beschrieben. Informationen zur Kanalregistrierung im aktuellen Windows App SDK sowie zur Aktivierung von Rohpushbenachrichtigungen im Vorder- oder Hintergrund über PushNotificationManager finden Sie im Beispiel zu Windows App SDK-Pushbenachrichtigungen. Im aktuellen Beispiel wird das UWP-Registrierungsmodell PushNotificationTrigger für Hintergrundaufgaben nicht verwendet.
Zugehörige Themen
- Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe für unformatierte Benachrichtigungen
- Schnellstart: Abfangen von Pushbenachrichtigungen für laufende Apps
- RawNotification
- BackgroundExecutionManager.RequestAccessAsync
Windows developer