2013-12-17 21 views
3

我試圖使用FacebookConnect插件的PhoneGap,發現它並沒有不管登錄成功的回調被打破,經過一番周圍挖和Java記錄跟蹤我將問題簡化成這個簡單的例子,它類似於我在FacebookConnect插件中發現的同樣的問題...科爾多瓦插件回調從UI線程的JavaScript似乎在PhoneGap的3.3

這個非常簡單的測試會失敗,幾乎與cordova的最簡單的插件dev片段相同。

在JS:

var cordova = window.cordova || window.Cordova; 
MyTest = { 
    test: function() { 
     console.log("Testing"); 
     alert("Testing"); 
     cordova.exec(function(){ 
       console.log("successful return from test"); 
      }, 
      function(){ 
       console.log("failed return"); 
      }, 'org.apache.cordova.mything.MyTest', 'test', []); 
     } 
    }  

在Java:

public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { 
    if (action.equals("test")) { 
     //Call Back HERE would work 
     callbackContext.success(new JSONObject("{}")); 
     cordova.getActivity().runOnUiThread(new Runnable() { 
      public void run() { 
       //Callback here DOES NOT WORK 
       //callbackContext.success(new JSONObject()); 
      }; 
     });    
    } 
} 

在這個問題的內容:

  • 「工作」 從JavaScript的「成功返回意味着日誌消息 測試「打印在日誌中。
  • 「不工作」是指沒有印刷從JavaScript日誌消息 (既不成功也不失敗),呼叫 只是去到的空白。

我是phonegap和cordova的新手,所以我不知道這個特定的測試是否可以在以前的版本中工作。

我的測試設備是三星Galaxy S3運行通過的PhoneGap 3.3 CLI(I從NPM拉年12月,16日,2013年最新)

任何人都知道/或測試了它這個版本的Android 4.1.2編譯此組合工作還是隻是我的設備/操作系統?

+0

你可以使用這個插件https://github.com/studiosoton/faceGap而不使用本地插件檢查它 –

+0

或者你必須更新插件,如phonegap 3 http://docs.phonegap.com/en/edge/guide_hybrid_plugins_index。 md.html#Plugin%20Development%20Guide –

+0

mohamd,我還沒有嘗試過這個鏈接,但是我做了很多研究,我不認爲有可能在沒有本地應用的情況下在本地應用登錄Facebook代碼插件。從本質上講,你指出的git看起來不像是一個phonegap插件,因爲它純粹是基於javascript的,所以它看起來只是facebook的oauth http調用的一個包裝。 – JChow

回答

0

我發現我的問題後忘了更新此問題。這是一個非常愚蠢的錯誤,希望它能幫助其他人。

的問題原來是我包括在我的項目都cordova.js和phonegap.js的事實。當你將phonegap和cordova混合使用時,會發生很多事情......先用cordova創建該項目,然後將其轉換爲phoneada yada yada。

無論如何,cordova.js和phonegap.js基本上是相同的文件。所有變量,方法名稱的定義方式完全相同。顯然,當從Java的東西返回的方法調用時,來自隊列的結果交換變得困惑,在我的情況下,返回變量的cordova實例得到了結果,但沒有得到phonegap實例。因此,我的phonegap實例返回的結果始終爲空。

0

檢查以確保您從Java中的execute方法返回true。如果您返回false,您的成功回調將永遠不會被調用。

+0

雖然這不是被接受的答案,但這應該適用於所有最終在本頁面上的人!以前一直在努力 – babycakes

相關問題