UNPKG

@yunzhijia/qing

Version:

> qingjs是为了方便前端人员在云之家环境调用native代码的工具类,兼容新版桌面端、老版桌面端、移动端、微信

223 lines (181 loc) 6.82 kB
# qing > qingjs是为了方便前端人员在云之家环境调用native代码的工具类,兼容新版桌面端、老版桌面端、移动端、微信 桥测试页面:http://www.yunzhijia.com/public/js/qing/latest/test_qing.html ## 如何使用 ### 常规使用案例 * NPM版本 ``` npm install @yunzhijia/qing // QingJS资源请求路径,可以是CDN地址 qing.assertHost = 'https://static.yunzhijia.com' // 这改为云之家服务域名 ``` * 常规版本 ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <title>usecase</title> </head> <body> <!-- 引入qing --> <script src="//static.yunzhijia.com/public/js/qing/latest/qing.js"></script> <script> // 在 qing.config 执行前,所有其它的 ydk api 都不会真正被调用 // 这里是一个简单的配置,其它 API list 请参考详细文档 qing.config({ debug : false, jsApiList : ['checkJsApi', 'share'], jsEventList: ['appear', 'disappear'] // 自动绑定事件,会通过document.dispatchEvent分发 }); // 获取个人信息 qing.call('getPersonInfo', { success : function(res){} }); qing.on('appear', { complete: function (res) {}, error: function (res) {}, success : function(res){} }); </script> </body> </html> ``` ### 接口调用说明 所有接口的调用形式为 `qing.call('xxx', {...})`,参数必须是一个对象。 每个接口除了自身必须的参数外,还支持以下通用参数: 1. `success`:接口调用成功时执行的回调函数。 1. `error`:接口调用失败时执行的回调函数。 1. `complete`:接口调用完成时执行的回调函数,无论成功或失败都会执行。 以上所述的回调函数的参数说明,如 `success : function (res) { ... }`,这里的 `res` 为对象,除了每个接口自身返回的数据之外,还有两个通用属性 `code` 和 `errMsg`,其值格式如下: 1. 调用成功(`success`):`{code: 200, errMsg: "", data: {}}` 1. 调用失败(`error`):`{code: 500, errMsg: "不合法的图片文件大小", data: {}}` > **注:** code 类型为数字,非字符串。 ## 接口说明 ### 基础接口 #### qing.config 获取app信息 在 qing.config 未成功执行前,其他 api 将无法正常使用(在调用队列里安静的等着,不会被执行) ```javascript qing.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。 jsApiList: ['api-1', 'api-2', '...'] //必填,需要使用的JS接口列表 }); ``` > 只有在 jsApiList 中明确指定的 API,当前 webview 中才可用。因为某些 API 的初始化需要额外的开销,从而导致资源浪费。 #### qing.checkJsApi 判断当前客户端版本是否支持指定 API 接口 用于检测当前客户端支持哪些桥。 ```javascript qing.checkJsApi({ jsApiList: [ "gotoLightApp", // qing.nativeJsBridgeVersion >= 0.9.18 "todoList", // qing.nativeJsBridgeVersion >= 0.9.80 "setBounce", // qing.nativeJsBridgeVersion >= 0.9.27, iosOnly "selectLocalFile" // qing.nativeJsBridgeVersion >= 0.9.30, androidOnly ], success: function(res){ console.log(res); } }); // success返回结果res示例: { "success": true, "data":{ "gotoLightApp": true, "todoList": false, "setBounce": true, "selectLocalFile": false } } ``` ### 通过应用后端返回的签名信息获取ticket 在活动页或者混合应用中, 可以通过 `qing.call('getTicket')` 取得ticket。 方法一: ```javascript qing.call('getTicket', { signUrl: '/path/to/myapp/sign', signMethod: 'post', success (e) { alert(e.data.ticket) }, error (error) { alert(error) } }) ``` signUrl是获取签名的接口,各个轻应用的后端应该提供这样一个接口,这个接口会接收到一个名为url参数(post) 返回结果的格式必须如下: ```json { "success": true, "data": { appId: "", timeStamp: "", nonceStr: "", signature: "" } } ``` 方法二: 如果你通过别的方式(例如页面直出)拿到了签名信息,也可以像下面的例子直接传入。 ```javascript qing.call('getTicket', { timeStamp:'1530867948317', signature:'7qaScdppiMKuDoYadUqbZhlZhgw=', appId:'101091520', nonceStr:'0.7057841489531929', success (e) { alert(e.data.ticket) }, error (error) { alert(error) } }) ``` ## 附录1:所有 API 列表 #### - 与 native 相关的 API ##### 以下为 base api,也就是对第三方开放的无限制的部分 1. qing.config 1. qing.checkApi #### - qing 中还包含了一些为了便于编码便利而存在的一些辅助性 api 1. qing.version,qing版本号 1. qing.isSupportNativeJsBridge,当前 webview 支持桥 1. qing.nativeJsBridgeVersion,当前客户端桥版本 1. qing.hasOwn,见 `Object.hasOwnProperty` 1. qing.isFunction,是否函数 1. qing.isString,是否字符串 1. qing.isNumber,是否数字 1. qing.isObject,是否对象 1. qing.isArray,是否数组 1. qing.forEach,见 `Array.prototype.forEach` 1. qing.keys,见`Object.keys` 1. qing.ns,把字符串转换为命名空间,`"a.b.c"` 1.> `{a:{b:{c:{}}}}` 1. qing.isWX,是否微信客户端 1. qing.isChrome,是否 chrome 1. qing.isFirefox,是否 firefox 1. qing.isOpera,是否 opera 1. qing.isSafari,是否 safari 1. qing.isIe,是否 IE 浏览器,这个用法稍微不一样,如 `qing.isIe() or qing.isIe(6)` 1. qing.isIphone,是否 iphone 1. qing.isIpad,是否 ipad 1. qing.isIpod,是否 ipod 1. qing.isIos,是否 ios 平台 1. qing.isAndroid,是否 Android 平台 1. qing.isAndroidPhone,是否 Android 手机 1. qing.isAndroidTable,是否 Android 平板 1. qing.isBlackberry,是否黑莓 1. qing.isMac,是否 mac 本 1. qing.isWindows,是否 win 系统 1. qing.isWindowsPhone,是否 win 手机 1. qing.isWindowsTable,是否 win 平板 1. qing.isMobile,是否手机 1. qing.isDesktop,是否 PC 机 1. qing.isTouchDevice,是否触屏设备 ## 附录2:全局返回码说明 > **注:** code类型为数字,非字符串。 | 返回码 | 说明 | | :-------- | :--------| | 100| 调用成功,并且有多次返回| | 200| 调用成功| | 404| 接口不存在| | 500| 全局调用失败code|