2014-01-08 48 views
0

我正在研發Cordova Android應用以接收推送通知。該應用程序沒有問題,除了沒有Javascript回調被解僱。例如,在下面的代碼中,successHandler或errorHandler應該會觸發......但它們不會。在Cordova Android射擊時未發射Javascript回調Android應用

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)

什麼能阻止所有的JavaScript源於Java的被解僱?

+0

你在真機上進行測試。在模擬器(默認)上,喲不能使用GCM,因爲它不包含谷歌服務。 –

+0

是的,我正在測試一個實際的設備,而不是使用模擬器。 –

+0

設備準備就緒,插件導入正確。如果一切正確,你可以發佈onNotificationGCM函數,確保onNotificationGCM是窗口對象的全局函數。 –

回答

0

與GCM succesfull註冊後,您會得到回調onNotificationGCM功能

({ 「senderID」: 「abcdefghijklmnopn」, 「ECB」: 「onNotificationGCM」}) 左右,加入

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

} 

你將得到回調,如果GCM寄存器失敗發生,你將不會得到任何回調。

如果你需要得到successHandler回調函數,你需要編輯一些java文件

1.GCMBaseIntentService.java

PushPlugin.sendOnregisterSuccess(json);

2取代PushPlugin.sendJavascript(json);

。 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); 

    } 

現在,您將得到註冊successCallback在successHandler功能