无法从GCM接收regid(phonegap app android)

时间:2014-10-31 15:11:10

标签: javascript android cordova android-notifications google-cloud-messaging

我尝试使用Phonegap测试推送通知应用。我在GCM注册了我的项目,并在SenderID var中添加了我的项目编号。这是代码:

var app = { 
    initialize: function() { 
        this.bindEvents(); 
    }, 

    bindEvents: function() { 
        document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 

    onDeviceReady: function() { 
        app.receivedEvent('deviceready'); 
    }, 
    receivedEvent: function(id) { 
        var parentElement = document.getElementById(id); 
        var listeningElement = parentElement.querySelector('.listening'); 
        var receivedElement = parentElement.querySelector('.received'); 

        listeningElement.setAttribute('style', 'display:none;'); 
        receivedElement.setAttribute('style', 'display:block;'); 

        console.log('Received Event: ' + id); 
        var pushNotification = window.plugins.pushNotification; 
            alert("Register called"); 
            pushNotification.register(this.successHandler, this.errorHandler,{"senderID":"543180841340","ecb":"app.onNotificationGCM"}); 
    }, 
    successHandler: function(result) { 
        alert('Callback Success! Result = '+result) 
    }, 
    errorHandler:function(error) { 
        alert(error); 
    }, 
    onNotificationGCM: function(e) { 
        switch( e.event ) 
        { 
            case 'registered': 
                if ( e.regid.length > 0 ) 
                { 
                    console.log("Regid " + e.regid); 
                    alert('registration id = '+e.regid); 
                    document.getElementById('regId').value = e.regid; 
                } 
            break; 

            case 'message': 
              alert('message = '+e.message+' msgcnt = '+e.msgcnt); 
            break; 

            case 'error': 
              alert('GCM error = '+e.msg); 
            break; 

            default: 
              alert('An unknown GCM event has occurred'); 
              break; 
        } 
    }, 
    onNotificationAPN: function(event) { 
        var pushNotification = window.plugins.pushNotification; 
        alert("Running in JS - onNotificationAPN - Received a notification! " + event.alert); 

        if (event.alert) { 
            navigator.notification.alert(event.alert); 
        } 
        if (event.badge) { 
            pushNotification.setApplicationIconBadgeNumber(this.successHandler, this.errorHandler, event.badge); 
        } 
        if (event.sound) { 
            var snd = new Media(event.sound); 
            snd.play(); 
        } 
    } 
};

我收到第一个警报("注册调用")但不是regID。我正在使用适用于Android的Phonegap开发者应用程序和" phonegap服务"命令让它生效。我也尝试下载应用程序,但仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

解雇("Register called")并不意味着推送通知注册已实例化,但这意味着调用了receivedEvent,这很好。

1-确保config.xml中包含push notification pluginpushNotification对象不为空。

将插件包含到config.xml :添加<gap:plugin name="com.phonegap.plugins.pushplugin" />

2-确保发件人ID为“无拼写错误”。