PhoneGap Plugin(4):開啟原生介面與JS函式呼叫

這篇文章原本的名稱是「原生插件常用物件與JS函式呼叫」,不過因為想加入新的內容,所以決定更名重新發佈。

Android 插件常用物件
首先我們可以看到 CordovaPlugin 這個物件,裡面有列出插件可以實作的所有方法。initialize() 是插件初始化的階段,可以讓我們取得 webView 的物件。如果你的程式會使用到 Activity 或 Context,也可以趁著這個階段儲存至全域變數。

Android 插件開啟原生 Activity
原始 Android 是透過 Intent 設定開啟的 Activity 與傳遞的參數,這個部份 Cordova 也是一樣的,只有在最後啟動的語法不同。因此參考下面的程式碼,只有在 16–17 行要作調整。

若是原生 Activity 呼叫一個新的 Cordova MainActivity 實體時,會觸發插件上的 pluginInitialize 或 onNewIntent 事件(平台不同觸發的事件略有不同),返回參數與結束頁面,只要透過 mActivity 做動作即可,參考下面的 9–10 行。

從 Android 插件呼叫 JavaScript 函式
利用 initialize 裡儲存的物件,我們可以寫一個方法來呼叫 JavaScript function。下面第 1 行傳入的是 function 的名稱,你會看到第 5 行的寫法和 HTML 的 <a> 標籤一樣。如此一來插件與 PhoneGap 主程式之間的溝通,就不限於完成時的 callbackContext() 呼叫。

從 iOS 插件呼叫 JavaScript 函式
iOS 的寫法比 Android 簡單許多。我們知道 iOS 在回傳插件的結果,是透過 commandDelegate 這個物件。翻開它的原始碼一看,會看到它有提供一個 evalJs 的方法可以直接呼叫,因此它的呼叫只需要下面一行就能完成。若是不需要回傳值,使用最後一行的語法即可。

開啟原生介面的部份由於內容不多,所以想說併到舊的文章裡面。另外iOS的作法我就不太清楚了,這個部份只好請大家見諒。我自己目前只對 Android 比較熟悉,後續的分享也會以 Android 為主。