1. 程式人生 > >最近做的h5和Native互動協議

最近做的h5和Native互動協議


為了js 比較 優雅地 和iOS和Android做互動。設計此文件。

基本協議

iOS通過Javascript Core注入appHandler方法。此方法只有一個引數 String. 所有的H5呼叫Native 都走這個方法。

    iOS swift : func appHandler(_  jsonString:String) ; 

 java  類似 : public void appHandler( String  jsonString);

Note: 目前Android和iOS統一 協議物件名為nativeBridge。協議方法名統一為appHandler, 如果出現method有平臺差異性,在協議中做出說明。

這個jsonString 是一個Json。Json的格式如下

{
    "method": "想要呼叫的方法名",
   "params":

   {

      "p1": "引數1",
      "p2": "引數2",

   }
}

 

類似的。h5在webview 注入h5Handler。所有Native呼叫H5都走這個方法。 回撥資訊也在這裡。Json的格式如下

{
    "method": "想要呼叫的方法名",
   "params":

   {
      "p1": "引數1",

      "p2": "引數2",

   }

}

Note:

1 method 一定要有,不可以為空。 params一定要有,可以為空(相當於無參方法). 

2為了達到非同步回撥的效果。被呼叫端按照補充協議的描述返回callback的method名和引數。如果補充協議標明沒有callback引數則不實行回撥。

appHandler補充協議

method 引數列表(預設為String,如無說明) callback(H5 接收此回撥) callback 引數列表 相當於JavaScript的 json例子 可用版本
示例1 getUserToken   getUserToken( )

{
"method": "getUserToken",
"params": {}
}

 
示例1 payAction

orderId : "11111"

fee:"11"

payActionCallback

isSuccessed : 1 或 0

payRet: "已支付" 或 "已取消" 或 “已失敗”

payAction(orderId,fee ,function(isSuccessed,payRet) {


} )

{
"method": "payAction",
"params": {
"orderId": "11111",
"fee": "11"
}
}

 
payAction 發起支付

必須有的:

payChannel: 目前只有“WxApp” 或者 “AliPay”

orderNo: h5從服務端拿的訂單號,唯一。

title: 訂單標題

totalFee : 訂單總額,以分為單位。如“1”表示是1分錢的訂單。“1000”是10塊錢。

 

payActionCallback

這是支付後的回撥

errorResult: 錯誤描述,此訊息為空時。可等待serverPaidActionNotification回撥。如果此訊息長度大於0.一定是支付出了問題了。H5端注意了,客戶端已經對客戶彈出警告了,h5不要對此彈警告框

 



    v1.0.0

 

h5Handler補充協議

method 引數列表(預設為String,如無說明) callback(客戶端處理 此回撥) callback 引數列表 json例子 可用版本

serverPaidActionNotification

服務端支付通知,只在成功時收到

 

serverPaidActionNotification 才是成功通知

必須有的:

orderNo: 訂單號,唯一。

    v1.0.0

補充協議的js呼叫示例

請看附件