Background
I installed PushPlugin. According to the docs I used automatic installation. But when I run cordova run android
, Ja
I finally realized that the error was due to the EventListener
for deviceready
. I changed
if ('device is android') {
document.addEventListener("deviceready", this.onDeviceReady(), false);
}
to
document.addEventListener("deviceready", this.onDeviceReady, false);
and everything fell right into place. Though this is a careless mistake, I still leave this question and it's answers for others who might encounter this issue
I can't really see, why ur solution is not working. The only thing I can provide is my working solution. There might be some redundancies or unnecessary things in there, because I myself tried 35 Versions before I got it working:
First Thing is I attach to pg events in an App Initializer and register my Notification Services:
Ember.Application.initializer({
name: 'phonegap',
/* ...... */
initialize: function(container, application){
// Push
container.register('notification:manager', GambifyApp.NotificationManager, { singleton: true });
container.register('notification:handler', GambifyApp.NotificationHandler, { instantiate: false });
container.injection('notification:handler', 'appController', 'controller:application');
container.injection('notification:handler', 'commentRoute', 'route:usergroup.comment');
}
}
Then my Manager Service is registering the the device:
GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({
init: function(){
//var self = this;
var pushNotification = Ember.get(window, 'plugins.pushNotification');
if(!Ember.isEmpty(pushNotification)){
if ( device.platform == 'android' || device.platform == 'Android' )
{
pushNotification.register(
this.successHandler,
this.errorHandler, {
"senderID":GambifyApp.config.android_sender_id,
"ecb":"window.GambifyApp.NotificationHandler.onNotificationGCM"
});
}
} else {
Ember.Logger.error('pushNotification Plugin not running');
}
GambifyApp.NotificationHandler.manager = this;
},
successHandler: function (result) { },
errorHandler: function (error) {
Ember.Logger.error('Error while registering with push:' + error);
},
});
Then in a case of success the ECB is called with the device ID which is could by my handler:
GambifyApp.NotificationHandler = window.GambifyApp.NotificationHandler = {
manager: null,
onNotificationGCM: function(e){
console.log('---------- GCM Event:-----------');
console.log(e);
if(e.event === "registered") {
console.log(e.regid); // Registraion ID
}
},
};
Hope this might help.