概述
概述
如流 JS-SDK是面向网页开发者提供的基于如流内的网页开发工具包,通过使用JS-SDK,网页开发者可借助如流高效地使用拍照、选图、语音、位置等手机系统的能力。如流客户端分为三层实现,JS-SDK定义了JsLib层的接口。
如图:
初始化
基础
如流的JS SDK以客户端注入的形式提供,注入时机在全部静态资源加载完成之后,因此如果我们在页面初始化的时候需要调用JS API,直接调用或者在window.onload时调用,是会出错的。
错误
window.load = function() {
BdHiJs.setTitle('xxxx');
}
BdHiJs.setTitle('xxxx');
我们可以通过window.onBdHiJsReady获取到注入完成的时机:
正确
window.onBdHiJsReady = function() {
BdHiJs.setTitle('xxxx');
}
什么情况下会注入BdHiJs
我是应用:应用环境下都会被注入BdHiJs
我是普通页面:无
权限注入
使用JS的Web App要求先注入配置信息,否则服务可能无法使用(比如文件, 图片上传等),应当在onBdHiJsReady() 中首先调用:
BdHiJs.config({
// 参数参见接口定义
});
快速判断和设置
看了上面的介绍,我们会发现页面初始化如果要进行一些端上提供的操作必须等待资源加载完毕且JS SDK注入完毕后才能进行,这样难免用户会看到没拿到数据时的一些中间态。userAgent获取是否是如流客户端,客户端版本号,客户端JS SDK版本号。
接口规范
接口名:
BdHiJs的接口采用四段式,例如:BdHiJs.device.geolocation.get。
接口名 | 命名空间 |
---|---|
BdHiJs | 主命名空间 |
device | 服务命名空间 |
geolocation | 功能命名空间 |
get | 功能方法 |
接口参数:
接口参数是一个对象,属性见下表:
属性名 | 属性值类型 | 属性描述 |
---|---|---|
data | 对象或者JSON字符串 | 接口业务数据 |
onfail | 函数,回传参数为字符串 | 接口调用失败 单次回调失败原因。例如: - 参数格式不正确 - 缺少必要参数 |
onsuccess | 函数,回传参数为对象 | 接口调用成功 单次回调成功结果 |
listener | 函数,回传参数为对象 | 通知数据变更 通知用户交互 |
data参数类型统一为json string形式为佳。
端 | data可接受类型 |
---|---|
ios | json / json string |
android | json string |
mac | json / json string |
windows | json / json string |
接口实现:
接口参数的所有属性(data、onfail、onsuccess、listener)均可不填写,客户端检查是否存在。
版本号机制和旧版本兼容:
采用 if (BdHiJs.*) 方式判断接口是否存在,接口如果存在,则拥有首次增加接口时的能力。接口的新增能力,会使用版本号说明。客户端当前的JS版本号,使用 BdHiJs.sdk.version.get()接口查看。