2013-03-24 68 views
2

我想讓GCM推送通知在我的應用程序中工作,因此我使用這個項目(https://github.com/marknutter/GCM-Cordova)爲例。Phonegap:「processMessage失敗」無法發送JavaScript函數(科爾多瓦2.5.0)

當我運行示例代碼時,一切正常,但當我傳輸所有必需的文件並編輯我的代碼讓它在我自己的應用程序中工作時,它不再工作。 我也嘗試了下面的插件(https://github.com/phonegap-build/PushPlugin),並自動安裝它後,它給出了完全相同的錯誤。

該應用程序不會崩潰,但是當我調用註冊函數時,我的回調函數「onNotificationGCM」沒有收到任何消息。

註冊功能:

window.plugins.GCM.register("my_gcm_id", "onNotificationGCM", successHandler, errorHandler); 

一些調試我想通了,原生的Android代碼能夠註冊電話,並確實得到了GCM服務器的ID信息後,但它無法發送到我的JavaScript。

原生Android代碼:

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"}) 

在消息前的資本Ĵ奇怪,也許這是導致這個問題的原因,但它似乎發生在科爾多瓦2.5.0代碼的某處。

有沒有人有任何想法我可以解決這個問題?

+0

HI是你能得到的回答你的問題?當我從我的活動調用sendJavascript()方法時,我也得到sam e processMessage失敗錯誤。無法找出原因。這是我的帖子http://stackoverflow.com/questions/18839876/cordova-sendjavascript-not-working-for-android-processmessage-failed-error-not – curioussam 2013-09-17 01:41:05

回答

0

這不是科爾多瓦2.5.0錯誤!如果從「CORDOVA_GCM_script.js」例如複製和粘貼,你就會有這樣的事情:

case 'registered': 
    // the definition of the e variable is json return defined in GCMReceiver.java 
    // In my case on registered I have EVENT and REGID defined 
    gApp.gcmregid = e.regid; 
    if (gApp.gcmregid.length > 0) 
    { 
     $("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regid + "</li>"); 


     // ============================================================================== 
     // ============================================================================== 
     // ============================================================================== 
     // 
     // This is where you would code to send the REGID to your server for this device 
     // 
     // ============================================================================== 
     // ============================================================================== 
     // ============================================================================== 

    } 

    break 

確保「新聞出版總署」陣列和「gcmregedit」變量在腳本中聲明,或只是不在事件處理程序中不會使用它們。否則,你會得到一個「processMessage失敗」 - 消息,因爲之前發生了「undefined」 - 錯誤。

0

檢查您的代碼是否有任何不正確的JSON.parse ...這些「非法訪問」等錯誤消息似乎在JSON.parse(not_a_json_string)發生時拋出。

1

我有同樣的問題。根據我的理解,在進行了一些調試之後,我的字符串末尾有一個不需要的新行字符「\ n」,我並不負責,看起來電話差距添加了該字符。所以我所做的是在代碼的Java部分的字符串.replace("\n", "")

String js =「javascript:displayTextMessage('」+ date.toString()+「 - 」+ msg。替換(「\ n」,「」)+「');」 ; sendJavascript(js);

3

嘗試添加

window.onNotificationGCM = onNotificationGCM; 

更改功能

的情況下它解決了我的問題

+0

非常感謝..! – Ved 2014-03-27 14:10:47

+0

你是明星,非常感謝 – 2015-01-18 18:24:50

相關問題