Hello everyone I\'m developing a cordova Hybrid app that requires the Push Notification Service of Android and iOS to work and so I\'ve installed the cordova plugin \"PushPl
I had the same problem. If you are using AngularJS + IonicFramework you do not have to do this:
After you create your factory with your onDeviceReady function, creates onNotificationGCM function. Something like this:
app.factory('PushProcessingService', function () { ..
});
function onNotificationGCM(e) { }
I was creating onNotificationGCM inside my factory. This solve my problem. I hope it can helps you.
In the ionic-framework you have a ready plugin: http://ngcordova.com/docs/plugins/pushNotifications/
here is an example for a working code for android devices:
module.run(function($cordovaPush) {
var androidConfig = {
"senderID": "replace_with_sender_id",
"ecb": "replace_with_the_name_of_function that will return you the regid"
};
document.addEventListener("deviceready", function(){
$cordovaPush.register(config).then(function(result) {
// Success
}, function(err) {
// Error
})
window.function replace_with_ecb(notification) { //notification.regid
switch(notification.event) {
case 'registered':
if (notification.regid.length > 0 ) {
alert('registration ID = ' + notification.regid);
}
break;
case 'message':
// this is the actual push notification. its format depends on the data model from the push server
alert('message = ' + notification.message + ' msgCount = ' + notification.msgcnt);
break;
case 'error':
alert('GCM error = ' + notification.msg);
break;
default:
alert('An unknown GCM event has occurred');
break;
}
};
}, false);
});
this code only works a real device(not an emulator)
FIXED
I moved the onNotificationGCM in an empty script tag like this:
<script>
function onNotificationGCM(result) {
alert(result.regid);
}
</script>
And now it give you the regID :)