-
Notifications
You must be signed in to change notification settings - Fork 0
Description
jsBridge
源码
https://github.com/uyutech/android/blob/master/app/src/main/assets/h5_bridge.js
逻辑
- 在webview加载页面时立刻注入此bridge.js
- 已自动防重复,可多次注入
- 每次h5调用时,均会在cosnole控制台log打印
h5container.message:开头的字符串,后面跟着json字符串数据,容器侦听console.log中符合此字符串开头的消息,解析json字符串做接下来操作 - json字符串格式为
{
'fn': 'string', // 调用的方法名,不同方法对应不同功能,也对应着相应的插件
'clientId': 'string', // 每次调用的唯一id标示
'param': 'jsonstring', // 调用的数据,可能为空或空字符串
'cb': Function, // 无视之,回调参数
}api
call(fn: String, param: *, cb: Function)
console控制台log打印js调用的信息,以便native侦听
trigger(name: String)
构造并触发name事件,并接受事件侦听回调的prevent回调值,再调用call方法并将prevent值作为param的一个参数,主要用在点击左上角返回时e.preventDefault()自定义接下来的动作
emit(name: String, param: *)
json解析param,并构造触发name事件,将param作为事件的data属性发出
_invokeJS:(clientId: String, resp: *)
回调js方法,此clientId对应每次js调用call执行native方法时其自动生成的唯一clientId
插件
android源码目录
https://github.com/uyutech/android/tree/master/app/src/main/java/cc/circling/plugin
AlbumPlugin
调用方式
jsBridge.album(data: Object = { num: int }, function(res: Object) {
/*
* data.num,选择照片数量限制
* res.success = true/false,是否成功
* res.cancel = true/false,是否用户取消
* res.base64 = ['string'],返回的base64编码图片数据数组
* res.message = 'string',报错时错误消息
*/
});说明
打开相册,选择照片后返回图片base64编码数据数组。回调。
AlertPlugin
调用方式
jsBridge.alert('弹窗文字');说明
alert弹窗信息,阻断型,有一个确定按钮点击消失。无回调。
BackPlugin
调用方式
jsBridge.back();说明
js主动调用,也有可能是按了左上方的返回按钮,由native触发了一个back事件。此插件根据事件是否e.preventDefault()决定是否执行,执行的话先检查当前webview可否goBack(),可以的话回退相当于浏览器返回上一页,不能的话退出当前活动视图相当于浏览器关闭当前标签页。无回调。
ConfirmPlugin
调用方式
jsBridge.confirm(obj: Object = { title: String, message: String }, function(res) {
// res = true / false 点击是确认还是取消
});说明
title可能为空,message一定不为空,有确认和取消按钮,点击后回调。
DownloadPlugin
调用方式
jsBridge.download(obj: Object = { name: String, url: String });说明
name可能下载存的文件名,url为http请求地址,下载会有系统下载消息及进度状态等,点击可取消下载。无回调。
GetPreferencePlugin
调用方式
jsBridge.getPreference(key: String, function(res: String) {
// res为获取的值
});说明
获取native本地存储的信息,对应有setPreference,js存储信息到本地,完成后回调。
HideBackButtonPlugin
调用方式
jsBridge.hideBackButton();说明
隐藏左上角的返回按钮,对应还有showBackButton。无回调。
HideLoadingPlugin
调用方式
jsBridge.hideLoading();说明
隐藏loading界面,对应还有showLoading。无回调。
HideOptionMenuPlugin
调用方式
jsBridge.hideOptionMenu();说明
隐藏右上角选项,对应还有showOptionMenu。无回调。
LoginOutPlugin
调用方式
jsBridge.loginOut(function() {});说明
删除当前session,同步native和webview;android为手动,ios为自动。登出后回调。
LoginWeiboPlugin
调用方式
jsBridge.loginWeibo(function(data: Object) {
/*
* data.success = true/false 是否成功
* data.type = 0/1 没有成功时,取消/失败
* data.message 没有成功的原因
* data.openID 成功时微博返回的openID即userID
* data.token 成功时微博返回的token
*/
});说明
唤起登录微博,需接入微博sdk,openID和token参数在weiboLogin插件中有用到。完成后回调。
MoveTaskToBackPlugin
调用方式
jsBridge.moveTaskToBack();说明
将当前应用程序收起到后台运行,显示回退到桌面,类似按下了Home键。无回调。
NetworkInfoPlugin
调用方式
jsBridge.networkInfo(function(data: Object) {
/*
* data.available = true/false 当前网络是否可用
* data.wifi = true/false 当前是否是wifi网络
*/
});说明
获取当前网络状况,将信息回调。
NotificationPlugin
调用方式
jsBridge.notify(data: Object, params: Object);说明
data.ticker: String,顶部时间导航栏的通知简短显示文案,当无时取title;
data.title: String,下拉显示通知详情时的通知标题,可为空;
data.content: String,下拉显示通知详情时的内容;
data.url: String,点击通知后唤起应用程序,并用webview加载的url;
params,webview的参数key/value集合。
无回调。
OpenUriPlugin
调用方式
jsBridge.openUri(url: String);说明
唤起系统浏览器打开url。无回调。
PopWindowPlugin
调用方式
jsBridge.popWindow(data: Object);说明
类似按下左上角返回键,退出当前活动试图view,回到上一个活动,并将data参数传给上一个活动,上一个活动侦听resume事件能获取到这些参数。无回调。
PromptPlugin
调用方式
jsBridge.prompt(obj: Object, function(data: Object) {
/*
* obj.message 提示的问题自·文字
* obj.value 输入框默认的内容
* data.success = true/false 是否确认
* data.value = 'string' 输入的文字
*/
});说明
弹出一个系统输入对话框,消息为obj.message,有一行输入文字,默认内容obj.value,有确认和取消按钮,点击后回调。
PushWindowPlugin
调用方式
jsBridge.pushWindow(url: String, params: Object);说明
新打开一个活动试图,webview加载url,且容器参数为params的key/value。无回调。
RefreshPlugin
调用方式
jsBridge.on('refresh', function(e) {
e.preventDefault();
});说明
容器下拉转圈刷新时,侦听refresh事件,当调用preventDefault()方法时,阻止原来的刷新,否则的话,为重新加载当前的webview,类似浏览器的刷新功能。
RefreshStatePlugin
调用方式
jsBridge.refreshState(state: Boolean);说明
当前活动页面是否可用下拉刷新功能。无回调。
SetCookiePlugin
调用方式
jsBridge.setCookie(key: String, value: String/null, cb: Function);说明
设置cookie,domain限制为当前页面的domain,path为/,当value为null时为删除。完成后回调。
SetOptionMenuPlugin
调用方式
jsBridge.setOptionMenu(data: Object);说明
data.text,设置右上角选项的文字。无回调。
SetPreferencePlugin
调用方式
jsBridge.setPreference(key: String, value: String/null, cb: Function);说明
存储key/value到native,当value为null时为删除,对应有getPreference,结束后回调。
SetSubTitlePlugin
调用方式
jsBridge.setSubTitle(subTitle: String);说明
设置副标题文字。无回调。
SetTitleBgColorPlugin
调用方式
jsBridge.setTitleBgColor(color: String);说明
设置标题背景色。无回调。
SetTitlePlugin
调用方式
jsBridge.setTitle(title: String);说明
设置主标题文字。无回调。
ShowBackButtonPlugin
调用方式
jsBridge.showBackButton();说明
显示回退按钮,对应有hideBackButton。无回调。
ShowLoadingPlugin
调用方式
jsBridge.showLoading(data: Object = { title: String, message: String, cancelable: Boolean});说明
显示半透明loading加载信息,阻挡当前view操作,title可为空,cancelable是否可以取消关闭当前loading界面。无回调。
ShowOptionMenuPlugin
调用方式
jsBridge.showOptionMenu();说明
显示右上角选项。无回调。
ToastPlugin
调用方式
jsBridge.toast(message: String);说明
显示toast消息。无回调。
WeiboLoginPlugin
调用方式
jsBridge.weiboLogin(data: Object, function(res) {
/*
* res.success = true/false 登录成功/失败
* res.userInfo 用户信息
*/
});说明
将data中的key/value组成post参数形式,向http://circling.cc/h5/oauth/weibo 发起http请求,直接将返回结果传回js。