{"./":{"url":"./","title":"Introduction","keywords":"","body":"1. 千牛 Mobile SDK1.1. 版本列表1.1.1. 版本 2.x vs 1.x1.2. Getting start1.2.1. 介绍1.2.2. 以 NPM 依赖包形式使用1.2.3. 以 script 标签形式引入使用1.2.4. 调用 SDK 接口1. 千牛 Mobile SDK 服务于千牛、Lazada、阿里妈妈客户端应用开发的JSSDK。 1.1. 版本列表 最新版本：2.4.4 更多历史版本请查看：https://www.npmjs.com/package/QAP-SDK 1.1.1. 版本 2.x vs 1.x QN.ajax 新接口。支持方便快捷地进行异步请求。 QN.fetch 升级。不再支持 mode: jsonp 和 dataType 参数。 JSONP 接口请使用 QN.ajax。 QN.mtop 升级，详见文档。 QN.on QN.off QN.emit 接口升级，调用更简单。新增多个系统级事件。 QN.sso 升级，支持 forceReAuth。 QN.navigator 升级，支持页面降级时自动转换URL，新增 N 多系统图标。 如果你仍在使用 QAP-SDK 1.x，请参考：QAP-SDK 1.x 文档 1.2. Getting start 1.2.1. 介绍 由于 QAP-SDK 的跨三端特性，QAP-SDK 包发布时会同时发布 NPM 包 和 CDN 版本。其中 CDN 版本的根路径为：//g.alicdn.com/x-bridge/qap-sdk/{version}/。 在 NPM 包 和 CDN 版本中， 都会包含 2 个文件，如下： ├── qn.min.js └── qn.web.min.js 文件 说明 qn.min.js 包默认输出的文件，同时兼容 Weex/Web 环境 qn.web.min.js 专用于 Web 环境下的版本，体积比 qn.min.js 小，但接口、功能完全一样 1.2.2. 以 NPM 依赖包形式使用 这种方式在 Weex/Web 中均可以 安装 Install npm install QAP-SDK --save QN SDK 依赖于 Promise，对于不支持的环境，还需要安装并依赖 Promise polyfill： npm install es6-promise-polyfill --save; import QAP-SDK 在 Weex 环境中，通过以下方式 import QAP-SDK: import QN from 'QAP-SDK'; 在 Web 环境中，通过以下方式 import QAP-SDK: import QN from 'QAP-SDK/qn.web.min'; 1.2.3. 以 script 标签形式引入使用 1.2.4. 调用 SDK 接口 在 Weex/Web 环境中，QAP-SDK 接口调用的方式都完全一致。 // Promise 形式 QN.top.invoke({ query: { method: 'taobao.time.get', // TOP 接口名称 }, }).then(result => { console.log(result); }, error => { console.log(error); }); // 回调函数形式 QN.top.invoke({ query: { method: 'taobao.time.get', // TOP 接口名称 }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 更多接口调用文档请参考API文档。 "},"api/request/ajax.html":{"url":"api/request/ajax.html","title":"QN.ajax","keywords":"","body":"1. Ajax 请求1.1. API 调用1.1.1. QN.ajax(options)1. Ajax 请求 异步 HTTP 请求 1.1. API 调用 1.1.1. QN.ajax(options) API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 请求选项 options.url String 请求 URL 地址 options.type String 可选 text 响应的类型，可选值： json jsonp text options.method String 可选 GET 请求方式，可选值： GET POST options.contentType String 可选 application/x-www-form-urlencoded 请求的 Content-Type，指明客户端向服务端发送的数据类型。参考：HTTP Content-Type options.headers Object 可选 {} 请求头 options.data Object String 可选 null 请求携带的数据，必须是 JSON 对象或 query string options.timeout Number Boolean 可选 false 超时时间，单位：ms，为 false 时表示不考虑超时 options.crossOrigin Boolean 可选 false 请求是否跨域 options.withCredentials Boolean 可选 false 对于跨域请求是否携带 Cookie 信息 options.jsonpCallback String 可选 callback JSONP 请求的回调函数字段的 key，即服务端从此字段中取回调函数名，详细解释见下文 options.jsonpCallbackName String 可选 由程序自动生成 JSONP 请求的回调函数字段的 value，即回调函数名，详细解释见下文 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 jsonpCallback 和 jsonpCallbackName 当通过 JSONP 形式请求服务端获取数据时，客户端需要告知服务端返回数据时，哪个JS函数将处理这些数据。 例如，请求 http://qianniu.taobao.com/api/todo，jsonpCallback 的默认值为 callback，jsonpCallbackName 的值为随机生成 reqwest_1494403163219，则实际请求的 URL 是 http://qianniu.taobao.com/api/todo?callback=reqwest_1494403163219。 服务端返回结果如下： reqwest_1494403163219({ // 数据内容 }) 客户端通过预定义名称为 reqwest_1494403163219 的函数等待服务端返回结果，并传入该函数进行下一步的数据处理（回调开发者传入的 success 等）。 但是有时服务端实现的 JSONP 接口所接收的 JSONP 回调函数字段不是 callback，假设为 qianniu_callback，此时开发者在调用接口的时候，就可以传入 jsonpCallback 的值为 qianniu_callback 以进行正确请求。 jsonpCallbackName 一般由程序自动生成，确保 success 和 error 回调的正确执行，基本不需要修改。当然你也可以根据你自己的规则生成 jsonpCallbackName。 API 响应结果 参数名 类型 是否一定返回 含义 result * 请求响应 调用示例 // JSON 请求 QN.ajax({ url: 'http://qianniu.taobao.com/api/todo', type: 'json', method: 'POST', contentType: 'application/json', headers: { 'Accept': 'application/json', 'X-My-Custom-Header': 'SomethingImportant' }, data: {x: 3, y: 4}, crossOrigin: true, withCredentials: true, }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); // JSONP 请求 QN.ajax({ url: 'http://qianniu.taobao.com/api/todo', type: 'jsonp', data: {x: 3, y: 4}, jsonpCallback: 'foo', jsonpCallbackName: 'bar', }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); // 使用回调函数 QN.ajax({ url: 'http://qianniu.taobao.com/api/todo', type: 'jsonp', data: {x: 3, y: 4}, jsonpCallback: 'foo', jsonpCallbackName: 'bar', success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/request/fetch.html":{"url":"api/request/fetch.html","title":"QN.fetch","keywords":"","body":"1. Fetch 请求1.1. API 调用1.1.1. QN.fetch(input, init)1.2. 参考1. Fetch 请求 符合 W3C Fetch 规范的 Fetch 接口，用于异步 HTTP 请求。 1.1. API 调用 1.1.1. QN.fetch(input, init) 发起 fetch 请求 API 调用入参 参数名 类型 是否可选 默认值 含义 input Request String 请求的资源，具体值为 Request 实例或 URL 地址。更多参考 init Object 可选 请求初始化选项 init.method String 可选 GET 请求方式：GET POST init.headers Headers Object 可选 请求头。更多参考 init.body String 可选 请求体 init.mode String 可选 no-cors 请求模式：cors no-cors same-origin。 更多参考 init.credentials String 可选 omit 请求对认证信息（HTTP cookie、TLS 证书、身份验证信息）的处理，可选值为 omit same-origin include init.timeout Number Boolean 可选 false 超时时间，单位：ms，为 false 时表示不考虑超时 参数详解： init.body：请求体，在不同类型的页面环境中，支持程度不一（见下表），需开发者选择使用。 init.mode：请求模式，该字段仅在 Web 页面环境中有效。 cors：全称为 Cross-Origin Resource Sharing （跨域资源共享），通常用于跨域请求，如从第三方提供的 API 获取数据。该模式需要遵守 CORS 协议，服务端按照协议进行配置正确才能支持跨域请求。 no-cors：该模式也允许跨域请求，例如请求来着 CDN 的图片、脚本或者其他一些跨域资源。但是和 cors 不同的是，通过 no-cors 模式请求的资源，开发者可以使用它，但是不能读取或修改资源的内容。如：开发者能加载公共 CDN 的JS类库脚本并使用它，但是不能修改脚本的内容。这样确保了跨域资源的安全性。同时，该模式下请求的 method 只能是 HEAD、GET 或 POST。 same-origin：同源模式，该模式很简单，如果一个请求是跨域的，那么将返回一个 error，这样确保所有的请求遵守同源策略。所以该模式下，发起请求的域和请求的域必须相同才能请求成功。 init.credentials：请求对认证信息的处理，该字段仅在 Web 页面环境下有效。认证信息有：HTTP cookie、TLS 证书、身份验证信息。 omit：忽略认证信息。 same-origin：同源模式。发起请求的域和请求的域相同，该模式下会自动携带认证信息。 include：包含。当 mode 为 cors 时，请求默认是不携带认证信息的，如果服务端需要认证信息信息，则可以将这个字段设置为 include。另外，当此字段的值为 include 时，服务端响应头的 Access-Control-Allow-Origin 的值不能设置为 *，必须指定域名规则。否则请求会报错。 init.body Native 页面支持 Web 页面支持 备注 Blob 支持 File 支持 继承并扩展自 Blob ArrayBuffer 支持 属于 BufferSource ArrayBufferView 支持 属于 BufferSource FormData 支持 URLSearchParams 支持 String 支持 支持 API 响应结果 参数名 类型 是否一定返回 含义 response Response 响应对象 调用示例 // input 是 Request let request = new Request('http://qianniu.taobao.com/api/todo', { method: 'POST', headers: { 'Accept': 'application/json, application/javascript', 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'id=233&content=hello', mode: 'same-origin', }); QN.fetch(request) .then(response => { return response.json(); // => 返回一个 `Promise` 对象 }) .then(data => { console.log(data); // 真正地数据结果 }) .catch(error => { console.log(error); }); // input 是 URL String QN.fetch('http://qianniu.taobao.com/api/todo', { method: 'POST', headers: { 'Accept': 'application/json, application/javascript', 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'id=233&content=hello', mode: 'same-origin', }) .then(response => { return response.json(); // => 返回一个 `Promise` 对象 }) .then(data => { console.log(data); // 真正地数据结果 }) .catch(error => { console.log(error); }); 场景示例 如何让服务端正确解析请求 body 对于如 Spring 等常见的服务端 MVC 框架，会自动解析请求的数据，比如 query string 和 body。一般情况下，解析时框架会根据 HTTP 请求头中的 Content-Type 字段来判断 body 类型，再调用相应的类库。因此，请求时在请求头中设置正确的 Content-Type，帮助服务端正确解析请求数据： // body 的类型是 JSON QN.fetch('http://qianniu.taobao.com/api/todo', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ id: 233, content: 'hello', }), }); // body 的类型是 text QN.fetch('http://qianniu.taobao.com/api/todo', { method: 'POST', headers: { 'Content-Type': 'text/plain', }, body: 'Hello QAP', }); // body 的类型是 query string 的形式， Content-Type 可以省略 QN.fetch('http://qianniu.taobao.com/api/todo', { method: 'POST', headers: { }, body: 'id=233&content=hello', }); 请求 URL 添加 query string let queryString = QN.uri.toQueryString({ x: 1, y: 2, }); let body = QN.uri.toQueryString({ id: 233, content: 'hello', }); QN.fetch(`http://qianniu.taobao.com/api/todo?${queryString}`, { method: 'POST', body: body, }); 1.2. 参考 Fetch API 简介 Fetch API - Web API 接口 | MDN window.fetch - Web API 接口 | MDN Request - Web API 接口 | MDN Request() - Web API 接口 | MDN Response - Web API 接口 | MDN Response() - Web API 接口 | MDN Headers - Web API 接口 | MDN Headers() - Web API 接口 | MDN Body - Web API 接口 | MDN HTTP 访问控制（CORS） - HTTP | MDN Fetch 规范 Fetch documentation That's so fetch! "},"api/request/top.html":{"url":"api/request/top.html","title":"QN.top","keywords":"","body":"1. TOP 接口调用1.1. API 查询1.2. API 调用1.2.1. QN.top.invoke(options)1.2.2. QN.top.batch(options)1.3. 参考1. TOP 接口调用 TOP（Taobao Open Platform）接口是淘宝开放平台对外开放的 API 接口。 1.1. API 查询 淘宝开放平台 API 列表 1.2. API 调用 1.2.1. QN.top.invoke(options) 单个调用 TOP 接口 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.method String TOP 接口名称 options.timeout Number Boolean 可选 false 超时时间，单位：ms，为 false 时表示不考虑超时 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.error_response Object 可选 请求发生错误时的错误对象 调用示例 QN.top.invoke({ query: { method: 'taobao.user.seller.get', // TOP 接口名称 fields: 'nick,sex' // 除了`method`字段外，其他字段为请求的业务参数 } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.top.invoke({ query: { method: 'taobao.user.seller.get', // TOP 接口名称 fields: 'nick,sex' // 除了`method`字段外，其他字段为请求的业务参数 }, success(result) { console.log(result); }, error(error) { console.log(error); }, }); 1.2.2. QN.top.batch(options) 批量调用 TOP 接口 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Array 请求参数数组 options.query[].topOptions Object 请求参数 options.query[].topOptions.method String TOP 接口名称 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Array 响应对象 result[].error_response Object 可选 请求发生错误时的错误对象 调用示例 QN.top.batch({ query: [ { method: 'taobao.user.seller.get', // TOP 接口名称 fields: 'nick,sex' // 除了`method`字段外，其他字段为请求的业务参数 }, { method: 'taobao.time.get' } ] }).then(result => { console.log(result[0]); // `taobao.user.seller.get` 的返回结果 console.log(result[1]); // `taobao.time.get` 的返回结果 }, error => { console.log(error); }); QN.top.batch({ query: [ { method: 'taobao.user.seller.get', // TOP 接口名称 fields: 'nick,sex' // 除了`method`字段外，其他字段为请求的业务参数 }, { method: 'taobao.time.get' } ], success(result) { console.log(result[0]); // `taobao.user.seller.get` 的返回结果 console.log(result[1]); // `taobao.time.get` 的返回结果 }, error(error) { console.log(error); } }); 1.3. 参考 API批量调用简介 - 淘宝开放平台 "},"api/event/intro.html":{"url":"api/event/intro.html","title":"事件简介","keywords":"","body":"1. 事件简介1.1. 页面级事件1.2. 插件级事件1.3. 千牛系统级事件1. 事件简介 千牛客户端提供了多种事件机制，以方便开发者实现模块间通信、页面间通信、监听客户端变化等通信相关的需求。 1.1. 页面级事件 页面级事件，是指作用范围限定在当前页面范围内的事件。通常用于实现模块间通信。 如： // 模块 A QN.on('Page.hello', data => { console.log(data.msg); // 'I am mobule B' }); // 模块 B QN.emit('Page.hello', { msg: 'I am mobule B' }); 如示例中所展示，页面级事件的监听和触发，事件名称都必须以 Page. 作为前缀，来限定作用范围。 1.2. 插件级事件 插件级事件，是指作用范围限定在当前插件应用所有的页面范围内的事件。通常用于实现页面间通信。 如： // 页面 A QN.on('App.hello', data => { console.log(data.msg); // 'I am Page B' }); // 页面 B QN.emit('App.hello', { msg: 'I am Page B' }); 如示例中所展示，插件级事件的监听和触发，事件名称都必须以 App. 作为前缀，来限定作用范围。 1.3. 千牛系统级事件 千牛系统级事件，是指作为范围为整个千牛 App 的事件。用于监听客户端的变化以做出响应。 如： QN.on('Global.DidEnterBackground', data => { console.log('千牛应用进入了系统后台'); }); 如示例中所展示，千牛系统级事件的监听，事件名称都必须以 Global. 作为前缀。 另外，千牛系统级事件，只能监听，不能触发。 "},"api/event/on.html":{"url":"api/event/on.html","title":"QN.on","keywords":"","body":"1. QN.on(event, callback)1. QN.on(event, callback) 绑定、监听事件 API 调用入参 参数名 类型 是否可选 默认值 含义 event String 事件名称 callback Function 事件触发时的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码 result.msg String 错误信息 事件回调入参 参数名 类型 是否必须 含义 data * 可选 事件触发时传递的数据 调用示例 QN.on('Page.hello', (data) => { console.log(data); }); // 如果需要关注事件注册的结果是成功还是失败 QN.on('App.hello', (data) => { console.log(data); }) .then(result => { console.log('注册成功'); }) .catch(error => { console.log('注册失败'); }); "},"api/event/off.html":{"url":"api/event/off.html","title":"QN.off","keywords":"","body":"1. QN.off(event, callback)1. QN.off(event, callback) 解绑、注销事件 API 调用入参 参数名 类型 是否可选 默认值 含义 event String 事件名称 callback Function 可选 事件触发的回调函数。如果传值，则会注销事件回调队列中为 callback 的回调。如果不传值，则会注销对应事件所有回调函数。 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码 result.msg String 错误信息 调用示例 // 注销事件时传递对应的回调函数。此时只会注销该回调函数，其他的事件回调函数不受影响。 QN.off('Page.hello', (data) => { console.log(data); }); // 注销事件时不传递事件回调函数，此时会注销所有该事件下的回调函数。 QN.off('Page.hello'); // 如果需要关注注销事件的结果是成功还是失败 QN.off('App.hello', (data) => { console.log(data); }) .then(result => { console.log('注销成功'); }) .catch(error => { console.log('注销失败'); }); "},"api/event/emit.html":{"url":"api/event/emit.html","title":"QN.emit","keywords":"","body":"1. QN.emit(event, data, options)1. QN.emit(event, data, options) 触发事件 API 调用入参 参数名 类型 是否可选 默认值 版本支持 含义 event String 事件名称 data * 可选 触发事件时发送的数据，该参数会作为事件回调函数的第一个参数传入。 options Object 可选 选项 options.sticky Boolean 可选 iOS >= 6.0.0 Android >= 6.0.0 是否以粘性事件进行触发。当以粘性事件进行触发时，如果事件未注册，客户端会等到事件注册后才触发 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码 result.msg String 错误信息 调用示例 let data = {msg: 'msg from Page.hello'}; // 仅触发事件 QN.emit('Page.hello'); // 触发事件，并发送数据 QN.emit('Page.hello', data); // 触发粘性事件 QN.emit('Page.hello', {sticky: true}); // 触发粘性事件，并发送数据 QN.emit('Page.hello', data, {sticky: true}); // 触发事件，并希望得知触发是否成功 QN.emit('Page.hello') .then(result => { console.log('触发成功'); }) .catch(error => { console.log('触发失败'); }); "},"api/event/preset-events.html":{"url":"api/event/preset-events.html","title":"内置事件","keywords":"","body":"1. 内置事件1. 内置事件 为了便于开发者响应千牛应用、插件应用、页面的变化，千牛客户端提供了一系列内置事件。 事件名称 所属模块 含义 备注 Page.back 页面导航栏 返回按钮点击事件 Page.close 页面导航栏 关闭按钮点击事件 Page.reload 页面导航栏 刷新按钮点击事件 Page.WillAppear 页面 页面即将可见 Page.DidAppear 页面 页面已经可见 Page.WillDisappear 页面 页面即将不可见 可能的情况：被千牛的其他页面遮挡，如扫码；被其他应用遮挡，如拍照；用户按了Home千牛将被最小化。 Page.DidDisappear 页面 页面已经不可见 Global.LowMemory 千牛应用 千牛进入低内存状态 Global.DidBecomeActive 千牛应用 千牛应用进入前台，处于活跃状态 Global.DidEnterBackground 千牛应用 千牛应用进入后台 用户按了Home千牛被最小化后，会触发此事件 Global.KeyboardWillShow 系统键盘 键盘将要显示 Global.KeyboardDidShow 系统键盘 键盘已经显示 Global.KeyboardWillHide 系统键盘 键盘将要隐藏 Global.KeyboardDidHide 系统键盘 键盘已经隐藏 Global.KeyboardWillChangeFrame 系统键盘 键盘外框架大小将要变化更新 键盘的显示和隐藏都会影响键盘外框架大小变化，因此会同时触发此事件 Global.KeyboardDidChageFrame 系统键盘 键盘外框架大小已经变化更新 键盘的显示和隐藏都会影响键盘外框架大小变化，因此会同时触发此事件 "},"api/store/localstore.html":{"url":"api/store/localstore.html","title":"QN.localstore","keywords":"","body":"1. 本地存储1.1. API 调用1.1.1. QN.localstore.set(options) / QN.localstore.setSync(options)1.1.2. QN.localstore.get(options) / QN.localstore.getSync(options)1.1.3. QN.localstore.remove(options) / QN.localstore.removeSync(options)1.1.4. QN.localstore.clear(options) / QN.localstore.clearSync(options)1. 本地存储 本地的持久化存储，有效范围为整个插件。 1.1. API 调用 1.1.1. QN.localstore.set(options) / QN.localstore.setSync(options) 存储数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 需要存储的数据对象，key/value 的形式，支持多个 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用 QN.localstore.set({ query: { name: '张三', age: 18, data: {x: 1, y: 2}, } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.setSync({ query: { name: '张三', age: 18, data: {x: 1, y: 2}, } }); console.log(result); 1.1.2. QN.localstore.get(options) / QN.localstore.getSync(options) 查询数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.key String Array 存储的 key 或 以 key 组成的数组 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 获取到的数据，格式为 key value，如果某个 key 未取到值，则 data 中将不包含该 key 调用示例 // 异步调用，获取一个 key 的数据 QN.localstore.get({ query: { key: 'name' } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.getSync({ query: { key: 'name' } }); console.log(result); // 异步调用，获取多个 key 的数据 QN.localstore.get({ query: { key: ['name', 'age', 'data', 'job'] } }).then(result => { console.log(result); /** * // `job` 这个字段没有值，`data` 中将不包含 `job` 字段 * { * errorCode: 0, * errorMsg: '', * data: { * name: '张三', * age: '18', * data: {x: 1, y: 2}, * job: null // 如果存储中没有数据，则返回null * } * } */ }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.getSync({ query: { key: ['name', 'age', 'data', 'job'] } }); console.log(result); 1.1.3. QN.localstore.remove(options) / QN.localstore.removeSync(options) 删除数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.key String Array 存储的 key 或 以 key 组成的数组 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用，删除一个 key 的数据 QN.localstore.remove({ query: { key: 'name' } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.removeSync({ query: { key: 'name' } }); console.log(result); // 异步调用，删除多个 key 的数据 QN.localstore.remove({ query: { key: ['name', 'age', 'data', 'job'] } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.removeSync({ query: { key: ['name', 'age', 'data', 'job'] } }); console.log(result); 1.1.4. QN.localstore.clear(options) / QN.localstore.clearSync(options) 清除数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用 QN.localstore.clear() .then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.localstore.clearSync(); console.log(result); "},"api/store/sessionstore.html":{"url":"api/store/sessionstore.html","title":"QN.sessionstore","keywords":"","body":"1. 会话存储1.1. API 调用1.1.1. QN.sessionstore.set(options) / QN.sessionstore.setSync(options)1.1.2. QN.sessionstore.get(options) / QN.sessionstore.getSync(options)1.1.3. QN.sessionstore.remove(options) / QN.sessionstore.removeSync(options)1.1.4. QN.sessionstore.clear(options) / QN.sessionstore.clearSync(options)1. 会话存储 本地会话存储，关闭插件后删除。有效范围为整个插件。 1.1. API 调用 1.1.1. QN.sessionstore.set(options) / QN.sessionstore.setSync(options) 存储数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 需要存储的数据对象，key/value 的形式，支持多个 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用 QN.sessionstore.set({ query: { name: '张三', age: 18, data: {x: 1, y: 2}, } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.setSync({ query: { name: '张三', age: 18, data: {x: 1, y: 2}, } }); console.log(result); 1.1.2. QN.sessionstore.get(options) / QN.sessionstore.getSync(options) 查询数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.key String Array 存储的 key 或 以 key 组成的数组 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 获取到的数据，格式为 key value，如果某个 key 未取到值，则 data 中将不包含该 key 调用示例 // 异步调用，获取一个 key 的数据 QN.sessionstore.get({ query: { key: 'name' } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.getSync({ query: { key: 'name' } }); console.log(result); // 异步调用，获取多个 key 的数据 QN.sessionstore.get({ query: { key: ['name', 'age', 'data', 'job'] } }).then(result => { console.log(result); /** * // `job` 这个字段没有值，`data` 中将不包含 `job` 字段 * { * errorCode: 0, * errorMsg: '', * data: { * name: '张三', * age: '18', * data: {x: 1, y: 2}, * job: null // 如果存储中没有数据，则返回null * } * } */ }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.getSync({ query: { key: ['name', 'age', 'data', 'job'] } }); console.log(result); 1.1.3. QN.sessionstore.remove(options) / QN.sessionstore.removeSync(options) 删除数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.key String Array 存储的 key 或 以 key 组成的数组 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用，删除一个 key 的数据 QN.sessionstore.remove({ query: { key: 'name' } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.removeSync({ query: { key: 'name' } }); console.log(result); // 异步调用，删除多个 key 的数据 QN.sessionstore.remove({ query: { key: ['name', 'age', 'data', 'job'] } }).then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.removeSync({ query: { key: ['name', 'age', 'data', 'job'] } }); console.log(result); 1.1.4. QN.sessionstore.clear(options) / QN.sessionstore.clearSync(options) 清除数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 异步调用 QN.sessionstore.clear() .then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.sessionstore.clearSync(); console.log(result); "},"api/store/database.html":{"url":"api/store/database.html","title":"QN.database","keywords":"","body":"1. Database 存储1.1. API 调用1.1.1. QN.database.execSql(options)1.1.2. QN.database.batchSql(options)1.2. 更多参考1. Database 存储 基于 sqlite 3 实现的 数据库存储能力. 1.1. API 调用 1.1.1. QN.database.execSql(options) API 调用入参 执行单条 SQL 语句 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.sql String Array SQL 语句 或 SQL 语句和参数的组合数组 options.query.sql[0] String SQL 语句 options.query.sql[1] Array 执行 SQL 语句同时传入的参数 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 直接执行 SQL 语句 QN.database.execSql({ query: { sql: 'CREATE TABLE IF NOT EXISTS Employee(id integer PRIMARY KEY AUTOINCREMENT,name varchar,sex varchar,departmentId integer)', } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.database.execSql({ query: { sql: 'CREATE TABLE IF NOT EXISTS Employee(id integer PRIMARY KEY AUTOINCREMENT,name varchar,sex varchar,departmentId integer)', }, success(result) { console.log(result); }, error(error) { console.log(error); } }); // 执行 SQL 语句并传入参数，传入的数据会取代 SQL 语句中的 `?` QN.database.execSql({ query: { sql: ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['张三', '男', 10003]], } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.database.execSql({ query: { sql: ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['张三', '男', 10003]], }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.2. QN.database.batchSql(options) 批量执行 SQL 语句 API 调用入参 执行单条 SQL 语句 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.sql Array SQL 数组 options.query.sql[i] String QN.database.execSql 中 sql 的任一形式 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.database.batchSql({ query: { sql: [ ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['张三', '男', 10003]], ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['李四', '男', 10004]], ['DELETE FROM Employee WHERE sex = \"女\"'], ] } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.database.batchSql({ query: { sql: [ ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['张三', '男', 10003]], ['INSERT INTO Employee (name,sex,departmentId) VALUES (?,?,?)', ['李四', '男', 10004]], ['DELETE FROM Employee WHERE sex = \"女\"'], ] }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.2. 更多参考 SQLite 官网 SQLite 教程 | 菜鸟教程 "},"api/navigator/navigate.html":{"url":"api/navigator/navigate.html","title":"页面导航","keywords":"","body":"1. 页面导航1.1. API 调用1.1.1. QN.navigator.push(options) / QN.navigator.go(options)1.1.2. QN.navigator.pop(options) / QN.navigator.back(options)1.1.3. QN.navigator.popTo(options) / QN.navigator.backTo(options)1.1.4. QN.navigator.reload(options);1.1.5. QN.navigator.close(options);1.1.6. QN.navigator.setSwipeBack(options)1. 页面导航 页面导航用于控制页面的打开、返回、刷新、关闭等功能 1.1. API 调用 1.1.1. QN.navigator.push(options) / QN.navigator.go(options) 打开一个新页面。页面会在新窗口中被打开。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.url String 需要跳转的URL options.title Object 可选 新页面的 title options.query Object 可选 跳转到 URL 时要传递的 query 参数 options.settings Object 可选 设置项 options.settings.animate Boolean 可选 false 切换时是否启用动画效果 options.settings.clearTop Boolean 可选 false 新开页面后，是否关闭除了新页面之外的所有其他页面 options.settings.resolveURL Boolean 可选 true 在 H5 页面中 push 新页面的时候，是否自动解析 URL options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 options.settings.resolveURL 当在 H5 页面中 push 新页面时，如果 push 的是 qap:// 协议的页面，会自动根据 qap.json 中的 WebRootPath 字段将 url 解析成 http:// 对应的页面。如果你不希望进行自动解析，可以将 resolveURL 的值设置为 false。 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.push({ url: 'https://work.taobao.com', title: '新开页面标题~~', query: { x: 1, y: 2 }, settings: { animate: true, request: true, } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.push({ url: 'https://work.taobao.com', title: '新开页面标题~~', query: { x: 1, y: 2 }, settings: { animate: true, request: true, }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.2. QN.navigator.pop(options) / QN.navigator.back(options) 关闭页面。会将页面栈中最顶部的页面关闭 API 调用入参 参数名 类型 是否可选 默认值 版本支持 含义 options Object 可选 {} 选项 options Number 可选 1 iOS >= 6.0.2 Android >= 6.0.1 要关闭的页面数量 options.query Object 可选 接口调用参数 options.query.pages Number 可选 1 要关闭的页面数量 options.settings Object 可选 设置项 options.settings.animate Boolean 可选 切换时是否启用动画效果 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 关闭当前页面 QN.navigator.pop() .then(result => {console.log(result);}) .catch(error => {console.log(error);}) // 关闭3个页面 QN.navigator.pop(3) .then(result => {console.log(result);}) .catch(error => {console.log(error);}) // 传入设置项 QN.navigator.pop({ query: {pages: 3}, settings: {animate: true}, }).then(result => { console.log(result); }).catch(error => { console.log(error); }) // 回调函数形式 QN.navigator.pop({ query: {pages: 3}, settings: {animate: true}, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.3. QN.navigator.popTo(options) / QN.navigator.backTo(options) 后退页面到指定索引或URL的页面 API 调用入参 参数名 类型 是否可选 默认值 版本支持 含义 options Object 可选 {} 选项 options Number 可选 iOS >= 6.0.2 Android >= 6.0.1 要后退到第几个页面 options String 可选 iOS >= 6.0.2 Android >= 6.0.1 要后退到的页面URL options.query Object 可选 接口调用参数 options.query.index Number 可选 iOS >= 6.0.2 Android >= 6.0.1 要后退到第几个页面，从 0 开始，优先级高于 url options.query.url Number 可选 iOS >= 6.0.2 Android >= 6.0.1 要后退到的页面URL options.settings Object 可选 设置项 options.settings.animate Boolean 可选 切换时是否启用动画效果 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 popTo(url)： url的匹配只匹配到 path 部分，不会匹配 search 参数和 hash。\b 如果页面栈中包含多个url匹配的页面，则会后退到第一个匹配的页面。 如果 index 和 url 同时传递，则以 index 优先。 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 后退到第 1 个页面，假设页面栈为 [0, 1, 2, 3] QN.navigator.popTo(1) .then(result => {console.log(result);}) .catch(error => {console.log(error);}) // 后退到 url 为 `qap:///home.js` 的页面 QN.navigator.popTo('qap:///home.js') .then(result => {console.log(result);}) .catch(error => {console.log(error);}) // 传入设置项 QN.navigator.popTo({ query: {index: 1}, settings: {animate: true}, }).then(result => { console.log(result); }).catch(error => { console.log(error); }) QN.navigator.popTo({ query: {url: 'qap:///home.js'}, settings: {animate: true}, }).then(result => { console.log(result); }).catch(error => { console.log(error); }) // 回调函数形式 QN.navigator.popTo({ query: {index: 1}, settings: {animate: true}, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.4. QN.navigator.reload(options); 刷新当前页面 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 {} 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.reload(); QN.navigator.reload() .then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.reload({ success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.5. QN.navigator.close(options); 关闭插件应用 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.close(); QN.navigator.close() .then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.close({ success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.6. QN.navigator.setSwipeBack(options) 启用/禁用iOS下页面的左滑返回，页面加载时默认为启用。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 可选 接口调用参数 options.query.enable Boolean 可选 是否启用左滑返回 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 禁止左滑返回 QN.navigator.setSwipeBack({ query: {enable: false} }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.setSwipeBack({ query: {enable: false}, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/navigator/app-openwebsite.html":{"url":"api/navigator/app-openwebsite.html","title":"页面导航-打开网页","keywords":"","body":"1. 打开页面1.1. API 调用1.1.1. QN.app.invoke({api:'openWebsite', query})1. 打开页面 1.1. API 调用 1.1.1. QN.app.invoke({api:'openWebsite', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.msg_id string 可选 455452 如果有此参数，则自行用消息ID拼接消息地址，此参数优先URL参数 query.url string 可选 http://jdy.tmall.com/doc/caller 需要打开的URL query.pull_to_refresh number 可选 1 1代表支持下拉刷新，0或者不传代表不支持下拉刷新 API 响应结果 参数名 类型 示例 含义 result * 请求响应 调用示例 QN.app.invoke({ api:'openWebsite', query:{ msg_id : '455452' , url : 'http://jdy.tmall.com/doc/caller' , pull_to_refresh : 1 } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/navigator/app-openwindow.html":{"url":"api/navigator/app-openwindow.html","title":"页面导航-在新窗口打开网页","keywords":"","body":"1. 打开页面-在新窗口1.1. API 调用1.1.1. QN.app.invoke({api:'openWindow', query})1. 打开页面-在新窗口 1.1. API 调用 1.1.1. QN.app.invoke({api:'openWindow', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.url string 可选 http://www.taobao.com url API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.result item | | 此返回对象结构完全由接口实现者自定义,此处的对象结构只为生成文档使用，不具有参考价值 调用示例 QN.app.invoke({ api:'openWindow', query:{ url : 'http://www.taobao.com' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/navigator/events.html":{"url":"api/navigator/events.html","title":"导航事件","keywords":"","body":"1. 导航事件1. 导航事件 千牛客户端针对页面跳转提供了一系列的导航事件，开发者可以拦截这些事件，自定义导航的行为。 事件名称 含义 备注 Page.back 返回按钮点击事件 Page.close 关闭按钮点击事件 Page.reload 刷新按钮点击事件 QN.on('Page.back', function(data) { // 进行一些处理 doSomeStuff(); // 监听事件后，默认行为被拦截，因此要手动调用返回 QN.navigator.pop(); }); "},"api/navigator/customize.html":{"url":"api/navigator/customize.html","title":"导航定制","keywords":"","body":"1. 导航栏定制1.1. API 调用1.1.1. QN.navigator.setTitle(options)1.1.2. QN.navigator.addButton(options)1.1.3. QN.navigator.removeButton(options)1.1.4. QN.navigator.clearButtons(options)1.1.5. QN.navigator.addMenuItem(options)1.1.6. QN.navigator.removeMenuItem(options)1.1.7. QN.navigator.clearMenuItems(options)1. 导航栏定制 定制导航栏标题、按钮、菜单项等能力 1.1. API 调用 1.1.1. QN.navigator.setTitle(options) 自定义标题 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.title String 标题文案 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 文字标题 QN.navigator.setTitle({ query: { title: '我是标题' } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.setTitle({ query: { title: '我是标题' }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.2. QN.navigator.addButton(options) 添加导航栏自定义按钮 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.iconName String 可选 千牛客户端内置 icon 名称，内置 icon 列表参看本页附录 options.query.iconImg String 可选 图标图片，URL 或 Base64（暂不支持 URL） options.query.text String 可选 图标文本，如果 iconName 和 iconImg 都没有值，则展示文本 options.query.tapEvent String 按钮点击时触发的事件，该事件为 Page 级别事件，可以使用 QN.on 进行监听，注意 tapEvent 不要与其他事件重复 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 iconImg 示例： 类型 示例 备注 URL http://www.icon.com/share.png URL https://www.icon.com/share.png Base64 iVBORw0KGgoAAAANSUhEUgAAAgAAAA... API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.addButton({ query: { iconName: 'share', text: '分享', tapEvent: 'Page.share', // 或 `share` } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.addButton({ query: { iconName: 'share', text: '分享', tapEvent: 'Page.share', // 或 `share` }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.3. QN.navigator.removeButton(options) 移除导航栏自定义按钮 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.tapEvent String 需要移除的按钮对应的事件（由于按钮事件事件是唯一的，因此也作为移除按钮的标识） options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.removeButton({ query: { tapEvent: 'Page.share', // 或 `share` } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.removeButton({ query: { tapEvent: 'Page.share', // 或 `share` }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.4. QN.navigator.clearButtons(options) 清除导航栏自定义按钮 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.clearButtons(); QN.navigator.clearButtons() .then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.clearButtons({ success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.5. QN.navigator.addMenuItem(options) 添加导航栏菜单列表中自定义菜单项 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.iconName String 千牛客户端内置 icon 名称，内置 icon 列表参看本页附录 options.query.iconImg String 图标图片，URL 或 Base64（暂不支持 URL） options.query.text String 可选 图标文本，如果 iconName 和 iconImg 都没有值，则展示文本 options.query.tapEvent String 按钮点击时触发的事件，该事件为 Page 级别事件，可以使用 QN.on 进行监听，注意 tapEvent 不要与其他事件重复 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 iconImg 示例： 类型 示例 备注 URL http://www.icon.com/share.png URL https://www.icon.com/share.png Base64 iVBORw0KGgoAAAANSUhEUgAAAgAAAA... API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.addMenuItem({ query: { iconName: 'share', text: '分享', tapEvent: 'Page.share', // 或 `share` } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.addMenuItem({ query: { iconName: 'share', text: '分享', tapEvent: 'Page.share', // 或 `share` }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.6. QN.navigator.removeMenuItem(options) 移除导航栏菜单列表中自定义菜单项 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.tapEvent String 需要移除的按钮对应的事件（由于按钮事件事件是唯一的，因此也作为移除按钮的标识） options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.removeMenuItem({ query: { tapEvent: 'Page.share', // 或 `share` } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.removeMenuItem({ query: { tapEvent: 'Page.share', // 或 `share` }, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.7. QN.navigator.clearMenuItems(options) 清除导航栏菜单列表中自定义菜单项 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.navigator.clearMenuItems(); QN.navigator.clearMenuItems() .then(result => { console.log(result); }, error => { console.log(error); }); QN.navigator.clearMenuItems({ success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/prompt/toast.html":{"url":"api/prompt/toast.html","title":"QN.toast","keywords":"","body":"1. Toast 提示1.1. API 调用1.1.1. QN.toast(options)1. Toast 提示 1.1. API 调用 1.1.1. QN.toast(options) 展示 toast 提示 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 接口调用参数 options.query.text String toast 文本内容 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.toast({ query: { text: '给你甩个 toast ~~' } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.toast({ query: { text: '给你甩个 toast ~~' }, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/prompt/showLoading.html":{"url":"api/prompt/showLoading.html","title":"QN.showLoading","keywords":"","body":"1. 全局 Loading 提示1.1. API 调用1.1.1. QN.showLoading(options)1. 全局 Loading 提示 1.1. API 调用 1.1.1. QN.showLoading(options) 显示全局 Loading API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 可选 接口调用参数 options.query.text String 可选 需要同时显示的文本内容，最长支持9个字符 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.showLoading({ query: { text: '加载中 ~~' } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.showLoading({ query: { text: '加载中 ~~' }, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/prompt/hideLoading.html":{"url":"api/prompt/hideLoading.html","title":"QN.hideLoading","keywords":"","body":"1. 全局 Loading 提示1.1. API 调用1.1.1. QN.hideLoading(options)1. 全局 Loading 提示 1.1. API 调用 1.1.1. QN.hideLoading(options) 隐藏全局 Loading API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.hideLoading() .then(result => { console.log(result); }, error => { console.log(error); }); QN.hideLoading({ success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/multimedia/image.html":{"url":"api/multimedia/image.html","title":"QN.image","keywords":"","body":"1. Image 图片/照片1.1. API 调用1.1.1. QN.image.get(options)1.1.2. QN.image.preview(options)1. Image 图片/照片 1.1. API 调用 1.1.1. QN.image.get(options) 通过拍照、相册等方式获取图片 注意： 该接口获取的图片的原始数据，很可能超过2M，这时如果直接进行图片上传可能导致失败。这种情况下，可以调用 compressImage 通用协议接口对图片进行压缩后再上传。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.source String camera,gallery 获取图片的方式，camera（拍照） gallery（相册），如果未指定或指定两者则会提供界面给用户进行选择 options.query.limit Numner 不限制 最多允许选择的图片数量 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Array 获得的图片数据 result.data[].path String 图片本地路径 result.data[].localURL String 图片本地URL，可用于预览 调用示例 QN.image.get({ query: { source: 'gallery', limit: 9, } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.image.get({ query: { source: 'gallery', limit: 9, }, success(result) { console.log(result); }, error(error) { console.log(error); }, }); 1.1.2. QN.image.preview(options) API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.images Array 需要预览的图片URL列表 options.query.startIndex Number 0 从图片列表中哪一张开始预览 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.image.preview({ query: { images: [ 'https://gw.alicdn.com/tps/TB12TMIPXXXXXbyXpXXXXXXXXXX-750-400.jpg', 'https://gw.alicdn.com/tps/TB1kUcYPXXXXXa7XpXXXXXXXXXX-750-580.jpg', 'https://gw.alicdn.com/tps/TB1pn7NPXXXXXbpXFXXXXXXXXXX-750-511.jpg', 'https://gw.alicdn.com/tps/TB1C5kOPXXXXXbkXFXXXXXXXXXX-750-580.jpg', 'https://gw.alicdn.com/tps/TB1pn7NPXXXXXbpXFXXXXXXXXXX-750-511.jpg', ], startIndex: 0, } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.image.preview({ query: { images: [ 'https://gw.alicdn.com/tps/TB12TMIPXXXXXbyXpXXXXXXXXXX-750-400.jpg', 'https://gw.alicdn.com/tps/TB1kUcYPXXXXXa7XpXXXXXXXXXX-750-580.jpg', 'https://gw.alicdn.com/tps/TB1pn7NPXXXXXbpXFXXXXXXXXXX-750-511.jpg', 'https://gw.alicdn.com/tps/TB1C5kOPXXXXXbkXFXXXXXXXXXX-750-580.jpg', 'https://gw.alicdn.com/tps/TB1pn7NPXXXXXbpXFXXXXXXXXXX-750-511.jpg', ], startIndex: 0, }, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/multimedia/app-cropimage.html":{"url":"api/multimedia/app-cropimage.html","title":"裁剪图片","keywords":"","body":"1. 裁剪图片1.1. API 调用1.1.1. QN.app.invoke({api:'cropImage', query})1. 裁剪图片 1.1. API 调用 1.1.1. QN.app.invoke({api:'cropImage', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.type string 可选 dataurl 数据类型：dataurl(base64), fileurl(本地路径), remoteurl(服务器路径） query.data string 可选 http://aa.com/xxxx.png 当type为dataurl时，该字段为经过base64的图片数据 当type为fileurl时，该字段为图片的全路径 当type为remoteurl时，该字段为图片的网络URL query.clipWidth number 可选 200 最大宽度 query.clipHeight number 可选 100 最大高度 query.initWidth number 可选 500 裁剪框初始化宽度，单位：像素 query.initHeight number 可选 500 裁剪框初始化高度，单位：像素 query.fixedRatio enum 可选 fixedRatio 固定拉伸比例,可选值: fixedRatio：必须传initWidth和initHeight，按照初始化宽高拉伸; fixedSize： 必须传initWidth和initHeight（固定大小，不能拉伸） API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 图片二进制进行base64之后的字符串 调用示例 QN.app.invoke({ api:'cropImage', query:{ type : 'dataurl' , data : 'http://aa.com/xxxx.png' , clipWidth : 200 , clipHeight : 100 , initWidth : 500 , initHeight : 500 , fixedRatio : 'fixedRatio' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/multimedia/app-compressimage.html":{"url":"api/multimedia/app-compressimage.html","title":"压缩图片","keywords":"","body":"1. 压缩图片1.1. API 调用1.1.1. QN.app.invoke({api:'compressImage', query})1. 压缩图片 1.1. API 调用 1.1.1. QN.app.invoke({api:'compressImage', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.data string 可选 iVBORw0KGgoAAAANSUhE... 经过base64加密后的图片数据 query.maxWidth number 可选 100 压缩后的最大宽度 query.maxHeight number 可选 40 压缩后的最大高度 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 压缩后进行base64加密的图片数据 调用示例 QN.app.invoke({ api:'compressImage', query:{ data : 'iVBORw0KGgoAAAANSUhE...' , maxWidth : 100 , maxHeight : 40 } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/multimedia/app-imageedit.html":{"url":"api/multimedia/app-imageedit.html","title":"多图编辑","keywords":"","body":"1. 多图编辑1.1. API 调用1.1.1. QN.app.invoke({api:'imageEdit', query})1. 多图编辑 1.1. API 调用 1.1.1. QN.app.invoke({api:'imageEdit', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uris string 可选 string 多图片编辑 uris可以传入多个图片地址，逗号隔开。 1.本地图片：file://localpath=xx 2.文件流：stream://data=xx 3.云空间：cloud://spaceid=xx@&fileid=xx 4.网络文件：web://url=xx query.index number 可选 0 多图编辑时，用于指定从哪一张开始编辑。默认0，即第一张开始。 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 返回存储本地的地址数组，没有经过编辑的图片不返回 调用示例 QN.app.invoke({ api:'imageEdit', query:{ uris : 'string' , index : 0 } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/multimedia/audio.html":{"url":"api/multimedia/audio.html","title":"QN.audio","keywords":"","body":"1. Audio 音频/语音1.1. API 调用1.1.1. QN.audio.voiceToText(options)1. Audio 音频/语音 1.1. API 调用 1.1.1. QN.audio.voiceToText(options) 语音转文本 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.audio.voiceToText() .then(result => { console.log(result); }) "},"api/multimedia/app-openvideo.html":{"url":"api/multimedia/app-openvideo.html","title":"播放视频","keywords":"","body":"1. 播放视频1.1. API 调用1.1.1. QN.app.invoke({api:'openVideo', query})1. 播放视频 打开视频播放 1.1. API 调用 1.1.1. QN.app.invoke({api:'openVideo', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.biz_id string 可选 1234 用于拼接直播间url和请求视频源url query.landscape number 可选 1 是否横屏打开播放端，0：竖屏，1：横屏，默认竖屏 API 响应结果 参数名 类型 示例 含义 result * 请求响应 调用示例 QN.app.invoke({ api:'openVideo', query:{ biz_id : '1234' , landscape : 1 } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-getfileinfo.html":{"url":"api/file/app-getfileinfo.html","title":"获取文件信息","keywords":"","body":"1. 获取文件信息1.1. API 调用1.1.1. QN.app.invoke({api:'getFileInfo', query})1. 获取文件信息 1.1. API 调用 1.1.1. QN.app.invoke({api:'getFileInfo', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uris string 可选 cloud://spaceid=1001&fileid=9001,cloud://spaceid=1001&fileid=9002 uri格式：支持云空间文件和本地文件：cloud://spaceid=&fileid=&type=&shortlink=、 file://localpath=%@ 注意： 1. 所有的value（即上所指的*）都需要url code编码，另文件数据需要先进行base64编码，再进行urlcode编码 2. 文件流格式容量大小限定在5M以内 3. mimetype在i, ii情况下必传，iii和iv可选 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res object [] 数组 query.=== filename string 文件名称 query.=== extension string 文件类型 query.=== filesize number 文件大小 query.=== localpath string 对本地文件有效，表示在本地的路径 调用示例 QN.app.invoke({ api:'getFileInfo', query:{ uris : 'cloud://spaceid=1001&fileid=9001,cloud://spaceid=1001&fileid=9002' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-getfiledata.html":{"url":"api/file/app-getfiledata.html","title":"获取文件数据","keywords":"","body":"1. 获取文件数据1.1. API 调用1.1.1. QN.app.invoke({api:'getFileData', query})1. 获取文件数据 1.1. API 调用 1.1.1. QN.app.invoke({api:'getFileData', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uris string 可选 file://localpath=%2fUsers%2f2b%2fDesktop%2ftest.txt&mimetype=application%2fmsword,cloud://spaceid=1001&fileid=9001 uri格式 i. 文件路径：file://localpath=&mimetype= ii. 文件流：stream://data=&mimetype= iii. 云空间：cloud://spaceid=&fileid= iv. 网络文件：web://url= 注意： 1. 所有的value（即上所指的）都需要url code编码，另文件数据需要先进行base64编码，再进行urlcode编码 2. 文件流格式容量大小限定在5M以内 3. mimetype在i, ii情况下必传，iii和iv可选 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res object [] 每个元素是一个Key-Value JSON，keys如下： data: 文件二进制数据，已经Base64编码 mimetype: 文件mimetype 注意： 1. 如果入参是file://或者stream://，需要传入mimetype；如果是其他，则无需传如mimetype，模块内部将对网络文件进行解析得到mimetype 2. 成功获取所有文件数据才会返回有效数据 query.=== data string 文件流，Base64编码 query.=== mimetype string 文件流的mimetype，可根据此属性使用不同客户端打开文件 调用示例 QN.app.invoke({ api:'getFileData', query:{ uris : 'file://localpath=%2fUsers%2f2b%2fDesktop%2ftest.txt&mimetype=application%2fmsword,cloud://spaceid=1001&fileid=9001' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-uploadfilestocdn.html":{"url":"api/file/app-uploadfilestocdn.html","title":"上传到 CDN","keywords":"","body":"1. 上传文件到 CDN1.1. API 调用1.1.1. QN.app.invoke({api:'uploadFilesToCDN', query})1. 上传文件到 CDN 1.1. API 调用 1.1.1. QN.app.invoke({api:'uploadFilesToCDN', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.bizCode string 可选 string 业务参数,上传文件之前需要在media center申请一个bizcode以标识自己的业务点，方便对本业务的图片进行管理。如果需要申请biz code请联系 逐风，家麒 query.uri string 可选 file://localpath=%2fUsers%2f2b%2fDesktop%2ftest1.txt uri格式： 1. 文件路径：file://localpath=%@ 2. 文件流：stream://data=%@ 注意：在文件流的方式下, iOS上 uri需要增加mimetype参数后缀，stream://data=${data}&mimetype=image/png 并且${data}中的图片数据需要用javascript方法encodeURIComponentb编码 query.showLoading number 可选 0 0: 表示不显示loading 1: 表示显示loading 默认显示 query.ownerNick string 可选 c测试帐号161 文件owner API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.uri string 上传至cdn后的url query.errorCode string mtop错误码 query.errorMsg string mtop错误码描述 调用示例 QN.app.invoke({ api:'uploadFilesToCDN', query:{ bizCode : 'string' , uri : 'file://localpath=%2fUsers%2f2b%2fDesktop%2ftest1.txt' , showLoading : 0 , ownerNick : 'c测试帐号161' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-uploadfilestoperson.html":{"url":"api/file/app-uploadfilestoperson.html","title":"上传到云盘","keywords":"","body":"1. 上传文件到云盘1.1. API 调用1.1.1. QN.app.invoke({api:'uploadFilesToPerson', query})1. 上传文件到云盘 上传文件 1.1. API 调用 1.1.1. QN.app.invoke({api:'uploadFilesToPerson', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uris string 可选 file://localpath=%2fUsers%2f2b%2fDesktop%2ftest.txt,cloud://spaceid=1001&fileid=9001 uri格式： 1. 文件路径：file://localpath=%@ 2. 文件流：stream://data=%@ 3. 云空间：cloud://spaceid=%@&fileid=% 4. 网络文件：web://url=%@ 注意： 1. 所有的value（即上所指的%@）都需要url code编码，另文件数据需要先进行base64编码，再进行urlcode编码 2. 文件流格式容量大小限定在5M以内 query.targetDir string 可选 /dirA/dirB 上传后文件保存的目录 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string [] 每个元素都是表示云空间的uri，且所有文件上传成功才会返回有效数据 调用示例 QN.app.invoke({ api:'uploadFilesToPerson', query:{ uris : 'file://localpath=%2fUsers%2f2b%2fDesktop%2ftest.txt,cloud://spaceid=1001&fileid=9001' , targetDir : '/dirA/dirB' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-getfiledownloadurl.html":{"url":"api/file/app-getfiledownloadurl.html","title":"获取云盘文件下载地址","keywords":"","body":"1. 获取云盘文件下载地址1.1. API 调用1.1.1. QN.app.invoke({api:'getFileDownloadURL', query})1. 获取云盘文件下载地址 1.1. API 调用 1.1.1. QN.app.invoke({api:'getFileDownloadURL', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uri string 可选 cloud://spaceid=1001&fileid=9001&type=0 uri格式：只支持云空间：cloud://spaceid=&fileid=&type= 注意： 1. 所有的value（即上所指的）都需要url code编码，另文件数据需要先进行base64编码，再进行urlcode编码 2. 文件流格式容量大小限定在5M以内 3. mimetype在i, ii情况下必传，iii和iv可选 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 下载地址，注意：地址可能有时效性 调用示例 QN.app.invoke({ api:'getFileDownloadURL', query:{ uri : 'cloud://spaceid=1001&fileid=9001&type=0' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-addfolder.html":{"url":"api/file/app-addfolder.html","title":"添加云盘文件夹","keywords":"","body":"1. 添加云盘文件夹1.1. API 调用1.1.1. QN.app.invoke({api:'addFolder', query})1. 添加云盘文件夹 1.1. API 调用 1.1.1. QN.app.invoke({api:'addFolder', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.folderName string 可选 abc 文件夹名称 query.path string 可选 /subfoldername/ 上级目录路径 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.succeed bool | | 是否成功创建文件夹 调用示例 QN.app.invoke({ api:'addFolder', query:{ folderName : 'abc' , path : '/subfoldername/' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/file/app-savefile.html":{"url":"api/file/app-savefile.html","title":"保存文件","keywords":"","body":"1. 保存文件1.1. API 调用1.1.1. QN.app.invoke({api:'saveFile', query})1. 保存文件 1.1. API 调用 1.1.1. QN.app.invoke({api:'saveFile', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.uri string 可选 stream://data=234yuy345hj345345sdf base64图片文件流 query.postfix string 可选 png 文件后缀名 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.uri string | | 本地文件路径 query.localpath | string | | | 本地预览路径 调用示例 QN.app.invoke({ api:'saveFile', query:{ uri : 'stream://data=234yuy345hj345345sdf' , postfix : 'png' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/device/ua.html":{"url":"api/device/ua.html","title":"QN.ua","keywords":"","body":"1. userAgent 信息1.1. API 调用1.1.1. QN.ua1. userAgent 信息 1.1. API 调用 1.1.1. QN.ua String 容器的 userAgent 字符串 UA 示例 环境 UA 示例 iOS Web Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B466 AliApp(QN/6.0.0) QNIOS/201200@tbsellerworkbench_iphone_1.0.0 Android Web Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; ZP980 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 AliApp(QN/6.0.0) QNANDROID/700145@tbsellerworkbench_android_1.3.2 iOS Weex (iPhone; iOS 10.1.1) Weex/0.13.0 AliApp(QN/6.0.0) QNIOS/201200@tbsellerworkbench_iphone_1.0.0 Android Weex (Linux; Android 6.5.0; Nexus 9 Build/LRX21R) Weex/0.13.0 AliApp(QN/6.0.0) QNANDROID/700145@tbsellerworkbench_android_1.3.2 "},"api/device/app.html":{"url":"api/device/app.html","title":"QN.app","keywords":"","body":"千牛 App 信息 QN.app.name String 应用名称 返回值 含义 qianniu 千牛 taobao 淘宝 tmall 天猫 alipay 支付宝 1688 1688 wangxin 旺信 dingtalk 钉钉 LazadaSellerCenter Lazada卖家端 web 浏览器 QN.app.group String 应用所属的族系 返回值 含义 AliApp 阿里系 App Other 其他 QN.app.version Object 应用版本对象 QN.app.version.value String 千牛版本 QN.app.version.gt(version) 判断版本是否大于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 千牛App版本为 5.0 QN.app.version.gt(4); // => true QN.app.version.gt(6); // => false QN.app.version.gt('4.4.4'); // => true QN.app.version.gt('6.6.6'); // => false QN.app.version.gte(version) 判断版本是否大于或等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 千牛App版本为 5.0 QN.app.version.gte(4); // => true QN.app.version.gte(5); // => true QN.app.version.gte(6); // => false QN.app.version.gte('4.4.4'); // => true QN.app.version.gte('5.0.0'); // => true QN.app.version.gte('6.6.6'); // => false QN.app.version.eq(version) 判断版本是否等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 千牛App版本为 5.0 QN.app.version.eq(5); // => true QN.app.version.eq(6); // => false QN.app.version.eq('5.0.0'); // => true QN.app.version.eq('6.6.6'); // => false QN.app.version.lt(version) 判断版本是否小于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 千牛App版本为 5.0 QN.app.version.lt(4); // => false QN.app.version.lt(6); // => true QN.app.version.lt('4.4.4'); // => false QN.app.version.lt('6.6.6'); // => true QN.app.version.lte(version) 判断版本是否小于或等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 千牛App版本为 5.0 QN.app.version.lte(4); // => false QN.app.version.lte(5); // => true QN.app.version.lte(6); // => true QN.app.version.lte('4.4.4'); // => false QN.app.version.lte('5.0.0'); // => true QN.app.version.lte('6.6.6'); // => true "},"api/device/os.html":{"url":"api/device/os.html","title":"QN.os","keywords":"","body":"1. 系统信息1.1. API 调用1.1.1. QN.os.name1.1.2. QN.os.android1.1.3. QN.os.ios1.1.4. QN.os.version1.1.5. QN.os.version.value1.1.6. QN.os.version.gt(version)1.1.7. QN.os.version.gte(version)1.1.8. QN.os.version.eq(version)1.1.9. QN.os.version.lt(version)1.1.10. QN.os.version.lte(version)1. 系统信息 1.1. API 调用 1.1.1. QN.os.name String 系统名称 1.1.2. QN.os.android Boolean 是否为 Android 系统 1.1.3. QN.os.ios Boolean 是否为 iOS 系统 1.1.4. QN.os.version Object 系统版本对象 1.1.5. QN.os.version.value String 系统版本 1.1.6. QN.os.version.gt(version) 判断版本是否大于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 系统版本为 5.0 QN.os.version.gt(4); // => true QN.os.version.gt(6); // => false QN.os.version.gt('4.4.4'); // => true QN.os.version.gt('6.6.6'); // => false 1.1.7. QN.os.version.gte(version) 判断版本是否大于或等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 系统版本为 5.0 QN.os.version.gte(4); // => true QN.os.version.gte(5); // => true QN.os.version.gte(6); // => false QN.os.version.gte('4.4.4'); // => true QN.os.version.gte('5.0.0'); // => true QN.os.version.gte('6.6.6'); // => false 1.1.8. QN.os.version.eq(version) 判断版本是否等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 系统版本为 5.0 QN.os.version.eq(5); // => true QN.os.version.eq(6); // => false QN.os.version.eq('5.0.0'); // => true QN.os.version.eq('6.6.6'); // => false 1.1.9. QN.os.version.lt(version) 判断版本是否小于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 系统版本为 5.0 QN.os.version.lt(4); // => false QN.os.version.lt(6); // => true QN.os.version.lt('4.4.4'); // => false QN.os.version.lt('6.6.6'); // => true 1.1.10. QN.os.version.lte(version) 判断版本是否小于或等于某个版本 API 调用入参 参数名 类型 是否可选 默认值 含义 version Number String 需要对比的版本号 API 响应结果 参数名 类型 是否一定返回 含义 result Boolean true 为判断成立， false 为判断不成立 调用示例 // 假设 系统版本为 5.0 QN.os.version.lte(4); // => false QN.os.version.lte(5); // => true QN.os.version.lte(6); // => true QN.os.version.lte('4.4.4'); // => false QN.os.version.lte('5.0.0'); // => true QN.os.version.lte('6.6.6'); // => true "},"api/device/i18n.html":{"url":"api/device/i18n.html","title":"QN.i18n","keywords":"","body":"1. 国际化信息1.1. API 调用1.1.1. QN.i18n.getLocaleSync(options)1.2. 事件1. 国际化信息 1.1. API 调用 1.1.1. QN.i18n.getLocaleSync(options) 获取用户语种 客户端支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data.locale String 是 用户语种 如en_US zh_CN等等 调用示例 let result = QN.i18n.getLocaleSync(); console.log(result); /** * { * code: 'QAP_SUCCESS', * msg: '', * data: { * locale: 'en_US' * } * } */ 1.2. 事件 事件名称 含义 备注 Global.LocaleChange 用户的语种发生变更 "},"api/device/scan.html":{"url":"api/device/scan.html","title":"QN.scan","keywords":"","body":"1. 扫一扫1.1. API 调用1.1.1. QN.scan(options)1. 扫一扫 扫描二维码、条形码 1.1. API 调用 1.1.1. QN.scan(options) 扫一扫 API 调用入参 参数名 类型 是否可选 默认值 含义 options Function Object 选项 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data.type String 码类型：二维码 QR，条码 Bar，其他 OTHER result.data.data String 码内容 调用示例 QN.scan(result => { console.log(result); }); QN.scan() .then(result => { console.log(result); }, error => { console.log(error); }) QN.scan({ success(result) { console.log(result); }, error(error) { console.log(error); } }) .then(result => { console.log(result); }, error => { console.log(error); }) "},"api/device/clipboard.html":{"url":"api/device/clipboard.html","title":"QN.clipboard","keywords":"","body":"1. 剪贴板1.1. API 调用1.1.1. QN.clipboard.setText(text, callback) / QN.clipboard.setTextSync(text)1.1.2. QN.clipboard.getText(callback) / QN.clipboard.getTextSync()1. 剪贴板 1.1. API 调用 1.1.1. QN.clipboard.setText(text, callback) / QN.clipboard.setTextSync(text) 设置剪贴板文本数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options text Object String 选项 或 要存入剪贴板的文本 options.query Object 请求参数 options.query.text String 要存入剪贴板的文本 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 callback Function 可选 调用成功的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码 result.msg String 错误信息 调用示例 QN.clipboard.setText('文本内容'); // 异步调用 QN.clipboard.setText('文本内容', (result) => { console.log(result); }) // 同步调用 let result = QN.clipboard.setTextSync('文本内容'); console.log(result); QN.clipboard.setText('文本内容') .then((result) => { console.log(result); }, (error) => { console.log(error); }); // 入参为：options QN.clipboard.setText({ query: {text: '文本内容'}, success(result) { console.log(result); }, error(error) { console.log(error); } }); 1.1.2. QN.clipboard.getText(callback) / QN.clipboard.getTextSync() 获取剪贴板文本数据 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options callback Object Function 选项 或 调用成功的回调函数 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.data String 剪贴板数据内容 result.code String 错误码 result.msg String 错误信息 调用示例 // 异步调用 QN.clipboard.getText(result => { console.log(result); }); // 同步调用 let result = QN.clipboard.getTextSync(); console.log(result); QN.clipboard.getText() .then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.clipboard.getText({ success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/device/bluetooth.html":{"url":"api/device/bluetooth.html","title":"QN.bluetooth","keywords":"","body":"1. Bluetooth 蓝牙1.1. API 调用1.1.1. QN.bluetooth.open(options)1.1.2. QN.bluetooth.close(options)1.1.3. QN.bluetooth.getState(options)1.1.4. QN.bluetooth.startDiscovery(options)1.1.5. QN.bluetooth.stopDiscovery(options)1.1.6. QN.bluetooth.getDevices(options)1.1.7. QN.bluetooth.connect(options)1.1.8. QN.bluetooth.disconnect(options)1.1.9. QN.bluetooth.getServices(options)1.1.10. QN.bluetooth.getCharacteristics(options)1.1.11. QN.bluetooth.readCharacteristic(options)1.1.12. QN.bluetooth.writeCharacteristic(options)1.1.13. QN.bluetooth.setCharacteristicNotify(options)1.2. 事件1. Bluetooth 蓝牙 1.1. API 调用 1.1.1. QN.bluetooth.open(options) 打开蓝牙设备 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.open() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.2. QN.bluetooth.close(options) 关闭蓝牙设备 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.close() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.3. QN.bluetooth.getState(options) 获取蓝牙状态 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 响应数据 result.data.available Boolean 蓝牙是否可用 result.data.discovering Boolean 蓝牙是否在搜寻设备 调用示例 QN.bluetooth.getState() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.4. QN.bluetooth.startDiscovery(options) 开始搜寻周围的蓝牙设备 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.startDiscovery() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.5. QN.bluetooth.stopDiscovery(options) 停止搜寻周围的蓝牙设备 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.stopDiscovery() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.6. QN.bluetooth.getDevices(options) 获取已搜寻到的蓝牙设备。该接口只能获取到当前已搜寻到的蓝牙设备，每次调用，可能返回的结果会不一样。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 响应数据 result.data.devices Array 已搜寻到的蓝牙设备对象数据 result.data.devices[].uuid String 已搜寻到的蓝牙设备对象的唯一id result.data.devices[].name String 否 已搜寻到的蓝牙设备对象的名称，不一定所有的蓝牙设备都会有名称 调用示例 QN.bluetooth.getDevices() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.7. QN.bluetooth.connect(options) 连接蓝牙设备 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 调用参数 options.query.uuid String 要连接的蓝牙设备的唯一id API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.connect({ query: { uuid: '4AB701BD-5651-433B-B23E-3E4FE41C7B3F' } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.8. QN.bluetooth.disconnect(options) 断开与蓝牙设备的连接 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.disconnect() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.9. QN.bluetooth.getServices(options) 获取当前连接的蓝牙设备的 service （服务），该接口只能返回当前已经获取到的服务，每次调用，可能返回的结果会不一样。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 响应数据 result.data.services Array 蓝牙设备的服务对象数组 result.data.services[].uuid String 服务的唯一id result.data.services[].isPrimary Boolean 是否为主服务 调用示例 QN.bluetooth.getServices() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.10. QN.bluetooth.getCharacteristics(options) 获取当前连接的蓝牙设备的 characteristic （特征值），该接口只能返回当前已经获取到的特征值，每次调用，可能返回的结果会不一样。 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 响应数据 result.data.characteristics Array 蓝牙设备的服务对象数组 result.data.characteristics[].uuid String 特征值的唯一id result.data.characteristics[].readable Boolean 特征值是否可读 result.data.characteristics[].writeable Boolean 特征值是否可写 result.data.characteristics[].notifiable Boolean 特征值是否可以进行通知 调用示例 QN.bluetooth.getCharacteristics() .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.11. QN.bluetooth.readCharacteristic(options) 读取蓝牙设备指定特征的数据 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 调用参数 options.query.characteristic Object 特征值对象 options.query.characteristic.uuid String 特征值的唯一id API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 响应数据 result.data.value String 读取到的特征值数据 调用示例 QN.bluetooth.readCharacteristic({ query: { characteristic: { uuid: '2A29' } } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.12. QN.bluetooth.writeCharacteristic(options) 向蓝牙设备写入指定特征的数据 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 调用参数 options.query.characteristic Object 特征值对象 options.query.characteristic.uuid String 特征值的唯一id options.query.value String 向特征值写入的数据 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.writeCharacteristic({ query: { characteristic: { uuid: 'AF0BADB1-5B99-43CD-917A-A77BC549E3CC' } value: 'Hello bluetooth' } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.1.13. QN.bluetooth.setCharacteristicNotify(options) 向蓝牙设备写入指定特征的数据 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 调用参数 options.query.characteristic Object 特征值对象 options.query.characteristic.uuid String 特征值的唯一id options.query.enable Boolean 是否开启 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.bluetooth.setCharacteristicNotify({ query: { characteristic: { uuid: 'AF0BADB1-5B99-43CD-917A-A77BC549E3CC' }, enable: true, } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); 1.2. 事件 事件名称 含义 备注 Global.BluetoothStateChange 蓝牙设备状态发生变更 Global.BluetoothConnectionChange 蓝牙设备连接状态发生变更 App.BluetoothDevicesFound 搜寻蓝牙设备时，发现新的蓝牙设备 App.BluetoothCharacteristicFound 连接蓝牙设备后，发现新的特征值 App.BluetoothCharacteristicChange 蓝牙特征值对应的数据发生变化 需先调用 QN.bluetooth.setCharacteristicNotify 开启通知功能后，才会收到通知 "},"api/device/geolocation.html":{"url":"api/device/geolocation.html","title":"QN.geolocation","keywords":"","body":"1. Geolocation 地理位置1.1. API 调用1.1.1. QN.geolocation.getCurrentPosition(options)1. Geolocation 地理位置 1.1. API 调用 1.1.1. QN.geolocation.getCurrentPosition(options) 获取当前地理位置信息 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 可选 请求参数 options.query.enableHighAccuracy Boolean 可选 是否打开高精度 options.query.address Boolean 可选 是否获取地址信息 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 当前地理位置数据 result.data.coords Object 经纬度信息 result.data.coords.longitude Number 经度 result.data.coords.latitude Number 纬度 result.data.coords.altitude Number 海拔高度 result.data.coords.accuracy Number 精度 result.data.coords.bearing Number 设备当前移动的角度方向，相对于正北方向顺时针计算 result.data.coords.speed Number 以米每秒为单位的设备的当前对地速度 result.data.address Object 当前地址信息数据 result.data.address.province String 省 result.data.address.city String 市 result.data.address.district String 区 result.data.address.road String 路 result.data.address.cityCode String 城市代码 如 0571 result.data.address.addressLine String 详细地址 调用示例 QN.geolocation.getCurrentPosition({ query: { enableHighAccuracy: true, address: true, } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.geolocation.getCurrentPosition({ query: { enableHighAccuracy: true, address: true, }, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/device/network.html":{"url":"api/device/network.html","title":"QN.network","keywords":"","body":"1. Network 网络1.1. API 调用1.1.1. QN.network.getType(options)1. Network 网络 1.1. API 调用 1.1.1. QN.network.getType(options) 获取网络链接类型 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 可选 选项 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 网络连接类型数据 result.data.type String 网络连接类型 wifiWIFI网络、cellular蜂窝网络、other其他、none无连接 result.data.isOnline Boolean 网络是否连接 result.data.isWifi Boolean 网络连接是否为 WIFI result.data.is4G Boolean 网络连接是否为 4G result.data.is3G Boolean 网络连接是否为 3G result.data.is2G Boolean 网络连接是否为 2G result.data.isG Boolean 网络连接是否为 G，甚至可能更差 调用示例 QN.network.getType() .then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.network.getType({ success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/device/print.html":{"url":"api/device/print.html","title":"QN.print","keywords":"","body":"1. Print 打印1.1. API 调用1.1.1. QN.print(options)1. Print 打印 1.1. API 调用 1.1.1. QN.print(options) 打印文档或图片 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 调用参数 options.query.type String 文件类型：image html pdf options.query.dataType String 数据类型，即 options.query.data 的类型，可选：string base64 url localpath options.query.data String 文件的数据 各种数据类型的含义： string - 纯文本或字符串 base64 - 文件的base64数据 url - URL localpath - 本地路径 文件数据类型支持情况 文件类型 数据类型 image base64 url localpath html string url localpath pdf url localpath API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 // 打印图片 QN.print({ query: { type: 'image', dataType: 'base64', data: 'iVBORw0KGgoAAAANSUhEUgAAAgAAAA...', } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); QN.print({ query: { type: 'image', dataType: 'url', data: 'https://gw.alicdn.com/tps/TB12TMIPXXXXXbyXpXXXXXXXXXX-750-400.jpg', } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); // 打印 HTML QN.print({ query: { type: 'html', dataType: 'string', data: 'Hello PrintThis is html code for print.', } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); QN.print({ query: { type: 'html', dataType: 'url', data: 'https://h5.m.taobao.com/qn/pc/niuba-feeds.html#/detail/10402433?_k=by6n1l', } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); // 打印 PDF QN.print({ query: { type: 'pdf', dataType: 'localpath', data: '/path/to/foo.pdf', } }) .then(result => { console.log(result); }) .catch(error => { console.log(error); }); "},"api/device/app-screenshot.html":{"url":"api/device/app-screenshot.html","title":"截屏","keywords":"","body":"1. 截屏1.1. API 调用1.1.1. QN.app.invoke({api:'screenShot', query})1. 截屏 1.1. API 调用 1.1.1. QN.app.invoke({api:'screenShot', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 文件本地路径，路径utf-8编码 query.errorCode string 0：成功； 1：没有存储卡； 2：其它错误 query.errorMsg string 错误描述信息 调用示例 QN.app.invoke({ api:'screenShot', query:{ } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/device/app-contactpick.html":{"url":"api/device/app-contactpick.html","title":"选择联系人","keywords":"","body":"1. 选择联系人1.1. API 调用1.1.1. QN.app.invoke({api:'contactPick', query})1. 选择联系人 1.1. API 调用 1.1.1. QN.app.invoke({api:'contactPick', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.multiple string 可选 true/false 是否进行多选，默认为false API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.contacts object [] 联系人列表 query.=== name string 姓名 query.=== phoneNumber string [] 电话号码 query.=== email string [] email 调用示例 QN.app.invoke({ api:'contactPick', query:{ multiple : 'true/false' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/device/app-addcalendar.html":{"url":"api/device/app-addcalendar.html","title":"添加日程","keywords":"","body":"1. 添加日程1.1. API 调用1.1.1. QN.app.invoke({api:'addCalendar', query})1. 添加日程 1.1. API 调用 1.1.1. QN.app.invoke({api:'addCalendar', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.title string 可选 和老马开会 日程标题 query.startDate string 可选 2015-04-01 10:00:00 开始时间 query.endDate string 可选 2015-04-01 12:00:00 结束时间 query.location string 可选 5-2-10s 地点 query.alarmOffset number 可选 15 事件开始前多少分钟提醒 query.recurrenceTimes number 可选 3 循环次数，3的含义是：例如每周一提醒，连续提醒3周 query.frequency enum 可选 year/month/week/day 提醒频率，只能选择以上枚举型，分别代表每年提醒一次，每月提醒一次，以此类推 query.notes string 可选 http://www.taobao.com url连接地址 query.silent string 可选 true/false 是否静默添加，默认false API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.success bool | | 静默添加成功返回true,否则返回false。非静默添加永远返回true 调用示例 QN.app.invoke({ api:'addCalendar', query:{ title : '和老马开会' , startDate : '2015-04-01 10:00:00' , endDate : '2015-04-01 12:00:00' , location : '5-2-10s' , alarmOffset : 15 , recurrenceTimes : 3 , frequency : 'year/month/week/day' , notes : 'http://www.taobao.com' , silent : 'true/false' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/biz/sso.html":{"url":"api/biz/sso.html","title":"QN.sso","keywords":"","body":"1. 用户授权1.1. API 调用1.1.1. QN.sso(options)1. 用户授权 1.1. API 调用 1.1.1. QN.sso(options) 获取用户的授权信息 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 可选 请求参数 options.query.forceRefresh Boolean 可选 false 即将废弃，请使用 forceReAuth 参数 options.query.forceReAuth Boolean 可选 false 是否强制重新授权。 如果强制重新授权，会跳转到授权页面。 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data Object 授权信息 result.data.access_token String 标准的OAuth2 Access token result.data.usession_id String 用户会话id，可用于用户会话跟踪 result.data.start Number token创建时间，根据这个值和失效时长来计算当前是否失效 result.data.expires_in Number Access token过期时间 result.data.refresh_token String Refresh token，可用来刷新access_token result.data.re_expires_in Number Refresh token过期时间 result.data.r1_expires_in Number r1级别API或字段的访问过期时间； result.data.r2_expires_in Number r2级别API或字段的访问过期时间； result.data.w1_expires_in Number w1级别API或字段的访问过期时间； result.data.w2_expires_in Number w2级别API或字段的访问过期时间； result.data.taobao_user_nick String 淘宝账号 result.data.taobao_user_id String 淘宝帐号id result.data.sub_taobao_user_id String 淘宝子账号id result.data.sub_taobao_user_nick String 淘宝子账号 调用示例 QN.sso({ query: { forceRefresh: true } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.sso({ query: { forceRefresh: true }, success(result) { console.log(result); }, error(error) { console.log(error); } }); "},"api/biz/user.html":{"url":"api/biz/user.html","title":"QN.user","keywords":"","body":"1. 用户信息1.1. API 调用1.1.1. QN.user.getInfo(options) / QN.user.getInfoSync(options)1.1.2. QN.user.getAvatar(options)1. 用户信息 1.1. API 调用 1.1.1. QN.user.getInfo(options) / QN.user.getInfoSync(options) 获取用户信息 同步接口支持版本：iOS >= 6.3.0 Android >= 6.3.0 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 可选 接口调用参数 options.success Function 可选 调用成功的回调函数 options.error Function 可选 调用失败的回调函数 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 result.data.user_id String 是 用户的数字id result.data.user_nick String 是 用户用户名 result.data.sub_user_id String 如果登录账号为子账号，返回子账号的数字id，否则为空 result.data.sub_user_nick String 如果登录账号为子账号，返回子账号的用户名，否则为空 result.data.avatar String 用户头像 调用示例 // 异步调用 QN.user.getInfo() .then(result => { console.log(result); }, error => { console.log(error); }); // 同步调用 let result = QN.user.getInfoSync(); console.log(result); 1.1.2. QN.user.getAvatar(options) 获取用户头像图片 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object String Object时为调用选项，String时为userId options.userId String userId 用户id options.width Number 是 80 头像宽度，默认为80，最小为20，最大为800，必须是10的倍数，高度和宽度相等 注意：如果传入的宽度大于用户上传的原始头像的宽度，则实际能请求到的尺寸为原始头像的大小。 API 响应结果 参数名 类型 是否一定返回 含义 URL String 用户头像地址 调用示例 let avatarURL = QN.user.getAvatar('12345'); let avatarURL = QN.user.getAvatar({ userId: '12345', width: 40, // 获取40x40尺寸的头像 }); { console.log(result); }, error => { console.log(error); }); QN.user.setInfo({ query: { nick: '大明', avatar: '//img.alicdn.com/daming.png', }, success(result) { console.log(result); }, error(error) { console.log(error); } }); ``` --> "},"api/biz/app-pay.html":{"url":"api/biz/app-pay.html","title":"支付宝支付","keywords":"","body":"1. 支付宝支付1.1. API 调用1.1.1. QN.app.invoke({api:'pay', query})1. 支付宝支付 支付宝支付 1.1. API 调用 1.1.1. QN.app.invoke({api:'pay', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.orderString string 可选 uuid=\"3358a8dc‐bc96‐4917‐9bf8‐e79ab32591a3\"&user_id=\"2088102121323256\"&app_name=\"al i1688\"&partner=\"PARTNER_ALIBABA_CN\"&appenv=\"appid=2014012200002763^system=android^v ersion=5.9.0.0\"&biz_type=\"openservice\"&apiname=\"com.alipay.paypwd.validate\"&apiserv ice=\"com.1688.confirm.refund\"&tip=\"密码验证1688\"&sign=\"_kbp_os_i_wkk_h_u6_y_m_mam_sn y0_kwg_ea_f58f_jlr_o_eyv_v_o07_k_pj_h_gqh76lvrw%3D%3D\"&sign_date=\"2014‐09‐29 19:13: 06\"&sign_type=\"DSA\" 支付宝极简SDK唤起参数 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.resultStatus string ResultStatus query.result string result query.memo string memo 调用示例 QN.app.invoke({ api:'pay', query:{ orderString : 'uuid=\"3358a8dc‐bc96‐4917‐9bf8‐e79ab32591a3\"&user_id=\"2088102121323256\"&app_name=\"al i1688\"&partner=\"PARTNER_ALIBABA_CN\"&appenv=\"appid=2014012200002763^system=android^v ersion=5.9.0.0\"&biz_type=\"openservice\"&apiname=\"com.alipay.paypwd.validate\"&apiserv ice=\"com.1688.confirm.refund\"&tip=\"密码验证1688\"&sign=\"_kbp_os_i_wkk_h_u6_y_m_mam_sn y0_kwg_ea_f58f_jlr_o_eyv_v_o07_k_pj_h_gqh76lvrw%3D%3D\"&sign_date=\"2014‐09‐29 19:13: 06\"&sign_type=\"DSA\"' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/biz/share.html":{"url":"api/biz/share.html","title":"QN.share","keywords":"","body":"1. Share 社交分享1.1. API 调用1.1.1. QN.share(options)1. Share 社交分享 1.1. API 调用 1.1.1. QN.share(options) 社交分享 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.query Object 请求参数 options.query.title String 分享的标题，不一定会在分享后展示，需要对应的 App 支持。 options.query.content String 分享的内容，支持文本和链接。不一定会在分享后展示，需要对应的 App 支持。 options.query.image String 分享的附图。不一定会在分享后展示，需要对应的 App 支持。 options.query.href String 分享的关联URL，点击分享内容会跳转到此地址 options.query.platforms String 可选 分享到哪些渠道和平台， 以,分隔，支持：WECHAT（微信好友）, WEIXIN_CIRCLE（微信朋友圈）, SINA（新浪微博）, WANGWANG（旺旺好友）, QQ（QQ好友）, QZONE（QQ空间）, DINGTALK（钉钉）。如果不传，则展示以上所有平台供用户选择，其中微信朋友圈和QQ空间经常遭屏蔽，不建议分享。 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.share({ query: { title: '分享的标题', content: '分享的内容，含千牛链接：https://work.taobao.com', image: 'https://gw.alicdn.com/tps/TB1XnoEPXXXXXajXVXXXXXXXXXX-82-82.png', href: 'https://work.taobao.com', platforms: 'WECHAT,SINA,QQ', } }).then((result) => { console.log(result); }, (error) => { console.log(error); }); QN.share({ query: { title: '分享的标题', content: '分享的内容，含千牛链接：https://work.taobao.com', image: 'https://gw.alicdn.com/tps/TB1XnoEPXXXXXajXVXXXXXXXXXX-82-82.png', href: 'https://work.taobao.com', platforms: 'WECHAT,SINA,QQ', }, success(result) { console.log('分享成功', result); }, error(error) { console.log('分享失败', error); } }); "},"api/biz/app-openchat.html":{"url":"api/biz/app-openchat.html","title":"创建聊天会话","keywords":"","body":"1. 创建旺旺聊天会话1.1. API 调用1.1.1. QN.app.invoke({api:'openChat', query})1. 创建旺旺聊天会话 打开旺旺聊天窗 1.1. API 调用 1.1.1. QN.app.invoke({api:'openChat', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.nick string 可选 taobao商家测试账号 聊天的对象的nick，nick前请带上nick域, 所属域可选值为：cntaobao cnalichn enaliint cntaobao 是淘宝用户 cnalichn 是中文站用户 enaliint 是国际站用户 query.text string 可选 你好 打开聊天窗，同时携带输入框文本 query.shop_id string 可选 123 企业版的任务场景中，可以选择用shop_id对应的旺旺来跟对方聊天 API 响应结果 参数名 类型 示例 含义 result * 请求响应 调用示例 QN.app.invoke({ api:'openChat', query:{ nick : 'taobao商家测试账号' , text : '你好' , shop_id : '123' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/biz/app-changeprice.html":{"url":"api/biz/app-changeprice.html","title":"订单改价","keywords":"","body":"1. 订单改价1.1. API 调用1.1.1. QN.app.invoke({api:'changePrice', query})1. 订单改价 改价 1.1. API 调用 1.1.1. QN.app.invoke({api:'changePrice', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.tid string 可选 5273764 商品唯一编码 API 响应结果 参数名 类型 示例 含义 result * 请求响应 query.res string 操作结果 调用示例 QN.app.invoke({ api:'changePrice', query:{ tid : '5273764' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/biz/app-newrefunddetail.html":{"url":"api/biz/app-newrefunddetail.html","title":"订单退款详情","keywords":"","body":"1. 订单退款详情1.1. API 调用1.1.1. QN.app.invoke({api:'newRefundDetail', query})1. 订单退款详情 退款详情 1.1. API 调用 1.1.1. QN.app.invoke({api:'newRefundDetail', query}) API 调用入参 参数名 类型 是否可选 默认值 含义 query Object query.page string 可选 detail detail,page query.bizOrderId number 可选 1061196975454197 订单id query.refundId string 可选 12345 退款单号 API 响应结果 参数名 类型 示例 含义 result * 请求响应 调用示例 QN.app.invoke({ api:'newRefundDetail', query:{ page : 'detail' , bizOrderId : 1061196975454197 , refundId : '12345' } }).then(result => { console.log(result); }, error => { console.log(error); }); "},"api/biz/app.html":{"url":"api/biz/app.html","title":"QN.app.invoke","keywords":"","body":"1. 千牛业务能力接口1.1. API 查询1.2. API 调用1.2.1. QN.app.invoke(options)1. 千牛业务能力接口 千牛业务能力接口是千牛提供的与业务能力相关的一系列接口，又称通用协议接口。 1.1. API 查询 千牛 Mobile 端接口列表 1.2. API 调用 1.2.1. QN.app.invoke(options) 发起通用业务能力接口调用 API 调用入参 参数名 类型 是否可选 默认值 含义 options Object 选项 options.api String 通用协议接口名称 options.query Object 请求参数，具体查看每个通用协议接口所需的参数 API 响应结果 参数名 类型 是否一定返回 含义 result * 响应对象，具体查看每个通用协议接口返回的结果 调用示例 QN.app.invoke({ api: 'itemList', // 通用协议接口名称 query: { // 请求参数 itemStatus: 'onsale' } }).then(result => { console.log(result); }, error => { console.log(error); }); QN.app.invoke({ api: 'itemList', // 通用协议接口名称 query: { // 请求参数 itemStatus: 'onsale' }, success(result) { console.log(result); }, error(error) { console.log(error); }, }); "},"api/monitor/tracker.html":{"url":"api/monitor/tracker.html","title":"QN.tracker","keywords":"","body":"1. 用户日志追踪1.1. API 调用1.1.1. QN.tracker.log(text)1.1.2. QN.tracker.info(text)1.1.3. QN.tracker.warn(text)1.1.4. QN.tracker.error(text)1. 用户日志追踪 用户日志追踪模块 tracker，用于收集用户的错误日志和开发者输出的日志。 开发者可以通过调用以下接口，在应用代码中预埋日志代码，并且通过千牛控制台实现点对点的日志收集和上报，尽快帮助客户定位解决问题。 支持版本：iOS >= 6.3.0 Android >= 6.3.0 1.1. API 调用 1.1.1. QN.tracker.log(text) 上报普通日志 API 调用入参 参数名 类型 是否可选 默认值 含义 text String 日志内容 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.tracker.log('这是一个普通日志内容'); 1.1.2. QN.tracker.info(text) 上报“信息”级别的日志 API 调用入参 参数名 类型 是否可选 默认值 含义 text String 日志内容 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.tracker.info('这是一个普通日志内容'); 1.1.3. QN.tracker.warn(text) 上报“警告”级别的日志 API 调用入参 参数名 类型 是否可选 默认值 含义 text String 日志内容 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.tracker.warn('这是一个普通日志内容'); 1.1.4. QN.tracker.error(text) 上报“错误”级别的日志 API 调用入参 参数名 类型 是否可选 默认值 含义 text String 日志内容 API 响应结果 参数名 类型 是否一定返回 含义 result Object 响应对象 result.code String 错误码，成功为 QAP_SUCCESS；失败为其他 result.msg String 错误信息 调用示例 QN.tracker.error('这是一个普通日志内容'); "},"api/util/uri.html":{"url":"api/util/uri.html","title":"QN.uri","keywords":"","body":"1. URI 工具1.1. API 调用1.1.1. QN.uri.toQueryString(obj)1.1.2. QN.uri.parseQueryString(str)1.2. 参考1. URI 工具 1.1. API 调用 1.1.1. QN.uri.toQueryString(obj) 将数据对象转换成 query string。 API 调用入参 参数名 类型 是否可选 默认值 含义 obj Object 数据对象 返回 参数名 类型 是否可选 含义 queryString String query string 调用示例 QN.uri.toQueryString({ x: 1, y: 2, }); // => x=1&y=2 1.1.2. QN.uri.parseQueryString(str) 将 query string 转换成 数据对象。 API 调用入参 参数名 类型 是否可选 默认值 含义 queryString String query string 返回 参数名 类型 是否可选 含义 obj Object 数据对象 调用示例 QN.uri.parseQueryString('x=1&y=2'); // => { x: 1, y: 2} 1.2. 参考 ljharb/qs —— 一枚支持嵌套的 query string 解析库。 "},"migrate-to-qap-sdk.html":{"url":"migrate-to-qap-sdk.html","title":"从旧版 SDK 迁移到 QAP-SDK","keywords":"","body":" 旧接口 新接口 描述 备注 TOP.mobile.ConditionLatch 废弃 TOP.mobile.CountDownLatch 废弃 TOP.mobile.application.request QN.app.invoke 通用协议调用 TOP.mobile.application.response QN.app.response TOP.mobile.contacts.list QN.contacts.get TOP.mobile.contacts.myPhoneNum QN.contacts.get TOP.mobile.device.audio.AudioMIMEType.MPEG TOP.mobile.device.audio.AudioMIMEType.TEXT TOP.mobile.device.audio.getRecording TOP.mobile.device.audio.mimeType TOP.mobile.device.camera.PictureMIMEType.JPEG TOP.mobile.device.camera.PictureMIMEType.PNG TOP.mobile.device.camera.PictureReturnType.IMAGE TOP.mobile.device.camera.PictureReturnType.REF TOP.mobile.device.camera.PictureSourceType.CAMERA TOP.mobile.device.camera.PictureSourceType.PHOTO_ALBUM TOP.mobile.device.camera.getPicture QN.image.get TOP.mobile.device.camera.getPictureByKey QN.image.get TOP.mobile.device.camera.mimeType TOP.mobile.device.camera.resize TOP.mobile.device.camera.returnType TOP.mobile.device.camera.save TOP.mobile.device.camera.scan QN.scan TOP.mobile.device.camera.sourceType TOP.mobile.fire QN.emit TOP.mobile.fm.getIconBadgeNumber 通用协议 获取电台未读消息数 TOP.mobile.fm.info 通用协议 查询用户的电台订阅信息 TOP.mobile.fm.openSetting 通用协议 通用推广 TOP.mobile.fm.spread 通用协议 帮用户订阅电台 TOP.mobile.invoke 非正式 API TOP.mobile.item.detail 通用协议 TOP.mobile.item.list 通用协议 TOP.mobile.log.getLogger TOP.mobile.notification.error QN.toast TOP.mobile.notification.lockscreen QN.screen.lock TOP.mobile.notification.vibrate QN.vibrate TOP.mobile.notification.warn QN.toast TOP.mobile.ns 非正式 API TOP.mobile.off QN.event.off TOP.mobile.on QN.event.on TOP.mobile.security.listInstallation TOP.mobile.security.uninstall TOP.mobile.sys.InformationOption.NETWORK TOP.mobile.sys.InformationOption.QN_VERSION TOP.mobile.sys.InformationOption.SYS_NAME TOP.mobile.sys.InformationOption.SYS_VERSION TOP.mobile.sys.api QN.top.invoke QN.top.batch TOP.mobile.sys.information QN.network.getInfo QN.version QN.os TOP.mobile.sys.pasteboard QN.clipboard TOP.mobile.sys.scan QN.scan TOP.mobile.sys.sso QN.sso TOP.mobile.trade.detail 通用协议 TOP.mobile.trade.list 通用协议 TOP.mobile.ua.OS.android QN.os.android TOP.mobile.ua.OS.androidPad 废弃 TOP.mobile.ua.OS.androidPhone 废弃 TOP.mobile.ua.OS.androidVersion 废弃 TOP.mobile.ua.OS.blackberry 废弃 TOP.mobile.ua.OS.blackberryVersion 废弃 TOP.mobile.ua.OS.ios QN.os.ios TOP.mobile.ua.OS.ipad 废弃 TOP.mobile.ua.OS.ipadVersion 废弃 TOP.mobile.ua.OS.iphone 废弃 TOP.mobile.ua.OS.iphoneVersion 废弃 TOP.mobile.ua.OS.ipod 废弃 TOP.mobile.ua.OS.name QN.os.name TOP.mobile.ua.OS.palm 废弃 TOP.mobile.ua.OS.palmVersion 废弃 TOP.mobile.ua.OS.symbian 废弃 TOP.mobile.ua.OS.symbianVersion 废弃 TOP.mobile.ua.OS.version QN.os.version TOP.mobile.ua.OS.winPC 废弃 TOP.mobile.ua.OS.winPCVersion 废弃 TOP.mobile.ua.OS.winPhone 废弃 TOP.mobile.ua.OS.winPhoneVersion 废弃 TOP.mobile.ua.android QN.os.android TOP.mobile.ua.browser TOP.mobile.ua.ios QN.os.ios TOP.mobile.ua.ipad 废弃 TOP.mobile.ua.iphone 废弃 TOP.mobile.ua.isInAliApp TOP.mobile.ua.isInQianniu TOP.mobile.vpage QN.navigator TOP.mobile.vpage.canGoBack QN.navigator TOP.mobile.vpage.close QN.navigator.pop QN.navigator.back TOP.mobile.vpage.title QN.setTitle QN.showTitle QN.hideTitle TOP.mobile.widget.changePrice 通用协议 订单改价 TOP.mobile.widget.order 通用协议 插件订购 TOP.mobile.widget.pay QN.pay 支付 TOP.mobile.widget.payBySimpleSDK QN.pay 极简 SDK 支付 TOP.mobile.widget.refund 通用协议 订单退款 TOP.mobile.ww.chat 通用协议 openChat "},"faq.html":{"url":"faq.html","title":"常见问题","keywords":"","body":"1. 常见问题1.1. 为什么在千牛PC中使用 QAP-SDK 会报错？1. 常见问题 1.1. 为什么在千牛PC中使用 QAP-SDK 会报错？ 因为 QAP-SDK 目前是提供给千牛 Mobile 应用平台开发使用的 SDK，并不支持 PC 端的 应用开发体系。 PC 端应用的开发请使用：https://g.alicdn.com/sj/qn/jssdk.js，文档参考这里。 目前我们也正在对筹备开发新版的用于千牛 PC 应用开发的 QN-SDK，届时会有和 QAP-SDK 类似的接口和文档。 "}}