一、通用参
native内嵌的h5页面,往往需要判断当前的设备环境等信息,故约定一些通用参数。native在所有webview中都存放这些参数,以便h5随时可以获取使用。存储在url和cookie两个地方。
- URL
- clientType,客户端类型,例如ios、android
- deviceId,设备id,用户设备的唯一标示
- versionNumber,客户端的版本号
- mobilePhone,用户的手机号
- COOKIE
- clientType,客户端类型,例如ios、android。
- deviceId,设备id,用户设备的唯一标示
- versionNumber,客户端的版本号
- mobilePhone,用户的手机号(登录情况下有值)
二、H5和native的通信
交互的核心是native可以拿到webview的window对象,native可以拦截webview的http请求。故App原生与网页之间通过约定uic://
协议来进行双方的数据交互。
语法格式是:uic://类别标签?key=value&key=value..
value有可能是中文或url带uic://协议的关键字,& = : / /等,所以对value进行了encodeURIComponent编码。原生需进行转码获取value值。
网页发送的url请求,原生通过截取请求的类别标签识别要处理的行为。不同的类别标签用到的传参各不相同,详细见下文:
交互请求
navigateTo
用途
留当前页面,跳转到应用内的某个页面。
参数
参数名 | 必需 | 备注 |
---|---|---|
url | 是 | 需要跳转的路径, 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’ |
isSupportProtocol | 否 | 跳转后的页面是否支持客户端协议跳转(如不传默认为支持) 0:支持;1:不支持 |
orientation | 否 | 跳转后的页面以竖屏或横屏展示(如不传默认为竖屏) 0:竖屏; 1:横屏 |
backRefresh | 否 | 返回当前页时是否刷新:0:false;1:true |
success | 否 | 成功的回调函数,native需在接口调用成功后在webview中执行它。 |
fail | 否 | 失败的回调函数,native需在接口调用失败后在webview中执行它。 |
complete | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例
uic:// navigateTo?url=www.baidu.com
redirectTo
用途
关闭当前页面,跳转到应用内的某个页面。
参数
参数名 | 必需 | 备注 |
---|---|---|
url | 是 | 需要跳转的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’ |
success | 否 | 成功的回调函数,native需在接口调用成功后在webview中执行它。 |
fail | 否 | 失败的回调函数,native需在接口调用失败后在webview中执行它。 |
complete | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
noLeftBackBtn | 否 | 是否显示返回按钮:1:不显示;0:显示 |
示例
uic:// redirectTo?url=www.baidu.com
navigateBack
用途
关闭当前页面,返回上一页面或多级页面
参数
参数名 | 必需 | 备注 |
---|---|---|
delta | 是 | 返回的页面数,小于1的情况返回错误回调。 如果 delta 大于现有页面数,则返回到最接近它的原生页面。 |
示例
uic:// navigateBack?delta=1
openNewWebview
用途
关闭当前webview,并打开一个新的webview
参数
参数名 | 必需 | 备注 |
---|---|---|
url | 是 | 新webview的页面地址,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’ |
示例
uic:// openNewWebview?url=www.baidu.com
getScanDeviceQrcode
用途
调出原生扫一扫识别设备指纹二维码
参数
参数名 | 必需 | 备注 |
---|---|---|
callback | 否 | JS回调函数的名字,存放在window.Hybrid下,通过调用该回调函数,获取识别设备指纹二维码结果,客户端通过回调函数将识别结果返回给H5。 |
示例
uic://getScanDeviceQrcode?callback=callback464564
setNativeTitle
用途
设置原生导航栏标题文字
参数
参数名 | 必需 | 备注 |
---|---|---|
text | 是 | 设置当前页面导航栏标题 |
示例
uic:// setNativeTitle?text=标题文字
navigateToBrowser
用途
原生调用浏览器页面
参数
参数名 | 必需 | 备注 |
---|---|---|
url | 是 | 页面地址 |
示例
uic://navigateToBrowser?url=http://www.baidu.com
webActive
用途
客户端通知h5网页进入激活状态。例如从其它应用切换回来,或者通过返回按钮回到发起这个交互协议的页面参数
参数
参数名 | 必需 | 备注 |
---|---|---|
callback | 是 | js回调函数的名字,存放在window.Hybrid下,客户端通过调用这个函数,通知h5,当前页面被再次激活了。 |
示例
uic:// webActive?callback=callback464564
saveImage
用途
长按H5页面的图片时,调用原生保存图片功能
参数
参数名 | 必需 | 备注 |
---|---|---|
url | 是 | 需要保存的图片url |
示例
uic:// saveImage?url=data:image/jpeg;base6412123fdfdf
getShare
用途
调用原生分享控件
参数
参数名 | 必需 | 备注 |
---|---|---|
title | 是 | 分享的标题 |
desc | 否 | 分享的描述 |
link | 是 | 分享的链接(完整的url链接) |
imgUrl | 是 | 分享的图片地址(完整的url链接) |
type | 否 | 指定的分享类型,如有带该参数,则直接唤起指定的客户端。 1:微信; 2:朋友圈 3:复制链接 |
callback | 否 | js回调函数的名字,存放在window.Hybrid下,客户端通过调用这个函数,将分享结果返回给H5。 |
示例
uic:// getShare?link=http://www.baidu.com&title=我是标题&desc=我是描述 &imgUrl=http://www.baidu.com/logo.jpg&type=1&callback=callback4645
原生回调
h5发起请求以后,可能会传success、fail、complete这三个值。
这三个值当中存储了h5当中的回调函数名,客户端需要在下面约定的特定的时机执行它。例如window.Hybrid.success()
。(由于这个函数是存储在window的全局变量中的,所以约定一下,所有Hybrid交互相关的函数都存储在window.Hybrid下。)
在三个值都传参的情况下,当原生响应了h5的请求进行操作后,不论成功失败都要执行一下complete,如果h5的操作响应成功了,执行success,失败了则执行fail。如果没有传某个参数,则跳过该参数的处理。
URL协议
hybrid-hideBack
H5内部页面跳转可设置hybrid-hideBack参数,隐藏header左边返回按钮,显示关闭按钮(关闭按钮在历史记录大于1时显示)。
- hybrid-hideBack=1 隐藏
- hybrid-hideBack=0 不隐藏