无法在pubnub javascript回调中获得错误

时间:2015-02-06 12:43:09

标签: javascript cordova push-notification pubnub

我正在关注此博文中的howto:http://www.pubnub.com/blog/sending-android-push-notifications-via-gcm-javascript-using-phonegap/

直到现在我已经完成了以下工作:

  • 在Google Dev Console中创建了一个新项目
  • 启用Google Cloud Messaging for Android
  • 获取发件人ID(项目编号)和服务器 键

然后将push plugin添加到现有项目中:

$ cordova plugin add https://github.com/phonegap-build/PushPlugin.git

然后将PushNotification.js从插件复制到我的js lib文件夹。 我正在加载这个js文件和带有requirejs的pubnub cdn,这似乎工作正常。

我在howto中使用2.2中的脚本创建了一个模块。

define(['env-config','datastore/localstore','jquery','push','pubnub'],function (EnvConfig,Store) {

  var pushNotification = window.plugins.pushNotification;   

  function register() {
    pushNotification.register( 
      successHandler, 
      errorHandler, 
      { 'senderID':EnvConfig.push.senderid, 'ecb':'onNotificationGCM'} 
    );
  } 

  function successHandler(result) { 
    console.log('Success: '+ result); 
  }

  function errorHandler(error) { 
    //** The following line throws: 
    //** java.lang.Long cannot be cast to java.lang.String
    console.log('Error:' + error);
  }

  function onNotificationGCM(e) { 
    switch(e.event){ 
      case 'registered': 
        console.log("Device registered with id "+e.regid);
        Store.set("pushid"+e.regid);
        /*if (e.regid.length > 0) { 
          deviceRegistered(e.regid); 
        } */
        break;   
      case 'message': 
        if (e.foreground){ 
          //What needs to be done when app is in the foreground 
          //while receiving a notification 
          console.log('A notification has been received'); 
        } 
        break;   
      case 'error': 
        console.log('Error: ' + e.msg); 
        break;   
      default: console.log('An unknown event was received'); 
      break; 
    } 
  } 

  var module = {
    init: function() {
      register();
    }
  };

  return module;
});

当设备准备就绪时,我调用该模块的init函数。

目前register()失败并执行errorHandler回调。但是console.log失败了: java.lang.Long无法强制转换为java.lang.String 。所以我不知道下一步该做什么......

非常感谢任何指针。

三星Galaxy S5
Android 4.4.2
Chrome 30.0(在webview中)
科尔多瓦3.6.3-0.2.13

1 个答案:

答案 0 :(得分:2)

啊,我想我知道发生了什么 - 您的发件人ID必须是字符串!您可能正在使用它作为数字。

顺便说一下,谢谢你试用我写的教程: - )