我正在使用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被解雇?
答案 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