最近做的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( ) | { |
||
示例1 payAction | orderId : "11111" fee:"11" |
payActionCallback | isSuccessed : 1 或 0 payRet: "已支付" 或 "已取消" 或 “已失敗” |
payAction(orderId,fee ,function(isSuccessed,payRet) { } ) |
{ |
|
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呼叫示例
請看附件