0

Wie kann ich die Push-Benachrichtigung so formatieren, dass sie bei der Anzeige in der Statusleiste das Konstrukt der lokalen Benachrichtigung nutzen kann - den Text anzeigen und die Daten verbergen?Umgang mit Push-Benachrichtigungen über die Android-Statusleiste

Verhalten: Push-Benachrichtigungen werden in der Statusleiste des Geräts angezeigt, wenn die mobile App nicht ausgeführt wird. Wenn der Benutzer auf die Benachrichtigung in der Statusleiste klickt, wird die Benachrichtigung ausgeblendet und die App wird geöffnet. Obwohl dies ein akzeptables Verhalten ist, wurde die ursprüngliche Push-Benachrichtigung nicht so formatiert, dass der Benutzer sie in der Statusleiste sehen kann. Wie kann die Push-Benachrichtigung so formatiert werden, dass sie besser mit der Anzeige der Statusleiste (lokale Benachrichtigung) kompatibel ist? Mit anderen Worten, die Daten ausblenden, aber benutzerlesbaren Text anzeigen?

Plugins:

  • Push Notification: phonegap-plugin-Push Lokale Benachrichtigung
  • Lokale Benachrichtigung: de.appplant.cordova.plugin.local-Benachrichtigung

.Net C# App-Service Code:

string xml = "<ACTION>Add</ACTION>" + 
      "<UserId>" + ut.UserId + " </UserId>"; 
Dictionary<string, string> templateParams = new Dictionary<string, string>(); 
templateParams["messageParam"] = xml; 
try 
{ 
    NotificationOutcome result = await 
     hub.SendTemplateNotificationAsync(templateParams, tagId); 
    config.Services.GetTraceWriter().Info(result.State.ToString()); 
    return result; 
} 

Unten ist mein mobile App Code:

cordova.plugins.notification.local.on("click", function (notification) { 
    // Notification.text - contains whatever is in messageParam 
    // Notification.data - How do I format the app service code so that the 
    //      xml shows up in Notification.data? 
}); 

Danke für jede Hilfe.

+0

Ich kann das XML in ein Objekt konvertieren. Wie würde C# eine Zeichenfolge in ein JavaScript-Objekt konvertieren? Wie formatiere ich die templateParams des Web Services? – Mike

Antwort

0

Unten ist meine Lösung ...

Server-Side:

Dictionary<string, string> templateParams = new Dictionary<string, string>(); 
templateParams["messageParam"] = xmlNotification; 
templateParams["titleParam"] = "testTitle"; 
templateParams["dataParam"] = "this is some data"; 

NotificationOutcome result = await 
    hub.SendTemplateNotificationAsync(templateParams, tagId); 
config.Services.GetTraceWriter().Info(result.State.ToString()); 

Client-seitiges Anmeldung:

AzureDbSvc.client.push.register('gcm', handle, { 
    mytemplate: { body: { data: { message: "{$(messageParam)}", title: "{$(titleParam)}", 
     data: "{$(dataParam)}" } }, tags: arrTags } 

clientseitigen Mitteilung Handler:

pushRegistration.on('notification', function (data) { 
     ... 
    }); 

Danke t o Jeff Sanders für die Bereitstellung der folgenden Dokumentation ...

Inhalt der Daten zur Laufzeit:

Debugger Quickwatch Window