问题
I am trying to retrieve the device registration ID in order to send notifications to it from my backend.
I already gave it several tries:
- Outside my Object
GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({
init: function(){
var pushNotification = window.plugins.pushNotification;
window.GambifyApp.NotificationHandler = GambifyApp.NotificationHandler;
if ( device.platform == 'android' || device.platform == 'Android' )
{
console.log('pushNotification Register');
pushNotification.register(
this.successHandler,
this.errorHandler, {
"senderID":GambifyApp.config.android_sender_id,
"ecb":"window.externalOnNotificationGCM"
});
},
});
window.externalOnNotificationGCM = function (e) {
console.log('reg id:' + e.regid);
};
Approach was Inside another Object (Everything stays the same, except the ECB :
"ecb":"window.GambifyApp.NotificationHandler.onHandler"
And here is where i put the handler:
GambifyApp.NotificationHandler = window.GambifyApp.NotificationHandler = {
onHandler: function(e){
console.log('onHandler:');
if(e.event == "registered") {
console.log('reg id:' + e.regid);
}
console.log(e);
}
}
My last approach with
"ecb":"GambifyApp.NotificationManager.onNotificationGCM"
And here the additions to the manager class:
GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({
/* ...... */
onNotificationGCM: function(e){
console.log('MESSAGE received:');
console.log(e);
}
});
I have also tried without the window object etc. My sucess handler is always triggered but never the ECB.
回答1:
The issue was solved by specifying ecb
as window.GambifyApp.NotificationHandler.onNotificationGCM
:
pushNotification.register(
this.successHandler,
this.errorHandler, {
"senderID":GambifyApp.config.android_sender_id,
"ecb":"window.GambifyApp.NotificationHandler.onNotificationGCM"
}
);
来源:https://stackoverflow.com/questions/26630558/cordova-pushplugin-ecb-not-called