JS調用App方法及App調用JS方法

來源:互聯網
上載者:User

標籤:通過   擴大   sage   業務   bsp   忽略   pos   catch   就是   

做App內嵌H5項目時,經常會遇到js與App的互動,最普遍的就是方法的互相調用,那麼如何?方法的互相調用呢?

 

寫在前面:

  如果只是小項目且後期擴大的可能性不大的時候,可以忽略,可如果是長期項目的話,那麼就需要考慮以下一些問題了。

  1. 方法命名規範。

        如果考慮到以後會有大量的方法,那麼正常化的命名就很重要了,正常化的命名,既保證了名字的唯一性又保證了代碼的可讀性方便開發過程,也方便後期維護。

     舉個栗子,  如果現在有一個方法,是關閉webview, js調用app的方法, 如果直接叫closePage, 那麼根本看不出來是要調用App的方法,混亂且有可能被其他命名覆蓋,那麼如果叫 JAMS__closePage ,即所有的js 與App的互動的方法都加 JAMS 那麼就很容易分辨了,且不易重名。

       2.安全性。

    如果在你的App內能開啟其他的網頁連結,那麼這些介面的安全性也是需要考慮的,即保證在指定的webview或者授權的webview內這些方法才能被調用,這點很重要。

    第一種方法是app內判斷webview地址來源,來匹配對用方法的使用權,顯然這個每次添加新頁及方法的時候,App都需要修改授權列表。

    第二種方法是,App開啟webview的時候,如果是自己的業務H5那麼調用的時候可以傳入一個token,每次調用方法時都校正token。

 

一, js調用App 方法

  假設方法名為  JAMS__mark

 

  android 系統:

    window.android.JAMS__mark(params)   // @params為傳入的參數, app內可以收到   ios 系統:                     window.webkit.messageHandlers.closePage.postMessage(params)   // @params為傳入的參數, app內可以收到

       

然後可以封裝一下 像這樣

export function JAMS__mark() {    if (/android/i.test(navigator.userAgent)) {        try {            window.android.JAMS__mark(params)        } catch (e) {            console.log(e)        }    } else if (/ios|iphone|ipod|pad/i.test(navigator.userAgent)) {        try {            window.webkit.messageHandlers.JAMS__mark.postMessage(params)        } catch (e) {            console.log(e)        }    }}

 

 

 

二、 App調用js方法

 

App調用js 方法需要js將方法掛載在window下,這樣App才能調用到方法,

假設方法名叫    JAMS__success

 

window.JAMS__success = function () {

  // do some thing

  // if need some params ,you can alse return it

  return params;

}

需要主要的是如果需要返回一些資料給App,那麼這些資料不能夠通過非同步來擷取,也不能夠有阻斷進程的語句如alert,否者,app將不能夠擷取到正確參數,而是得到 undefined,  例如在方法裡加個alert(‘1‘), 而 return 在 alert語句後。

 

(完)

 

JS調用App方法及App調用JS方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.