我试图让 GCM 推送通知在我的应用程序中工作,因此我使用这个项目(https://github.com/marknutter/GCM-Cordova)作为示例。
当我运行示例代码时,一切正常,但是当我传输所有必需的文件并编辑我的代码以使其在我自己的应用程序中工作时,它不再工作了。我还尝试了以下插件(https://github.com/phonegap-build/PushPlugin),在自动安装后它给出了完全相同的错误。
该应用程序不会崩溃,但是当我调用注册函数时,我的回调函数“onNotificationGCM”没有收到任何消息。
注册功能:
window.plugins.GCM.register("my_gcm_id", "onNotificationGCM", successHandler, errorHandler );
经过一些调试后,我发现原生 android 代码能够注册手机并且确实从 GCM 服务器获得了 ID 消息,但它无法将其发送到我的 javascript。
原生安卓代码:
public static void sendJavascript( JSONObject _json )
{
String _d = "javascript:"+gECB+"(" + _json.toString() + ")";
Log.v(ME + ":sendJavascript", _d);
if (gECB != null ) {
gwebView.sendJavascript( _d );
}
}
LogCat 给出以下“失败”消息:
03-24 17:05:21.844: V/GCMPlugin:sendJavascript(31782): javascript:onNotificationGCM({"regid":"APA91bHX...31ASD","event":"registered"})
03-24 17:05:22.834: D/CordovaLog(31782): processMessage failed: Message: Jjavascript:onNotificationGCM({"regid":"APA91bHX...31ASD","event":"registered"})
消息前面的大写J很奇怪,也许这就是导致问题的原因,但它似乎发生在 Cordova 2.5.0 代码的某个地方。
有谁知道我该如何解决这个问题?