一、通用参

native内嵌的h5页面,往往需要判断当前的设备环境等信息,故约定一些通用参数。native在所有webview中都存放这些参数,以便h5随时可以获取使用。存储在url和cookie两个地方。

  1. URL
    • clientType,客户端类型,例如ios、android
    • deviceId,设备id,用户设备的唯一标示
    • versionNumber,客户端的版本号
    • mobilePhone,用户的手机号
  2. 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 不隐藏

四、其它

测试地址

http://h5.***.com/hybrid