Quantcast
Channel: ppedv Team Blog
Viewing all articles
Browse latest Browse all 1198

UWP Windows Push Notifications

$
0
0

Vor vielen Jahren habe ich mit Silverlight und den Live Services Push Nachrichten verschickt, um Server Push zu empfangen. 2012 habe ich dann mit Windows 8 die sogenannten Windows Push Notification Services genutzt. Da das Store App Modell sich von Desktop Anwendungen wesentlich unterscheidet, sind auch die nötigen Szenarien unterschiedlich.

Nachrichten können von einem Service verschickt werden an

  • die Kachel
  • als Toast Nachricht
  • ein App aktivieren
  • in eine laufende App Daten schicken

Gerade letzter Fall soll gelöst werden. Die Universal Windows Platform App soll sogenannte RAW Notifications empfangen.

Die folgende Beschreibung ist aus Selbstversuch entstanden und ist keine Gewähr für den optimalen Weg.

Im ersten Schritt wird eine Windows Store App mit dem Microsoft App Store verknüpft. Das kann direkt aus dem Visual Studio Projekt per rechtsklick auf das Projekt erfolgen (Store- App mit Store verknüpfen)

Der öffentliche Appname lässt sich in Visual Studio oder im Portal (https://developer.microsoft.com/de-de/windows) reservieren. Am Ende muss man ohnehin das Webportal im Browser öffnen. Dies bedeutet noch keine Veröffentlichung im eigentlichen Sinne.

In Developer Portal in den Einstellungen der App findet sich rechts unten ein Bereich Pushbenachrichtigungen. Dort steht ein Link auf erste Schritte. Schon hier erkennbar sind zwei verschiedene Push Dienste, die Microsoft Push Services (MPNS) und die Windows Notification (WNS) Services. Verwendet wird hier letzterer

push1

Nach Auswahl des Links- Live Services Site –werden das Fromular mit  Daten zur App ergänzt die zur Registrierung nötig sind.

push3_Ink_LI

Das Secret und die App ID sind dann sozusagen der Benutzer Account der App. Am besten die Browserseite offen lassen. Für den Push benötigt man aber eine Azure App. Diese wird im Azure Portal angelegt https://portal.azure.com/ Azure App Service + hinzufügen. Allerdings muss dann die Option Push konfiguriert werden

push4

Die Warnmeldung besagt, das ein Azure Notification Hub erstellt werden muss. Diesem Hub gibt man einen Namen den man später noch benötigt.

push5

Der Zusatz Hub im Namen wurde gewählt um in den viele Begriffen später den Überblick zu behalten. Woher kommt’s oder wo ist es konfiguriert? Die Anzahl der Dialoge ist recht umfangreich.

Im nächsten Untermenü - Pushbenachrichtigung konfigurieren - kann aus einer Reihe von Push Diensten man auswählen wie Google, Amazon, Apple der eben WNS.

push7

Die Sache mit den Tags ignoriert man am besten für den ersten Test. Kurz gesagt lassen sich damit Benachrichtigungsgruppen organisieren.

Es werden vorhin erwähnte Authentifizierungsdaten eingetragen bzw rüberkopiert

push9_Ink_LI

Woher nehmen und nicht stehlen? Hoffentlich sind die Browser Fenster noch offen, so dass man Application Secret und App ID rauskopieren kann.

push8_Ink_LI

Nun wird wieder nach Visual Studio gewechselt um UWP Code zu schreiben der Notifications empfangen kann. Dazu wir das Nuget Paket Microsoft.Azure.Notificationhub dem Projekt hinzugefügt

push10

Aus den C# Beispielen zusammenkopiert. Wichtig sind der Hubname, der Endpunkt und der SharedAccessKey. Kombiniert Connection String genannt.

   1:  Private Async Sub InitNotificationsAsync()
   2:  Dim channel = Await PushNotificationChannelManager.
CreatePushNotificationChannelForApplicationAsync()
   3:  Dim Hub = New NotificationHub("ppedvhub1",
   4:  "Endpoint=sb://ppedvpush.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=b8aJdXHX/….X4dxaVDEWnbI4=")
   5:          Await Hub.RegisterNativeAsync(channel.Uri)
   6:  AddHandler channel.PushNotificationReceived, 
AddressOf channel_PushNotificationReceived
   7:  EndSub
   8:   
   9:  PrivateSub channel_PushNotificationReceived(sender As PushNotificationChannel,
args As PushNotificationReceivedEventArgs)
  10:   
  11:  EndSub

 

Wo kommen nun diese Daten wieder her? Im Azure Portal können alle eingerichteten Ressourcen aufgelistet werden. Der Notification Hub taucht als oranges Icon auf.

image

In - Verwalten – Zugriffsrichtlinien - finden sich zwei Endpunkte mit Rechten für Lesen oder Schreiben.

push12

Die Endpunkte unterscheiden sich von den Service URIs durch den Präfix sb: Dieser Endpunkt kommt im vorigen Code Schnippsel zur Anwendung.

Die Rechte der Endpoints können natürlich auch konfiguriert werden.

push13

Nun kann der Push getestet werden. Auch diese Funktion findet sich im Azure Portal

push11

Es wird eine Raw Notification geschickt. Der Inhalt steht dann in den Eventargs der UWP App zur Verfügung.

Nun kommt noch eine Winforms Anwendung hinzu, die Nachrichten an per Service Bus an die Verbunden Client schicken kann.

   1:              NotificationHubClient hub = NotificationHubClient
   2:              .CreateClientFromConnectionString(
"Endpoint=sb://ppedvpush.servicebus.windows.net/;
SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=b8aJdX nbI4="
   3:                 , "ppedvhub1");
   4:  
   5:  try
   6:              {
   7:                  Notification no = new WindowsNotification("Burghausen");
   8:                  no.Headers.Add("X-WNS-Type", @"wns/raw");
   9:                 var result=await hub.SendNotificationAsync(no);
  10:                  Console.WriteLine(result.State.ToString());
  11:              }
  12:  catch (System.Exception ex)
  13:              {
  14:              }
  15:          }

Völlig unlogisch sind nun die Parameter beim Verbindungsaufbau “Connection String” und Hub vertauscht im vergleich zum vorigen Code Beispiel. Da es sich um eine Raw Nachricht handelt, muss noch ein passender Header eingefädelt werden.

Im Erfolgsfall wird nach einem Post mit einer HTTP 201 Statusmeldung geantwortet. Per Fiddlertool kann man sich für die Fehlersuche dazwischen schalten

push20_Ink_LI

Eine weitere nicht leicht zu findende Möglichkeit der Analyse von ein und ausgehenden Nachrichten befindet sich nur im alten Azure Portal

push19

Man erkennt die eingegangen Nachrichten und die versendeten auf der Zeitachse. Selbst die einzelnen Geräte (Devices) lassen sich herausfinden. Das auch über Visual Studio und dem Server Explorer. Der Screenshot stammt aus Visual Studio 2017 mit installieren Azure SDK.

push16_Ink_LI

Nach Rechtsklick auf den Hub erscheint per Popup Dialog auch die Möglichkeit Nachrichten zu versenden

push17

Im zweiten Dialog kann man die Anzahl der registrierten Geräte erkennen und auch verwalten

push18

In Summe ist es mit viel Aufwand verbunden, eine UWP Anwendung NWS Push zu aktualisieren. Eine Reihe von ID’s, Secrets und Urls. App Services, Service Bus und Notification Hub. Keine durchgängig Wizard gesteuerte UI. Als Alternative könnte man mit SignalR das gleich in wenigen Minuten umsetzen.


Viewing all articles
Browse latest Browse all 1198

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes