@tianfangye
2017-05-27T03:28:21.000000Z
字数 10792
阅读 3302
NativeAPI 用于 JavaScript 与 Native Code 双向通信。
sendToNative
方法,JavaScript 通过调用此方法向 Native 发送消息。sendToJavaScript
方法,Native 通过调用此方法此方法向 JavaScript 发送消息。params
为 0、1、123 之类数字时,类型全部用 String(即使用 "0"、"1"、"123" 这样的字符串)。
if ( /hbgj/i.test(appName) ) {
window.location.href = "openetjs://start?type=nativeapi";
} else if ( /gtgj/i.test(appName) ) {
window.location.href = "gtgj://start?type=nativeapi";
}
method
confirm
params
title
String 标题信息message
String 对话框消息yes_btn_text
String 确定按钮⽂文字no_btn_text
String 取消按钮⽂文字result
YES
Number 常量 1NO
Number 常量 0CLOSE
Number 常量 2value
Number 0/1/2JS -> Native: {method: "confirm", params: { title: "test", message: "hello world", yes_btn_text: "是的", no_btn_text: "不是" }, id: 1}
Native -> JS: {result {value: 0, YES:1, NO: 0, CLOSE: 2}, id: 1}
// invoke 方法是对 sendToNative 的封装
NativeAPI.invoke(
"confirm", {
title: "提示",
message: "message",
yes_btn_text: "~确定~",
no_btn_text: "~取消~"
},
function(err, data) {
if (err) {
return handleError(err);
}
switch (data.value) {
case data.YES:
echo("你点了确定按钮");
break;
case data.NO:
echo("你点了取消按钮");
break;
case data.CLOSE:
echo("你使用其他方式关闭了弹窗");
break;
default:
echo("未知动作,返回code是[" + data.value + "]");
}
}
);
method
alert
params
title
String 标题信息message
String 对话框消息btn_text
String 确定按钮⽂文字result
YES
Number 常量 1CLOSE
Number 常量 0value
Number 1 或者 0JS -> Native: {method: "alert", params: { title: 123, message: "msg", btn_text: "是的" }, id: 1}
Native -> JS: {result {value: 0, YES:0, CLOSE: 1}, id: 1}
NativeAPI.invoke(
"alert", {
title: "这是标题",
message: "这是消息",
btn_text: "确定按钮"
},
function(err, data) {
if (err) {
return handleError(err);
}
switch (data.value) {
case data.YES:
echo("你点了确定按钮");
break;
case data.CLOSE:
echo("你使用其他方式关闭了弹窗");
break;
default:
echo("未知动作,返回code是[" + data.value + "]");
}
}
);
method
close
method
closeAll
method
createWebView
params
url
String url有可能是相对的,如果是相对路径的话就根据当前 webView 的 url 进⾏计算controls
Array 可选;controls 是一个数组,元素中 type: title
表示要设置的是标题,text: "Native Page 2"
为具体文本。
NativeAPI.invoke("createWebView", {
url: window.location.origin + "xxx",
controls: [
{
type: "title",
text: "Native Page 2"
}
]
});
描述:当JS调⽤Native的back时,Native需要调⽤JS的back接⼝,然后根据JS的back接⼝的返回逻辑进⾏操作。
设计意图:因为混合应用里面 back 这个操作比较特殊,首先肯定需要 Native 做一点事情(关闭当前 webview ),而这时候 JS 也可能想做一点事情,所以 native 返回 webview 时候问一下 js ,看看 web 这边有没有什么特殊安排。
注意:由 JS 提供的方法,Web 端不一定会注册,即可能不存在。这时按照 JSONRPC 2.0 返回 -32601(Method not found)。
method
back
JS -> Native: {method: "back", params:null}
method
webViewCallback
params
url
String url有可能是相对的,如果是相对路径的话就根据当前webView的url进⾏计算JS -> Native: {method: "webViewCallback", params: {url: "/index.html" }}
method
getUserInfo
params
appName
String "gtgj"代表高铁管家,"hbgj"代表航班管家。result
phone
String ⽤户电话uid
String 设备ID,标识设备userid
String ⽤户ID,标识用户authcode
String tokenhbuserid
String 过渡期参数,下一版本统一用 userid。hbauthcode
String 过渡期参数,下一版本统一用 authcode。error
code
描述:获取当前的客户端信息
method
getDeviceInfo
result
imei
String 移动设备国际识别码p
String 用于识别 APP 的自定义的标识uuid
String 该字段包含⽤户的登录信息,后端 API 可以通过将此字段兑换成 sessionId 之类的数据用于校验⽤户登录状态。channel
String 例如:appstorename
String 例如:gtgjversion
String APP 版本method
makePhoneCall
params
number
String 电话号码result
value
Numbermethod
updateTitle
params
text
String 标题栏⽂文字method
storage
params
action
String 操作名称 [get|set|remove]key
Stringvalue
Stringresult
value
Stringmethod
confirmUnload
params
action
String on
表示开启这个功能,即关闭时候弹窗询问;off
就是关闭此功能,即直接关闭不询问。title
String 弹窗标题message
String 弹窗描述method
updateHeaderRightBtn
params
action
String 控制按钮显⽰与隐藏,当 action == "show" 的时候展⽰,当 action == "hide" 的时候隐藏。icon
String 按钮图片,图片的base64编码,如果没有找到icon则显⽰text字段,text字段默认为空。text
String 按钮文字,没有 icon 字段时使用。data
Object btn上附属的数据,在⽤户点击后传给⻚⾯内的js回调。method
setNavigationBarVisible
params
value
Number 1:显示 0:隐藏。method
setNavigationBarTintColor
params
tintColor
String 需要设置的颜色(RGBA格式:221,45,2,1)。如果为空,恢复成系统默认的颜色。method
configNavigationBar
params
navibarEnableAlphaGradient
1: 开启 0: 关闭 naviBarMinAlphaOffset
导航栏完全透明时 scrollview offsetnaviBarMaxAlphaOffset
导航栏完全不透明时 scrollview offsetJS -> Native: {method: "clearAppCache", params: null }
method
isSupported
params
method
String 需要查询的方法result
value
Boolean true 支持,false 不支持。由于历史原因,isSupported 方法目前返回value:"1/0"。method
selectContact
params
selectedContacts
String phone
以逗号分隔。表示已经选择的联系人,用于显示联系人列表时自动选中。maxNum
String 表示选择联系人的数量上限,默认为1(即单选),0 则表示不设上限。result
name
String 联系人的名字phone
Array 电话号码数组contacts
Array 以数组形式返回联系人信息。原本的 name
和 phone
字段,则为数组中第一个联系人的信息(即兼容单选)。method
setOrientation
params
orientation
String 默认值为 portrait
(强制竖屏),其他值包括 auto
(跟随手机旋转),landscape
(强制横屏)。method
setGestureBack
params
preventDefault
Boolean false 表⽰执⾏默认⾏为(手势返回有效),true 表⽰阻⽌止默认⾏为(手势返回无效)。method
sendSMS
params
phone
Stringmessage
Stringresult
value
Boolean true 成功,false 不成功。method
getCurrentPosition
result
latitude
The latitude as a decimal numberlongitude
The longitude as a decimal numberaccuracy
The accuracy of positionheading
The heading as degrees clockwise from Northspeed
The speed in meters per secondtimestamp
The date/time of the responsemethod
scanBarcode
result
value
String 扫描得到的字符串method
sharePage
params
title
String 分享块标题desc
String 分享块描述link
String 分享块链接imgUrl
String 分享块图片type
String 分享类型;支持 weixin
weibo
pengyouquan
sms
email
,多个用逗号分割 type: "weixin,pengyouquan"
;如果是 all
表示想要分享到所有,此参数为空或不传此参数时,效果应等同于 all
。result
value
Boolean true 成功,false 不成功。method
trackEvent
params
event
String 记录事件名attrs
String 统计字符串(JSON String)method
startPay
params
quitpaymsg
String 退出时候的提示title
String 支付标题price
String 商品价格orderid
String 订单号productdesc
String 商品描述url
String 显示订单基本信息的Wap页面subdesc
String 商品详情描述canceltype
String 取消等待支付结果的跳转类型:0代表跳转机票订单,1代表跳转酒店订单,2代表跳转其他订单,-1代表不做跳转(默认为-1)result
SUCC
常量,表示支付成功FAIL
常量,表示支付失败CANCEL
常量,表示用户取消了支付(高铁管家3.3开始支持)PENDING
常量,表示目前为支付待确认状态,由于第三方支付结果可能需要等待较长的时间,未知状态时可以返回 PENDINGvalue
SUCC/FAIL/CANCEL/PENDING
NativeAPI.invoke("startPay", {
quitpaymsg: "您尚未完成支付,如现在退出,可稍后进入“个人中心->其他订单”完成支付。确认退出吗?, ",
title: "商城订单",
price: "145",
orderid: "150513188189022",
productdesc: "接机订单支付",
subdesc: "专车接送",
url: "http://jp.rsscc.com/Fmall/rest/client/v4/pay.htm?orderid=150513188189022",
canceltype: -1
}, function(err, data) {
switch (data.value) {
case data.SUCC:
alert("支付成功, 跳转详情");
break;
case data.FAIL:
alert("支付失败");
break;
case data.CANCEL:
alert("您取消了支付");
break;
case data.PENDING:
alert("目前为支付待确认状态");
break;
default:
alert("支付异常");
}
});
method
loading
params
show
String 1 显示,0 隐藏text
String 显示的文字result
SUCC
常量,正常显示FAIL
常量,显示失败CANCEL
常量,点了返回键value
SUCC/FAIL/CANCELmethod
copyToClipboard
params
text
String 需要复制的文字result
SUCC
常量,正常显示FAIL
常量,显示失败CANCEL
常量,点了返回键value
SUCC/FAIL/CANCELmethod
searchMap
params
userLoc
String("true/false") 是否显示定位用户当前位置按钮,默认为truezoom
String(number) 初始地图缩放(宽度,单位米),默认为1000lat
String(number) 初始地图纬度,默认为用户当前位置lng
String(number) 初始地图经度,默认为用户当前位置city
String 可选;关键字搜索的目标城市param
String 可选;用来传递其他的可能的场景或搜索限制信息,具体用途和定义由后台服务器API定义;由客户端透传字段至服务器,以便服务器做进一步的优化result
name
String 选择的兴趣点名称address
String 选择的兴趣点地址lat
String 选择的兴趣点纬度lng
String 选择的兴趣点经度phone
String 可选;兴趣点联系电话method
showMap
params
name
String 显示兴趣点名词address
String 显示兴趣点地址lat
String 兴趣点经度lng
String 兴趣点纬度icon
String 可选;锚点图标url,默认样式有客户端决定userLoc
String("true/false") 是否显示定位用户当前位置按钮,默认为truemethod
showMapTracking
params
icon
String 跟踪目标标识图标url,用来象征性显示被跟踪对象的类型或特性scene
String 跟踪场景,针对不同的场景,服务器将提供不同的跟踪数据源给客户端,由客户端透传给服务器端trackid
String 跟踪对象标识,如租车场景下的车辆ID,用来获取指定目标的跟踪信息method
postNotification
params
name
String 消息名value
String 可选,消息对应的值method
login
params
result
SUCC
常量,表示登录流程完成FAIL
常量,表示登录流程中断CANCEL
常量,表示用户在登录过程中作了取消操作value
它的值应该是 SUCC/FAIL/CANCEL 其中之一,用来判断成功/失败等状态method
logout
描述:用于账号合并。客户端退出登陆账号,关闭当前webview,并跳转至客户端登录页面。
result
SUCC
常量,表示流程完成FAIL
常量,表示流程中断CANCEL
常量,表示用户在过程中间作了取消操作value
它的值应该是 SUCC/FAIL/CANCEL 其中之一,用来判断成功/失败等状态method
getWeixinCode
result
SUCC
常量,表示流程完成FAIL
常量,表示流程中断CANCEL
常量,表示用户在过程中间作了取消操作value
它的值应该是 SUCC/FAIL/CANCEL 其中之一,用来判断成功/失败等状态code
String 微信身份codemethod
createHttpRequest
params
url
String, 'http://h5.133.cn/hangban/api/ticket?orderid=123' (https请求需要添加端口号,'https://h5.133.cn:443/hangban/api/ticket?orderid=123')method
String, 'GET'(default) / 'POST' / 'HEAD' / 'PUT' / 'OPTIONS' / 'DELETE', http方法(默认'GET')header
JSON Object, {Content-Type: 'text/html'} , 自定义http请求头body
String or JSON Object, 自定义http请求体result
statusCode
-1(异常), 200(成功),304(重定向),400,404,500等 // http响应状态码header
JSON Object, http响应头 body
String or JSON Object, http响应体method
saveImage
params
String
base64格式图片result
YES
Number 常量 1NO
Number 常量 0value
Number 0/1 method
resume
params
prevUrl
String 当前 webview 为基准,前一个 webview 的 URL(没有就为空)。nextUrl
String 当前 webview 为基准,后一个 webview 的 URL。Native -> JS: {method: "resume", params: {prevUrl: "a.html", nextUrl: "c.html"}}
method
back
result
preventDefault
Boolean false 表⽰执⾏默认⾏为(在 Android 上表⽰⽴刻关闭当前界⾯),true 表⽰阻⽌止默认⾏为。流程说明:点返回按钮——N 调用 J 的 back——J 返回给 N {preventDefault: true/false}——N 根据 preventDefault 值决定是否执行返回操作。
Native -> JS: {method: "back", params:null, id: 1}
JS -> Native: {result: {preventDefault: false}, id: 1}
params
Native -> JS: {method: "headerRightBtnClick", params: null}
Native -> JS: {method: "headerRightBtnClick", params: { "foo": "bar"}}
// 先调用 updateHeaderRightBtn 设置右边按钮的文字或图片,再调用 headerRightBtnClick 设置点击了右侧按钮后做什么。
rightButtonText: function() {
var self = this;
NativeAPI.invoke("updateHeaderRightBtn", {
action: "show",
text: "分享",
data: {
list: [1, 2, 3]
}
}, function(err, data) {
if (err) {
return handleError(err);
}
echo(JSON.stringify(data));
});
NativeAPI.registerHandler("headerRightBtnClick", function(data) {
echo(JSON.stringify(data));
self.share();
});
}