Skip to content

插件相关 #4

@army8735

Description

@army8735

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。

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions