summaryrefslogtreecommitdiff
path: root/plugins/phonegap-plugin-push/src/windows
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/phonegap-plugin-push/src/windows')
-rw-r--r--plugins/phonegap-plugin-push/src/windows/PushPluginProxy.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/plugins/phonegap-plugin-push/src/windows/PushPluginProxy.js b/plugins/phonegap-plugin-push/src/windows/PushPluginProxy.js
new file mode 100644
index 00000000..ca8087b2
--- /dev/null
+++ b/plugins/phonegap-plugin-push/src/windows/PushPluginProxy.js
@@ -0,0 +1,86 @@
+var myApp = {};
+var pushNotifications = Windows.Networking.PushNotifications;
+
+var createNotificationJSON = function (e) {
+ var result = { message: '' }; //Added to identify callback as notification type in the API in case where notification has no message
+ var notificationPayload;
+
+ switch (e.notificationType) {
+ case pushNotifications.PushNotificationType.toast:
+ case pushNotifications.PushNotificationType.tile:
+ if (e.notificationType === pushNotifications.PushNotificationType.toast) {
+ notificationPayload = e.toastNotification.content;
+ }
+ else {
+ notificationPayload = e.tileNotification.content;
+ }
+ var texts = notificationPayload.getElementsByTagName("text");
+ if (texts.length > 1) {
+ result.title = texts[0].innerText;
+ result.message = texts[1].innerText;
+ }
+ else if(texts.length === 1) {
+ result.message = texts[0].innerText;
+ }
+ var images = notificationPayload.getElementsByTagName("image");
+ if (images.length > 0) {
+ result.image = images[0].getAttribute("src");
+ }
+ var soundFile = notificationPayload.getElementsByTagName("audio");
+ if (soundFile.length > 0) {
+ result.sound = soundFile[0].getAttribute("src");
+ }
+ break;
+
+ case pushNotifications.PushNotificationType.badge:
+ notificationPayload = e.badgeNotification.content;
+ result.count = notificationPayload.getElementsByTagName("badge")[0].getAttribute("value");
+ break;
+
+ case pushNotifications.PushNotificationType.raw:
+ result.message = e.rawNotification.content;
+ break;
+ }
+
+ result.additionalData = {};
+ result.additionalData.pushNotificationReceivedEventArgs = e;
+ return result;
+}
+
+module.exports = {
+ init: function (onSuccess, onFail, args) {
+
+ var onNotificationReceived = function (e) {
+ var result = createNotificationJSON(e);
+ onSuccess(result, { keepCallback: true });
+ }
+
+ try {
+ pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync().done(
+ function (channel) {
+ var result = {};
+ result.registrationId = channel.uri;
+ myApp.channel = channel;
+ channel.addEventListener("pushnotificationreceived", onNotificationReceived);
+ myApp.notificationEvent = onNotificationReceived;
+ onSuccess(result, { keepCallback: true });
+ }, function (error) {
+ onFail(error);
+ });
+ } catch (ex) {
+ onFail(ex);
+ }
+ },
+ unregister: function (onSuccess, onFail, args) {
+ try {
+ myApp.channel.removeEventListener("pushnotificationreceived", myApp.notificationEvent);
+ myApp.channel.close();
+ onSuccess();
+ } catch(ex) {
+ onFail(ex);
+ }
+ }
+};
+require("cordova/exec/proxy").add("PushNotification", module.exports);
+
+