为了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调用示例
请看附件