Javascript回调未在Cordova Android应用中触发

时间:2014-01-08 21:21:44

标签: android cordova callback

我正在使用Cordova Android应用来接收推送通知。应用程序没有问题,除了没有任何Javascript回调被触发。例如,在下面的代码中,successHandler或errorHandler应该触发......但它们不会触发。

function successHandler (result) { 
    alert('Success - ' + result); 
}

function errorHandler (error) {
    alert('Success - ' + result);
}

nNotification.register(successHandler, errorHandler, {"senderID":"abcdefghijklmnopn","ecb":"onNotificationGCM"});

从Java发送到webview的其他Javascript cide也是如此(如onNotificationGCM。)

什么可能阻止所有源自Java的Javascript被解雇?

1 个答案:

答案 0 :(得分:0)

成功注册GCM后,您将获得onNotificationGCM功能的回调

({" senderID":" abcdefghijklmnopn"" ECB":"的 onNotificationGCM "}) 所以,添加

window. onNotificationGCM = function(msg){
  alert(JSON.stringify(msg))

}

你会得到回调,如果GCM注册失败,你就不会得到任何回调。

如果你需要在successHandler函数上获得回调,你需要编辑一些java文件

<强> 1.GCMBaseIntentService.java

替换PushPlugin.sendJavascript( json );

PushPlugin.sendOnregisterSuccess( json );

<强> 2.PushPlugin.java

添加一个公共变量

public static CallbackContext cal= null;

和里面

public boolean execute(String action, JSONArray data, CallbackContext callbackContext) 

功能添加

 cal = callbackContext;

PushPlugin

中添加新的私有函数
public static void sendOnregisterSuccess(JSONObject _json) {
        //String _d = "javascript:" + gECB + "(" + _json.toString() + ")";
        //Log.v(TAG, "sendJavascript: " + _d);
        cal.success(_json);

    }

现在,您将在 successHandler 功能

中获得注册successCallback