If you are using with azure push..below is the working code.(pushplugin for phonegap)
function InitpushNotificaions() {
// alert("Notification setup");
try {
mobileServiceClient = new WindowsAzure.MobileServiceClient('https://mobbacktest.azure-mobile.net/', 'RvahPxHKoEsGiLdlCYZpHBllvSVQxl66');
pushNotification = window.plugins.pushNotification;
if (device.platform == 'android' || device.platform == 'Android' ||
device.platform == 'amazon-fireos')
{
// AndroId
pushNotification.register(successHandler, errorHandler, { "senderID": "724086851305", "ecb": "onNotification" }); // required!
}
else
{
//IOS
pushNotification.register(tokenHandler, errorHandler, { "badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN" }); // required!
}
}
catch (err) {
txt = "There was an error on this page.\n\n";
txt += "Error description: " + err.message + "\n\n";
alert(txt);
}
}
// handle APNS notifications for iOS
onNotificationAPN=function (e) {
if (e.alert) {
$("#app-status-ul").append('<li>push-notification: ' + e.alert + '</li>');
// showing an alert also requires the org.apache.cordova.dialogs plugin
navigator.notification.alert(e.alert);
}
if (e.sound) {
// playing a sound also requires the org.apache.cordova.media plugin
var snd = new Media(e.sound);
snd.play();
}
if (e.badge) {
pushNotification.setApplicationIconBadgeNumber(successHandler, e.badge);
}
}
//handle GCM notifications for Android
onNotification = function (e) {
// alert("gcm");
switch (e.event) {
case 'registered':
if (e.regid.length > 0) {
// Your GCM push server needs to know the regID before it can push to this device
// here is where you might want to send it the regID for later use.
// alert('step 1 Azure! ' + e.regid);
if (mobileServiceClient) {
// alert('step 2 Azure!');
// Template registration.
var template = "{ \"data\" : {\"message\":\"$(message)\"}}";
// Register for notifications.
mobileServiceClient.push.gcm.registerTemplate(e.regid,
"myTemplate", template, null)
.done(function () {
// alert('Registered template with Azure!');
}).fail(function (error) {
//alert('Failed registering with Azure: ' + error);
});
}
console.log("regID = " + e.regid);
}
break;
case 'message':
// if this flag is set, this notification happened while we were in the foreground.
// you might want to play a sound to get the user's attention, throw up a dialog, etc.
if (e.foreground) {
// on Android soundname is outside the payload.
// On Amazon FireOS all custom attributes are contained within payload
var soundfile = e.soundname || e.payload.sound;
// if the notification contains a soundname, play it.
// playing a sound also requires the org.apache.cordova.media plugin
var my_media = new Media("/res/" + beep.wav);
alert("Message:"+e.message);
my_media.play();
}
else { // otherwise we were launched because the user touched a notification in the notification tray.
if (e.coldstart) {
}
else {
}
}
break;
case 'error':
break;
default:
break;
}
}
function tokenHandler(result)
{
// $("#app-status-ul").append('<li>token: '+ result +'</li>');
// Your iOS push server needs to know the token before it can push to this device
// here is where you might want to send it the token for later use.
}
function successHandler(result) {
alert("Success handler:" + result);
// $("#app-status-ul").append('<li>success:'+ result +'</li>');
}
function errorHandler(error) {
alert("Error handler:" + error);
}
onNotificationAPN
has to be defined globally since that is the contextstringByEvaluatingJavaScriptFromString
evaluates javascript in. – Amen