js和原生app交互,傳遞方法名和參數


前段時間,嵌入到app的H5頁面,需要和原生app做交互,查了一下資料,記錄了一些東西,方便以后查看翻閱。

此例中,在和原生app做交互時,前端主要做兩件事情:

1、前端定義方法名,並且告知app開發人員定義的方法名、傳遞的參數名,方便app人員獲取;

2、Androidios交互的js寫法不一樣,所以需要判斷該手機是Android還是ios。

 

下面是需求,以及實現的代碼和截圖:

需求: 點擊H5頁面中的按鈕“立即加入”,跳轉到原生app支付頁面,傳給app一個活動id

實現代碼:

1.html代碼:

解釋:paymentVip 是定義的方法名,{$vipactivity.id} 是php開發人員傳遞的活動id,其實僅僅就是傳遞的一個參數。

 

 

1 <div class="default-content">
2     <img src="/mobile/newest/img/user/vip_title.png">
3     <a href="javascrip:;" class="btn" onclick="paymentVip('{$vipactivity.id}')">立即加入</a>
4 </div>

 

2、js代碼:

解釋:(1)、paymentVip 是定義的方法名,{"activityId": id} 是傳遞給app的參數。 第3行代碼  var mobile=$('#mobile').val(); 是獲取當前機型,對應不同的js寫法,ios和android 在第3和第9行傳遞的方法名,一定和定義的方法名 paymentVip 保持一致。自行修改方法名和 傳遞的參數,其余的寫法保持一致就可以了;

(2)如果和app交互不需要傳參, 則直接去掉參數,本例中直接去掉 {"activityId": id} 。但是機型是ios不傳參,但要額外傳遞 {"code": 1},code值隨便,主要是為了方便ios 獲取定義的方法名,如果不傳一個類似的參數,ios總是獲取不到定義分方法,不知道為什么。

 1 /*6.1——vip跳轉*/
 2 function paymentVip(id) {
 3     var mobile=$('#mobile').val();
 4     if (mobile == 'ios') {
 5         window.webkit.messageHandlers.paymentVip.postMessage({"activityId": id});
 6     }
 7     if (mobile == 'android') {
 8         window.WebViewJavascriptBridge.callHandler(
 9             'paymentVip',
10             {"activityId": id},
11             function (responseData) {
12                 document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
13             }
14         );
15     }
16 }

截圖展示:

圖1:html代碼

 圖2:對應的js代碼

 

 圖3:傳遞參數為空的代碼,注意ios寫法

 

 

如有錯誤,請指出,我是小白,我要學習!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM