"use strict";

/**
 * <b>到点综合手机端jsbridge</b><br/>
 * `2.0.0` 之前的版本,继承自[dpapp-core](http://code.dianpingoa.com/f2ei/dpapp-core)部分可参考[README.md](http://code.dianpingoa.com/f2ei/dpapp-core/blob/master/README.md)<br/>
 * `2.0.0` 及其以后的版本继承自[KNB](http://knb.docs.sankuai.com/api/),主要是引用了其`interface` 和 `titans/bridge` 的核心方法,在这之上做了一些API的定制与扩展
 *
 * <b>接口参数说明</b><br/>
 * <dl>
 *     <dt>所有接口通过`DPZeus`对象调用,接口参数是一个对象,除每个接口本身需要传入的参数以外,还有以下通用参数:</dt>
 *     <dd>success: 接口调用成功后执行的回调函数</dd>
 *     <dd>fail: 接口调用失败执行的回调函数</dd>
 *     <dd>handle: 由用户或app触发的回调函数,比如用户点击导航中的按钮,下拉刷新后,监听事件触发时等</dd>
 * </dl>
 *
 * <b>回调参数说明</b><br/>
 * <dl>
 *     <dt>回调函数的值对象通常包括以下属性:</dt>
 *     <dd>result: 返回值</dd>
 *     <dd>errorMsg: 错误信息</dd>
 *     <dd>errorCode: 错误码</dd>
 *     <dd>status: 接口调用状态,一般为<success|fail></dd>
 *     <dd>然后每个特定的API包含自己的特有属性,在下面的文档中,放回值只列出API自有属性,共有的不再赘述了。</dd>
 * </dl>
 *
 * <b>使用方式</b><br/>
 * 安装依赖包:<br/>
 * ```
 * $ npm config set registry 'http://r.npm.sankuai.com/'
 * $ npm install @dp/dpzeus --save
 * ```
 * 在代码里引用:
 * ```
 * import DPZeus from '@dp/dpzeus'
 * DPZeus[api_name]({
 *  // params
 *  success: function(data){
 *      // do your staff
 *  },
 *  fail: function(error){
 *      // handle error
 *  }
 * });
 * ```
 *
 * 注意:在 `2.0.0` 版本及以后,为了防止冲突,API不再通过 `DPApp` 暴露,全部通过 `DPZeus` 提供全局调用
 *
 * 说明:在 2.0.0 升级之后,增加了很多新的API,如果要想使用这些新的API,可以升级到最新版本的 dpzeus,兼容之前版本的API,但是要注意全局调用对象的问题。
 * @module dpzeus
 * @extends @dp/knb
 * */
var apis = {
    /**
     * 基础api <br/>
     * <a href='#method_getPromiseInstance'>Promise编程</a>,
     * <a href='#method_ready'>ready</a>,
     * <a href='#method_config'>配置</a>,
     * <a href='#method_isApiSupported'>判断API可用性</a>,
     * <a href='#method_use'>非公共API使用</a>,
     * <a href='#method_isInstalledApp'>检测是否安装的app</a>,
     * <a href='#method_Semver'>版本对比</a>
     * @class 基础api
     */

    /**
     * 获得一个基于Promise封装的DPApp拷贝
     * 所有API的方法调用在这个Object下均被 Promise 化
     * <br><b style="color:red;">注:并未完全实现,慎用</b>
     * @method getPromiseInstance
     * @showfalse
     * @demo  get_promise_instance.html
     * @return {Object} 依据调用的API而决定
     */
    "getPromiseInstance": {
        "name": "getPromiseInstance",
        "moduleName": "",
        "methodName": "getPromiseInstance"
    },
    /**
     * 等待整个native就绪后执行回调里的逻辑
     * @method ready
     * @param callback {Function} 需要执行的回调方法
     * @return {Null}
     * @showfalse
     * @demo  ready.html
     * @return 没有回调值
     * */
    "ready": {
        "name": "ready",
        "moduleName": "",
        "methodName": "ready"
    },
    /**
     * 选择配置DPZeus
     * <br><b style="color:red;">注:前端静态配置方法,不与native交互</b>
     * @method config
     * @param opts {Object} 配置项
     * @showfalse
     * @demo config.html
     */
    "config": {
        "name": "config",
        "moduleName": "",
        "methodName": "config"
    },
    /**
     * 判断API可用性
     * @since 2.0.0
     * @method isApiSupported
     * @param opts {Object}
     * @param opts.apiName {String} 需要查看的API名称(仅methodName)
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo  is_api_supported.html
     * @return {Object} `Base`
     */
    "isApiSupported": {
        "name": "isApiSupported",
        "moduleName": "",
        "methodName": "isApiSupported"
    },
    /**
     * 检测是否安装的app
     * @method isInstalledApp
     * @param opts {Object}
     * @param opts.scheme {String} app scheme 供IOS使用
     * @param opts.package {String} app package 供安卓使用
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo is_installed_app.html
     * @return {Object} ```
     * {
     *  installed: <Boolean>
     * }```
     */
    "isInstalledApp": {
        "name": "isInstalledApp",
        "moduleName": "",
        "methodName": "isInstalledApp"
    },
    /**
     * 版本比对工具函数<br/>
     * <b>使用方式</b><br/>
     * DPZeus.Semver.gt(versionA,versionB); // 是否大于<br/>
     * DPZeus.Semver.gte(versionA,versionB); // 是否大于等于<br/>
     * DPZeus.Semver.lt(versionA,versionB); // 是否小于<br/>
     * DPZeus.Semver.lte(versionA,versionB); // 是否小于等于<br/>
     * DPZeus.Semver.eq(versionA,versionB); // 是否相同(严格全等)<br/>
     * @method Semver
     * @showfalse
     * @demo semver.html
     * @return {Boolean}
     */
    "Semver": {
        "name": "Semver",
        "moduleName": "",
        "methodName": "Semver",
    },
    /**
     * 自定义调用
     * <br/><b style="color:red;">注:KNB中的方法,在DPZeus中不打算实现<br/>
     * 详细说明请参见<a href="http://docs.sankuai.com/doc/knb/knb-doc/api/#api_3" target="_blank">非公共API使用</a>
     * </b>
     * @method use
     * @deprecated
     * @showfalse
     * @demo  use.html
     * @return {Object} 依据调用的API而决定
     */
    "use": {
        "name": "use",
        "moduleName": "",
        "methodName": "use"
    },
    /**
     * 获取信息相关接口<br/>
     * <a href='#method_getUserInfo'>获取用户信息</a>,
     * <a href='#method_getDeviceInfo'>获取手机端基本信息</a>,
     * <a href='#method_getNetworkType'>获取网络状态</a>,
     * <a href='#method_getWifiInfo'>获取wifi信息</a>,
     * <a href='#method_getLocation'>获取地理位置信息</a>,
     * <a href='#method_getAppInfo'>获取app相关信息</a>,
     * <a href='#method_getUA'>获取浏览器的代理信息</a>,
     * <a href='#method_getFingerprint'>获取风控信息</a>,
     * <a href='#method_getCX'>获取风控信息(阿波罗)</a>,
     * <a href='#method_getContactList'>获取联系人列表</a>,
     * <a href='#method_pickContact'>选择联系人</a>,
     * <a href='#method_getCity'>获取城市信息</a>,
     * <a href='#method_getCityId'>获取城市信息</a>,
     * <a href='#method_getLocationCity'>定位城市信息</a>,
     * <a href='#method_getCityInfo'>获取城市信息</a>,
     * <a href='#method_pickCity'>调取城市列表选取城市</a>,
     * <a href='#method_getVersion'>获取客户端版本号</a>,
     * <a href='#method_getRequestId'>获取requestId</a>,
     * <a href='#method_getEnv'>获取环境信息</a>,
     * @class 获取信息
     * */
    /**
     * 获取用户信息
     * @method getUserInfo
     * @param opt {Object}
     * @param opt.success {Function}
     * @showfalse
     * @demo  get_user_info.html
     * @return {Object} ```
     * {
     *  shopId: <Number>,
     *  userId: <String>,
     *  edper: <String>,
     *  shopAccountId: <Number>,
     *  userType: <String>,
     *  dpid: <String>
     * }```
     *`edper`属性只在点评管家中存在。
     * */
    "getUserInfo": {
        "name": "getUserInfo",
        "moduleName": "",
        "methodName": "getUserInfo"
    },
    /**
     * 获取手机端基本信息
     * @method getDeviceInfo
     * @since 0.3.0
     * @param opt {Object}
     * @param opt.success {Function}
     * @param opt.fail {Function}
     * @showfalse
     * @demo  get_device_info.html
     * @return {Object} ```
     * {
     *  mac: <String>, // mac地址
     *  imei: <String>, // IMEI号
     *  idfa: <String>
     * }
     * ```
     * */
    "getDeviceInfo": {
        "name": "getDeviceInfo",
        "moduleName": "",
        "methodName": "getDeviceInfo"
    },
    /**
     * 获取wifi信息
     * @method getWifiInfo
     * @since 0.3.0
     * @param opt {Object}
     * @param opt.success {Function}
     * @param opt.fail {Function}
     * @showfalse
     * @demo  get_wifi_info.html
     * @return {Object} ```
     * {
     *  mac: <String>,
     *  clientType: <String>,
     *  ssid: <String>,
     *  lng: <Number>,
     *  lat: <Number>
     * }
     * ```
     * */
    "getWifiInfo": {
        "name": "getWifiInfo",
        "moduleName": "",
        "methodName": "getWifiInfo"
    },
    /**
     * 获取网络状态
     * @method getNetworkType
     * @param opts {Object}
     * @param opts.success {Function}
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo  get_network_type.html
     * @return {Object} ```
     * {
     *  type: <String>
     * }
     * ```
     * */
    "getNetworkType": {
        "name": "getNetworkType",
        "moduleName": "",
        "methodName": "getNetworkType"
    },
    /**
     * 获取地理位置信息
     * @method getLocation
     * @param opts {Object}
     * @param opts.timeout {Number} 定位超时时间
     * @param opts.success {Function} 获取完毕执行的回调,回调方法中会传入获取到的经度和纬度信息
     * @param opts.fail {Function} 失败回调
     * @showfalse
    * @demo  get_location.html
     * @return {Object} ```
     * {
     *  lng: <Number>,
     *  lat: <Number>
     * }
     * ```
     * */
    "getLocation": {
        "name": "getLocation",
        "moduleName": "",
        "methodName": "getLocation"
    },
    /**
     * 获取app相关信息
     * @method getAppInfo
     * @since 0.4.6
     * @param opt {Object} 参数传递
     * @param opt.success {Function} 获取成功后执行的回调函数
     * @param opt.fail {Function} 获取失败后执行的回调函数
     * @showfalse
    * @demo  get_app_info.html
     * @return {Object} ```
     * {
     *  appVersion: <String>,
     *  appName: <String>,
     *  appScheme: <String>,
     *  bundleId: <String>
     * }
     * ```
     * */
    "getAppInfo": {
        "name": "getAppInfo",
        "moduleName": "",
        "methodName": "getAppInfo"
    },
    /**
     * 获取UA
     * @method getUA
     * @param opts {Object}
     * @param opts.success {Function} 成功的回调
     * @param opts.fail {Function} 失败的回调
     * @showfalse
    * @demo  get_ua.html
     * @return {Object} ```
     * {
     *  platform: <String>,
     *  appName: <String>,
     *  osName: <String>,
     *  osVersion: <String>,
     *  appVersion: <String>
     * }
     * ```
     */
    "getUA": {
        "name": "getUA",
        "moduleName": "",
        "methodName": "getUA"
    },
    /**
     * 获取风控信息
     * @since 2.0.0
     * @method getFingerprint
     * @param opts {Object}
     * @param opts.success 成功回调
     * @param opts.fail 失败回调
     * @showfalse
    * @demo  get_fingerprint.html
     * @return {Object} ```
     * {
     *  fingerprint: <String>
     * }
     * ```
     */
    "getFingerprint": {
        "name": "getFingerprint",
        "moduleName": "",
        "methodName": "getFingerprint"
    },
    /**
     * 获取风控信息(阿波罗)
     * @method getCX
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo get_cx.html
     * @return {Object}  `Base`
     */
    "getCX": {
        "name": "getCX",
        "moduleName": "",
        "methodName": "getCX"
    },
    /**
     * 获取联系人列表
     * @method getContactList
     * @param opts {Object}
     * @param opts.success {Function}
     * @showfalse
    * @demo  get_contact_list.html
     * @return {Object} ```
     * {
     *  contactList: <Array>,// {firstName: <String>, phone: <String>, lastName: <String>}
     *  authorized: <Boolean>,
     * }
     * ```
     * */
    "getContactList": {
        "name": "getContactList",
        "moduleName": "",
        "methodName": "getContactList"
    },
    /**
     * 选择联系人
     * @since 2.0.0
     * @method pickContact
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo pick_contact.html
     * @return {Object} ```
     * {
     *  name: <String>,
     *  phoneNumber: <String>,
     * }
     * ```
     */
    "pickContact": {
        "name": "pickContact",
        "moduleName": "",
        "methodName": "pickContact"
    },
    /**
     * 获取城市信息
     * @since 2.0.0
     * @method getCity
     * @param opt {Object}
     * @param opt.success {Function} 成功回调
     * @param opt.fail {Function} 失败回调
     * @showfalse
    * @demo  get_city.html
     * @return {Object} ```
     * {
     *  locCityName: <String>,
     *  locCity: <String>,
     *  cityName: <String>,
     * }
     * ```
     * */
    "getCity": {
        "name": "getCity",
        "moduleName": "",
        "methodName": "getCity"
    },
    /**
     * 获取城市信息
     * @method getCityId
     * @param opt {Object}
     * @param opt.success {Function}
     * @showfalse
    * @demo  get_city_id.html
     * @return {Object} ```
     * {
     *  locCityName: <String>,
     *  locCity: <String>,
     *  cityName: <String>,
     * }
     * ```
     * */
    "getCityId": {
        "name": "getCityId",
        "moduleName": "",
        "methodName": "getCityId"
    },
    /**
     * 定位城市信息
     * @since 2.0.0
     * @method getLocationCity
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @showfalse
    * @demo  get_location_city.html
     * @return {Object} ```
     * {
     *  locCityName: <String>,
     *  locCity: <String>,
     *  cityName: <String>,
     * }
     * ```
     */
    "getLocationCity": {
        "name": "getLocationCity",
        "moduleName": "",
        "methodName": "getLocationCity"
    },
    /**
     * 获取城市信息
     * @since 2.0.0
     * @method getCityInfo
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo get_city_info.html
     * @return {Object} ```
     * {
     *  locCityName: <String>,
     *  locCity: <String>,
     *  cityName: <String>,
     * }
     * ```
     */
    "getCityInfo": {
        "name": "getCityInfo",
        "moduleName": "",
        "methodName": "getCityInfo"
    },
    /**
     * 调取城市列表选取城市
     * <br><b style="color:red;">暂不实现</b>
     * @since 2.0.0
     * @method pickCity
     * @param opts {Object}
     * @param opts.type {Number} 选择城市列表类型 0为国内城市 1为国外城市 (可选)
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo pick_city.html
     * @return {Object} ```
     * {
     *  cityName: <String>,
     *  cityId: <String>
     * }
     * ```
     */
    "pickCity": {
        "name": "pickCity",
        "moduleName": "",
        "methodName": "pickCity"
    },
    /**
     * 获取客户端版本号
     * @method getVersion
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo get_version.html
     * @return {Object} ```
     * {
     *  version: <String>
     * }
     * ```
     */
    "getVersion": {
        "name": "getVersion",
        "moduleName": "",
        "methodName": "getVersion"
    },
    /**
     * 获取请求的id
     * @method getRequestId
     * @param opts {Object}
     * @param opts.success 成功回调
     * @param opts.fail 失败回调
     * @showfalse
     * @demo get_request_id.html
     * @return {Object} ```
     * {
     *  requestId: <String>
     * }
     * ```
     */
    "getRequestId": {
        "name": "getRequestId",
        "moduleName": "",
        "methodName": "getRequestId"
    },
    /**
     * 获取环境信息
     * @method getEnv
     * @param opts {Object}
     * @param opts.success 成功回调
     * @param opts.fail 失败回调
     * @showfalse
     * @demo get_env.html
     * @return {Null} TODO
     * ```
     */
    "getEnv": {
        "name": "getEnv",
        "moduleName": "",
        "methodName": "getEnv"
    },
    /**
     * 基础业务功能<br/>
     * <a href='#method_closeWindow'>关闭webview</a>,
     * <a href='#method_openScheme'>打开新的webview</a>,
     * <a href='#method_jumpToScheme'>关闭原窗口后打开新的webview</a>,
     * <a href='#method_openWebview'>打开webview(KNB)</a>,
     * <a href='#method_jumpWebview'>打开新的webview,并关闭原窗口(KNB)</a>,
     * <a href='#method_closeWebview'>关闭webview(KNB)</a>,
     * <a href='#method_ajax'>发送ajax请求</a>,
     * <a href='#method_logout'>退出用户登陆</a>,
     * <a href='#method_login'>用户登陆</a>,
     * <a href='#method_getPrintDevice'>查找打印机</a>,
     * <a href='#method_print'>打印</a>,
     * <a href='#method_'>检查交易</a>,
     * <a href='#method_share'>分享</a>,
     * <a href='#method_configShare'>右上角分享</a>,
     * <a href='#method_wixinCheck'>是否安装微信</a>,
     * <a href='#method_weixinBind'>绑定微信</a>,
     * <a href='#method_appBind'>绑定APP(KNB)</a>,
     * <a href='#method_setCalendersEvent'>设置系统日历事件</a>,
     * <a href='#method_deleteCalendersEvent'>删除日历事件</a>,
     * <a href='#method_queryCalendersEvent'>查询日历事件</a>,
     * <a href='#method_phoneCall'>拨打电话</a>,
     * <a href='#method_getWebViewCapture'>获取webview的截屏</a>,
     * @class 基础业务功能
     */
    /**
     * 关闭webview
     * @method closeWindow
     * @showfalse
     * @demo  close_window.html
     * @return {Null}
     * */
    "closeWindow": {
        "name": "closeWindow",
        "moduleName": "",
        "methodName": "closeWindow"
    },
    /**
     * 打开新的webview,extra参数会用于拼url,并做对value做encode
     * @method openScheme
     * @param opt {Object}
     * @param opt.url {String} 跳转链接
     * @param opt.extra {Object} 此部分的参数会作为url的query传递
     * @param opt.success {Function}
     * @showfalse
     * @demo  open_scheme.html
     * @return {Null}
     * */
    "openScheme": {
        "name": "openScheme",
        "moduleName": "",
        "methodName": "openScheme"
    },
    /**
     * 打开新的webview,并关闭原窗口。
     * @method jumpToScheme
     * @param opt {Object}
     * @param opt.url {String} 跳转链接
     * @param opt.extra {Object} 此部分的参数会作为url的query传递
     * @param opt.success {Function}
     * @showfalse
    * @demo  jump_to_scheme.html
     * @return {Null}
     * */
    "jumpToScheme": {
        "name": "jumpToScheme",
        "moduleName": "",
        "methodName": "jumpToScheme"
    },
    /**
     * 打开webview
     * @since 2.0.0
     * @method openWebview
     * @param opts {Object}
     * @param opts.url {String} 需要打开的完整http链接
     * @param opts.gs {Object}
     * @param opts.gs.notitlebar=1 {Number} 隐藏webview的导航栏功能
     * @showfalse
    * @demo  open_webview.html
     * @return {Null}
     */
    "openWebview": {
        "name": "openWebview",
        "moduleName": "",
        "methodName": "openWebview"
    },
    /**
     * 打开新的webview,并关闭原窗口
     * @since 2.0.0
     * @method jumpWebview
     * @param opts {Object}
     * @param opts.url {String} 需要打开的完整http链接
     * @param opts.gs {Object}
     * @param opts.gs.notitlebar=1 {Number} 隐藏webview的导航栏功能
     * @showfalse
    * @demo  jump_webview.html
     * @return {Null}
     */
    "jumpWebview": {
        "name": "jumpWebview",
        "moduleName": "",
        "methodName": "jumpWebview"
    },
    /**
     * 关闭webview
     * @since 2.0.0
     * @method closeWebview
     * @showfalse
    * @demo  close_webview.html
     * @return {Null}
     */
    "closeWebview": {
        "name": "closeWebview",
        "moduleName": "",
        "methodName": "closeWebview"
    },
    /**
     * 发送一个请求,获取服务器端的数据<br/>
     * <b style="color:red;">注意:阿波罗独有</b>
     * @method ajax
     * @param opts {Object}
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @param opts.data {Object} 传递给服务端的参数
     * @param opts.method {String} 请求方式 get|post
     * @showfalse
    * @demo  ajax.html
     * @return {Null}
     * */
    "ajax": {
        "name": "ajax",
        "moduleName": "",
        "methodName": "ajax"
    },
    /**
     * 退出用户登陆
     * @method logout
     * @showfalse
    * @demo  logout.html
     * @return {Null}
     * */
    "logout": {
        "name": "logout",
        "moduleName": "",
        "methodName": "logout"
    },
    /**
     * 登录
     * @method login
     * @param opts {Object}
     * @param opts.success {Function} 成功回调
     * @showfalse
    * @demo  login.html
     * @return {Null}
     */
    "login": {
        "name": "login",
        "moduleName": "",
        "methodName": "login"
    },
    /**
     * 查找打印机
     * @method getPrintDevice
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调,有返回值
     * @showfalse
    * @demo  get_print_device.html
     * @return {Object} ```
     * {
     *  deviceName: <String>
     * }
     * ```
     */
    "getPrintDevice": {
        "name": "getPrintDevice",
        "moduleName": "",
        "methodName": "getPrintDevice"
    },
    /**
     * 调用打印机 调用native发送广播,具体的打印方法由业务方实现。
     * @method print
     * @param opt {Object}
     * @param opt.content {Object} 和具体业务相关的数据结构
     * @param opt.action {String} 广播名称
     * @param opt.success {Function} 调用成功执行的回调,有返回值
     * @showfalse
    * @demo  print.html
     * @return {Null}
     * */
    "print": {
        "name": "print",
        "moduleName": "",
        "methodName": "print"
    },
    /**
     * 检查交易
     * @method checkDeal
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  check_deal.html
     * */
    "checkDeal": {
        "name": "checkDeal",
        "moduleName": "",
        "methodName": "checkDeal"
    },
    /**
     * 拨打电话
     * @since 1.1.5
     * @method phoneCall
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
     * @demo  phone_call.html
     * @return {Object} `Base`
     * */
    "phoneCall": {
        "name": "phoneCall",
        "moduleName": "",
        "methodName": "phoneCall"
    },
    /**
     * 获取webview的截屏<br/>
     * <b style="color:red;">注意:点评管家需要 `6.3.0` 及其以后的版本<br>
     * 阿波罗需要 `3.0.4.0` 及其以后的版本</b>
     * @since 2.0.0
     * @method getWebViewCapture
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @param opt.fail {Function} 调用失败执行的回调
     * @showfalse
     * @demo get_webview_capture.html
     * @return {Object} ```
     * {
     *  imagePath: <String>
     * }
     * ```
     */
    "getWebViewCapture": {
        "name": "getWebViewCapture",
        "moduleName": "",
        "methodName": "getWebViewCapture"
    },
    /**
     * 分享
     * @method share
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.title {String} 标题
     * @param opts.desc {String} 分享描述
     * @param opts.image {String} 分享图标
     * @param opts.url {String} 分享链接
     * @param opts.content {String} 分享内容
     * @param opts.extra {String} 附加字段,JSON 字符串
     * @param opts.channel {Array} 分享渠道,当分享渠道只有一个时,触发直接分享
     * 可选值有 WECHAT_FRIENDS(微信好友) | WECHAT_TIMELINE(微信朋友圈)| QQ(手机QQ)| SMS(短信)| WEIBO(新浪微博)| QZONE | EMAIL | COPY
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @showfalse
    * @demo  share.html
     * @return {Object} ```
     * {
     *  channel: <String>
     * }
     * ```
     * */
    "share": {
        "name": "share",
        "moduleName": "",
        "methodName": "share"
    },
    /**
     * 右上角分享
     * @since 2.0.0
     * @method configShare
     * @param opts {Object}
     * @param opts.title {String} 标题
     * @param opts.desc {String} 分享描述
     * @param opts.image {String} 分享图标
     * @param opts.url {String} 分享链接
     * @param opts.channel {Array} 分享渠道,当分享渠道只有一个时,触发直接分享
     * 可选值有 WECHAT_FRIENDS(微信好友) | WECHAT_TIMELINE(微信朋友圈)| QQ(手机QQ)| SMS(短信)| WEIBO(新浪微博)| QZONE | EMAIL | COPY
     * @param opts.success {Function} 成功回调
     * @showfalse
    * @demo  config_share.html
     * @return {Null}
     */
    "configShare": {
        "name": "configShare",
        "moduleName": "",
        "methodName": "configShare"
    },
    /**
     * 是否安装微信
     * <br/><b style="color:#ee5511;">已知问题:android 中据说自始至终没实现该接口,可以使用isInstalledApp代替<br/>
     * @method wixinCheck
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @showfalse
    * @demo  wixin_check.html
     * @return {Object} ```
     * {
     *  installed: <Boolean>
     * }
     * ```
     * */
    "wixinCheck": {
        "name": "wixinCheck",
        "moduleName": "",
        "methodName": "wixinCheck"
    },
    /**
     * 绑定微信
     * <br/><b style="color:#ee5511;">已知问题:android 中据说自始至终没实现该接口<br/>
     * IOS 中升级Titians也失效</b>
     * @method weixinBind
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.scope {String}
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @showfalse
    * @demo  weixin_bind.html
     * @return {Null}
     * */
    "weixinBind": {
        "name": "weixinBind",
        "moduleName": "",
        "methodName": "weixinBind"
    },
    /**
     * 绑定微博微信
     * <br/><b style="color:#ee5511;">已知问题:后续迭代实现</b><br/>
     * @since 2.0.0
     * @method appBind
     * @param opts {Object}
     * @param opts.url {String} bind url(选填)
     * @param opts.scope {String} 权限(选填)
     * @param opts.type {Number} 0为QQ、1为微信 (必填)
     * @param opts.appKey {String} App Key值 (选填)
     * @param opts.success {Function}
     * @param opts.fail {Function}
     * @showfalse
    * @demo  app_bind.html
     * @return {Null}
     */
    "appBind": {
        "name": "appBind",
        "moduleName": "",
        "methodName": "appBind"
    },
    /**
     * 设置系统日历事件
     * @method setCalendersEvent
     * @since 1.0.0
     * @param opts {Object}
     * @param opts.title {String} 事件标题
     * @param opts.description {String} 事件描述
     * @param opts.begintime {String} 开始时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.endtime {String} 结束时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.reminders {String} 提前多少事件提醒
     * @param opts.handle {Function} 事件回调
     * @showfalse
    * @demo  set_calenders_event.html
     * @return {Object} ```
     * {
     *  id: <Number>
     * }
     * ```
     * */
    "setCalendersEvent": {
        "name": "setCalendersEvent",
        "moduleName": "",
        "methodName": "setCalendersEvent"
    },
    /**
     * 删除日历事件
     * @since 1.0.0
     * @method deleteCalendersEvent
     * @param opts {Object}
     * @param opts.title {String} 事件标题
     * @param opts.begintime {String} 开始时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.endtime {String} 结束时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.handle {Function} 事件回调
     * @showfalse
    * @demo  delete_calenders_event.html
     * @return {Object} ```
     * {
     *  id: <Number>
     * }
     * ```
     */
    "deleteCalendersEvent": {
        "name": "deleteCalendersEvent",
        "moduleName": "",
        "methodName": "deleteCalendersEvent"
    },
    /**
     * 查询日历事件
     * @since 1.0.0
     * @method queryCalendersEvent
     * @param opts {Object}
     * @param opts.title {String} 事件标题
     * @param opts.begintime {String} 开始时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.endtime {String} 结束时间,格式为 yyyy-MM-dd HH:mm
     * @param opts.handle {Function} 事件回调
     * @showfalse
     * @demo  query_calenders_event.html
     * @return {Object} ```
     * {
     *  id: <Number>
     * }
     * ```
     */
    "queryCalendersEvent": {
        "name": "queryCalendersEvent",
        "moduleName": "",
        "methodName": "queryCalendersEvent"
    },

    /**
     * 界面设置<br/>
     * <a href='#method_setTitle'>设置标题</a>,
     * <a href='#method_setBackgroundColor'>设置webview背景色</a>,
     * <a href='#method_setBadge'>设置Badge</a>,
     * <a href='#method_selectTab'>切换tab</a>,
     * <a href='#method_setTitleRedDot'>设置tab标题红点</a>,
     * <a href='#method_scanQRCode'>扫描二维码</a>,
     * <a href='#method_getReplyLayout'>回复弹出框</a>,
     * <a href='#method_actionSheet'>弹出actionSheet</a>,
     * <a href='#method_enableSlideBack'>设置iOS左滑后退</a>,
     * <a href='#method_setNavigationBarHidden'>隐藏(显示)titlebar</a>,
     * <a href='#method_setSegments'>设置Segments</a>,
     * <a href='#method_menutitle'>设置menutitle</a>,
     * <a href='#method_date'>调用datepicker</a>,
     * <a href='#method_setPullDown'>下拉页面刷新</a>,
     * <a href='#method_stopPullDown'>停止下拉刷新</a>,
     * <a href='#method_setNavButtons'>设置导航栏按钮</a>,
     * <a href='#method_setRRButton'>设置最右按钮</a>,
     * <a href='#method_setRLButton'>设置右左按钮</a>,
     * <a href='#method_setLRButton'>设置左右按钮</a>,
     * <a href='#method_setLLButton'>设置最左按钮</a>,
     * <a href='#method_setStatusBarStyle'>设置webview状态栏样式(仅iOS)</a>,
     * <a href='#method_setBouncesEnabled'>设置webview反弹(仅iOS)</a>,
     * @class 界面设置
     */
    /**
     * 设置标题
     * @since 2.0.0 添加handle处理标题点击回调事件
     * @method setTitle
     * @param opts {Object}
     * @param opts.title {String} 标题
     * @param opt.subtitle {String} 副标题
     * @param opt.handle {Function} 点击事件回调
     * @param opt.success {Function} 成功回调
     * @param opt.fail {Function} 失败回调
     * @showfalse
    * @demo  set_title.html
     * @return {Null}
     * */
    "setTitle": {
        "name": "setTitle",
        "moduleName": "",
        "methodName": "setTitle"
    },
    /**
     * 导航栏按钮
     * @since 2.0.0
     * @method setNavButtons
     * @param opts {Array}
     * @param opts.item {Object}
     * @param opts.item.position {String} 按钮位置,可选值有 RR、RL、LR、LL
     * @param opts.item.type='text' {String} 按钮类型:base64/text
     * @param opts.item.text {String} 按钮文案,只有在type=text生效
     * @param opts.item.handle {Function} 点击按钮后触发的回调
     * @param opts.item.position {String} 按钮位置
     * @showfalse
    * @demo  set_nav_buttons.html
     * @return {Null}
     */
    "setNavButtons": {
        "name": "setNavButtons",
        "moduleName": "",
        "methodName": "setNavButtons"
    },
    /**
     * 设置最左边按钮(icon或文字)<br/>
     * <b style="color:red;">注意:base64代码的data:image/png;base64,部分不需要 base64的图片大小控制为 尺寸44X44(icon本身22X22)的三倍图,即132X132的画布,66X66的icon大小</b>
     * @method setLLButton
     * @param opts {Object}
     * @param opts.type {String} base64,text
     * @param opts.icon {String} base64的icon
     * @param opts.text {String} btn的文案
     * @param opts.success {Function}
     * @param opts.handle {Function}
     * @showfalse
     * @demo  set_llbutton.html
     * @return {Object} `Base`
     * */
    "setLLButton": {
        "name": "setLLButton",
        "moduleName": "",
        "methodName": "setLLButton"
    },
    /**
     * 设置左右按钮(icon或文字) <br/>
     * <b style="color:red;">注意:
     * 1. 该按钮必须在setLLButton设置了后才会展现 <br/>
     * 2. base64代码的data:image/png;base64,部分不需要 base64的图片大小控制为 尺寸44X44(icon本身22X22)的三倍图,即132X132的画布,66X66的icon大小</b>
     * @method setLRButton
     * @param opts {Object}
     * @param opts.type {String} 类型
     * @param opts.icon {String} 和native对应的图片名称 例如:’H5_Search‘
     * @param opts.text {String} btn的文案
     * @param opts.success {Function}
     * @param opts.handle {Function}
     * @showfalse
     * @demo  set_lrbutton.html
     * @return {Object} `Base`
     * */
    "setLRButton": {
        "name": "setLRButton",
        "moduleName": "",
        "methodName": "setLRButton"
    },
    /**
     * 设置右左按钮(icon或文字) <br/>
     * <b style="color:red;">注意: 1. 这个按钮必须在setRRButton设置了后才会展现<br/>
     * 2. base64代码的data:image/png;base64,部分不需要 base64的图片大小控制为 尺寸44X44(icon本身22X22)的三倍图,即132X132的画布,66X66的icon大小</b>
     * @method setRLButton
     * @param opts {Object}
     * @param opts.type {String} 类型
     * @param opts.icon {String} 和native对应的图片名称 例如:’H5_Search‘
     * @param opts.text {String} btn的文案
     * @param opts.success {Function}
     * @param opts.handle {Function}
     * @showfalse
    * @demo  set_rlbutton.html
     * @return {Object} `Base`
     * */
    "setRLButton": {
        "name": "setRLButton",
        "moduleName": "",
        "methodName": "setRLButton"
    },
    /**
     * 设置最右按钮(icon或文字) <br/>
     * <b style="color:red;">注意:base64代码的data:image/png;base64,部分不需要 base64的图片大小控制为 尺寸44X44(icon本身22X22)的三倍图,即132X132的画布,66X66的icon大小</b>
     * @method setRRButton
     * @param opts {Object}
     * @param opts.type {String} base64,类型
     * @param opts.icon {String} base64的icon
     * @param opts.text {String} btn的文案
     * @param opts.success {Function}
     * @param opts.handle {Function}
     * @showfalse
    * @demo  set_rrbutton.html
     * @return {Object} `Base`
     * */
    "setRRButton": {
        "name": "setRRButton",
        "moduleName": "",
        "methodName": "setRRButton"
    },
    /**
     * 设置webview背景色
     * <br/><b style="color:#ee5511;">已知问题:在IOS下设置没有效果,正在修复中</b>
     * @method setBackgroundColor
     * @param opts {Object}
     * @param opts.color {String} 颜色值
     * @param opts.success {Function}
     * @showfalse
    * @demo  set_background_color.html
     * @return {Object} `Base`
     * */
    "setBackgroundColor": {
        "name": "setBackgroundColor",
        "moduleName": "",
        "methodName": "setBackgroundColor"
    },
    /**
     * 设置Badge
     * @method setBadge
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  set_badge.html
     * @return {Object} `Base`
     * */
    "setBadge": {
        "name": "setBadge",
        "moduleName": "",
        "methodName": "setBadge"
    },
    /**
     * 设置menutitle
     * @method menutitle
     * @since 0.4.1
     * @param opts {Object}
     * @param opts.selectedTitle {String}  选中的标题
     * @param opts.list {Array}  list:[{ title:'标题',index:1 },{title:'标题2',index:2}],
     * @param opts.success {Function} 成功后的回调方法
     * @return {Object} ```
     * {
     *  index: <String>
     * }
     * ```
     * @showfalse
    * @demo  menutitle.html
     * */
    "menutitle": {
        "name": "menutitle",
        "moduleName": "",
        "methodName": "menutitle"
    },
    /**
     * 设置Segments
     * @method setSegments
     * @since 0.4.1
     * @param opts {Object}
     * @param opts.segments {Array}   [{"segment":"part1","index":1}, {"segment":"part2","index":2}]
     * @param opts.success {Function} 成功后的回调方法
     * @return {Object} ```
     * {
     *  index: <String>
     * }
     * ````
     * @showfalse
    * @demo  set_segments.html
     * */
    "setSegments": {
        "name": "setSegments",
        "moduleName": "",
        "methodName": "setSegments"
    },
    /**
     * 设置tab标题红点
     * @method setTitleRedDot
     * @param opt {Object}
     * @param opt.index {Number} 按照次序
     * @param opt.type {Number} 0不展示 1纯红点 2text
     * @param opt.context {String} 显示内容 内容较长会变成椭圆
     * @showfalse
    * @demo  set_title_red_dot.html
     * @return {Object} `Base`
     * */
    "setTitleRedDot": {
        "name": "setTitleRedDot",
        "moduleName": "",
        "methodName": "setTitleRedDot"
    },
    /**
     * 禁用iOS左滑后退
     * @method enableSlideBack
     * @param opt {Object}
     * @param opt.canSlideBack {Boolean} false禁止左滑后退
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  enable_slide_back.html
     * @return {Object} `Base`
     * */
    "enableSlideBack": {
        "name": "enableSlideBack",
        "moduleName": "",
        "methodName": "enableSlideBack"
    },
    /**
     * 隐藏(显示)titlebar
     * @method setNavigationBarHidden
     * @param opt {Object}
     * @param opt.flag {Number} 1 隐藏APP的titlebar,全屏显示webview,0则显示titlebar
     * @param opt.handle {Function} 调用成功执行的回调
     * @showfalse
    * @demo  set_navigation_bar_hidden.html
     * @return {Object} `Base`
     * */
    "setNavigationBarHidden": {
        "name": "setNavigationBarHidden",
        "moduleName": "",
        "methodName": "setNavigationBarHidden"
    },
    /**
     * 切换webview的tab
     * @method selectTab
     * @param opt {Object}
     * @param opt.index {Number}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  select_tab.html
     * @return {Object} `Base`
     * */
    "selectTab": {
        "name": "selectTab",
        "moduleName": "",
        "methodName": "selectTab"
    },
    /**
     * 调用App的扫描二维码功能,并返回结果。用户主动关闭扫描界面时,并不会触发回调。
     * @method scanQRCode
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调 有返回值
     * @showfalse
    * @demo  scan_qrcode.html
     * @return {Object} ```
     * {
     *  value: <String>
     * }
     * ```
     * */
    "scanQRCode": {
        "name": "scanQRCode",
        "moduleName": "",
        "methodName": "scanQRCode"
    },
    /**
     * 回复弹出框
     * Note: 点评管家独有
     * @method getReplyLayout
     * @since 0.4.6
     * @param opts {Object}
     * @param opts.callback {Function} callback回调
     * @showfalse
    * @demo  get_reply_layout.html
     * @return {Object} ```
     * {
     *  reply: <String>
     * }
     * ```
     * */
    "getReplyLayout": {
        "name": "getReplyLayout",
        "moduleName": "",
        "methodName": "getReplyLayout"
    },
    /**
     * 弹出actionSheet
     * @method actionSheet
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.title {String} actionSheet 标题
     * @param opts.cancelButton {String} actionSheet 取消按钮的文案
     * @param opts.selections {Array} actionSheet 列表,比如['王大锤','张全蛋','马建国']
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
     *  selectedIndex: <Number>
     * }
     * ```
     * @showfalse
    * @demo  action_sheet.html
     * */
    "actionSheet": {
        "name": "actionSheet",
        "moduleName": "",
        "methodName": "actionSheet"
    },
    /**
     * 调用datepicker选择日期
     * @method date
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.default {String} 2014-11-11 12:12:12(default) | 2014-11-11 | 12:12:12 初始日期
     * @param opts.type: {String} date|time|datetime(default)
     * @param opts.minuteInterval {Integer} 分钟间隔,必须能被60整除,例如:1,10,15,30
     * @param opts.minDate {Integer} 最小的有效日期,以1970年开始的毫秒数
     * @param opts.maxDate {Integer} 最大的有效日期,以1970年开始的毫秒数
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
     *  value: <String>
     * }
     * ```
     * @showfalse
    * @demo  date.html
     * */
    "date": {
        "name": "date",
        "moduleName": "",
        "methodName": "date"
    },
    /**
     * 下拉页面刷新,需要配合stopPullDown一起使用
     * @method setPullDown
     * @requires stopPullDown
     * @param opt {Object}
     * @param opt.success {Function} 设置成功后执行
     * @param opt.fail {Function} 设置失败后执行
     * @param opt.handle {Function} 刷新成功后执行
     * @showfalse
    * @demo  set_pull_down.html
     * @return {Object} `Base`
     * */
    "setPullDown": {
        "name": "setPullDown",
        "moduleName": "",
        "methodName": "setPullDown"
    },
    /**
     * 停止下拉刷新,需要配合setPullDown一起使用
     * @method stopPullDown
     * @requires setPullDown
     * @param opt {Object}
     * @param opt.success {Function} 设置成功后执行
     * @param opt.fail {Function} 设置失败后执行
     * @showfalse
    * @demo  stop_pull_down.html
     * @return {Object} `Base`
     * */
    "stopPullDown": {
        "name": "stopPullDown",
        "moduleName": "",
        "methodName": "stopPullDown"
    },
    /**
     * 设置webview状态栏样式(仅iOS)
     * @since 2.0.0
     * @method setStatusBarStyle
     * @param opts {Object}
     * @param opts.style=1 {Number} 1:黑底白字, 0:白底黑字
     * @param opts.success {Function} 成功回调
     * @param opts.success {Function} 失败回调
     * @showfalse
    * @demo  set_status_bar_style.html
     * @return {Object} `Base`
     */
    "setStatusBarStyle": {
        "name": "setStatusBarStyle",
        "moduleName": "",
        "methodName": "setStatusBarStyle"
    },
    /**
     * 设置webview反弹(仅iOS)
     * @since 2.0.0
     * @method setBouncesEnabled
     * @param opts {Object}
     * @param opts.enabled=1 {Number} 1表示允许反弹,0表示禁止。default: 1
     * @param opts.success {Function} 成功回调
     * @param opts.success {Function} 失败回调
     * @showfalse
    * @demo  set_bounces_enabled.html
     * @return {Object} `Base`
     */
    "setBouncesEnabled": {
        "name": "setBouncesEnabled",
        "moduleName": "",
        "methodName": "setBouncesEnabled"
    },

    /**
     * 本地存储<br/>
     * <a href='#method_cacheSave'>存储cache</a>,
     * <a href='#method_cacheLoad'>读取cache</a>,
     * <a href='#method_cacheDelete'>删除一条cache</a>,
     * <a href='#method_cacheClear'>清空所有cache</a>,
     * <a href='#method_store'>存值</a>,
     * <a href='#method_retrieve'>取值</a>,
     * <a href='#method_remove'>删除值</a>,
     * <a href='#method_cacheClear'>清空所有cache</a>,
     * @class 本地存储
     */
    /**
     * 存储cache
     * @deprecated
     * @method cacheSave
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.key {String} cache的键名称
     * @param opts.value: {String} 键对应的value值
     * @param opts.expiration {Integer} 失效时间可选,默认无穷大
     * @param opts.temp {Boolean} 是否是临时存储 可选,默认false,如为true的话,每次启动清空
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
     *  status: <Number>
     * }
     * ```
     * @showfalse
     * @demo  cache_save.html
     * */
    "cacheSave": {
        "name": "cacheSave",
        "moduleName": "",
        "methodName": "cacheSave"
    },
    /**
     * 读取cache
     * @deprecated
     * @method cacheLoad
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.key {String} cache的键名称
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
     *  status: <Number>,
     *  value: <String>,
     *  expired: <Boolean>,
     * }
     * ```
     * @showfalse
    * @demo  cache_load.html
     * */
    "cacheLoad": {
        "name": "cacheLoad",
        "moduleName": "",
        "methodName": "cacheLoad"
    },
    /**
     * 删除一条cache
     * @deprecated
     * @method cacheDelete
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.key {String} cache的键名称
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
     *  status: <Number>,
     * }
     * ```
     * @showfalse
    * @demo  cache_delete.html
     * */
    "cacheDelete": {
        "name": "cacheDelete",
        "moduleName": "",
        "methodName": "cacheDelete"
    },
    /**
     * 清空所有cache<br/>
     * @deprecated
     * @method cacheClear
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.success {Function} 成功后的回调方法
     * @param opts.fail {Function} 失败后的回调方法
     * @return {Object} ```
     * {
         status: <Number>,
     * }
     * ```
     * @showfalse
     * @demo  cache_clear.html
     * */
    "cacheClear": {
        "name": "cacheClear",
        "moduleName": "",
        "methodName": "cacheClear"
    },
    /**
     * 存值
     * <br/>点评侧数据存储在native中,可与native交互,更新app不会丢失
     * <br/>为了避免命名冲突,使用前需要先使用KNB.config({bizname:"your-biz-name"});进行配置
     * <br/><b style="color:red;">注意: 2.0.0 需添加config的配置,已经默认添加</b>
     * @method store
     * @param opts {Object}
     * @param opts.key {String} 存值的key
     * @param opts.value {String} 存值的value
     * @param opts.success {Function} 设置成功的回调
     * @param opts.fail {String} 设置失败的回调
     * @showfalse
    * @demo  store.html
     * @return {Object} `Base`
     */
    "store": {
        "name": "store",
        "moduleName": "",
        "methodName": "store"
    },
    /**
     * 取值
     * @method retrieve
     * @param opts {Object}
     * @param opts.key {String}
     * @showfalse
    * @demo  retrieve.html
     * @return {Object} ```
     * {
     *  value: <String>
     * }
     * ```
     */
    "retrieve": {
        "name": "retrieve",
        "moduleName": "",
        "methodName": "retrieve"
    },

    /**
     * 多媒体<br/>
     * <a href='#method_stopMusic'>停止音乐播放</a>,
     * <a href='#method_uploadImage'>选择上传图片</a>,
     * <a href='#method_uploadPhoto'>上传图片</a>,
     * <a href='#method_reuploadImage'>重新上传图片</a>,
     * <a href='#method_downloadImage'>下载图片</a>,
     * <a href='#method_showPhoto'>展示单个图片</a>,
     * <a href='#method_showImages'>展示图片列表</a>,
     * <a href='#method_editPhoto'>更改图片</a>,
     * <a href='#method_chooseImage'>选择图片(KNB)</a>,
     * <a href='#method_previewImage'>预览图片(KNB)</a>,
     * <a href='#method_playVoice'>播放本地音频</a>,
     * @class 多媒体
     */
    /**
     * 停止音乐播放
     * @method stopMusic
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  stop_music.html
     * @return {Object} `Base`
     * */
    "stopMusic": {
        "name": "stopMusic",
        "moduleName": "",
        "methodName": "stopMusic"
    },
    /**
     * 调用native的图片查看功能展示图片
     * <br/><b style="color:red;">从2.0.0开始转到showImages</b>
     * @deprecated
     * @method showPhoto
     * @since 0.2.9
     * @param opt {Object}
     * @param opt.name {String} 图片名称
     * @param opt.url {String} 图片地址
     * @param opt.editable {Boolean} 是否可编辑
     * @param opt.success {Function}
     * @param opt.fail {Function}
     * @showfalse
    * @demo  show_photo.html
     * @return {Object} ```
     * {
     *  name: <String>,
     *  action: <String>,
     * }
     * ```
     * 删除图片时的回调参数属性
     * */
    "showPhoto": {
        "name": "showPhoto",
        "moduleName": "",
        "methodName": "showPhoto"
    },
    /**
     * 调用native的图片查看功能展示图片列表
     * @since 2.0.0
     * @method showImages
     * @since 0.4.7
     * @param opt {Object}
     * @param opt.imageList {Array} 图片列表
     * @param opt.imageList.name {String} 图片名称
     * @param opt.imageList.url {String} 图片地址
     * @param opt.editable {Boolean} 是否可编辑
     * @param opt.index {Int} 当前所在页,从0开始
     * @param opt.success {Function} 删除成功的回调
     * @param opt.fail {Function}   删除失败的回调
     * @showfalse
    * @demo  show_images.html
     * @return {Object} ```
     * {
     *  name: <String>,
     *  action: <String>,
     * }
     * ```
     * 删除图片时的回调参数属性
     * */
    "showImages": {
        "name": "showImages",
        "moduleName": "",
        "methodName": "showImages"
    },
    /**
     * 选择上传图片
     * <br/><b style="color:red;">注意: 2.0.0 之后有些新变化,
     * 场景一:选择后立即上传,参数为maxNum,uploadUrl;<br/>
     * 场景二:2.0.0 之后支持传入localIds上传选定的资源。<br/>
     * native 端已经兼容两种写法,2.0.0 版本不需要修改。如果需要使用场景二,推荐使用 <a href='#method_uploadPhoto'>上传图片</a>
     * </b>
     * @method uploadImage
     * @since 0.2.9
     * @param opts {Object}
     * @param opts.maxNum {Number} 最大选取的图片数
     * @param opts.bucket {String} 桶名
     * @param opts.signatureURL {String} 签名URL
     * @param opts.clientId {String} mt上传至指定bucket下时。默认为shaitu
     * @param opts.localIds {Array} 待上传图片的本地资源位置id
     * @param opts.success {Function} 调用成功回调
     * @param opts.handle {Function} 上传成功的回调
     * @param opts.fail {Function} 调用失败回调
     * @showfalse
    * @demo  upload_image.html
     * @return {Object} ```
     * {
     *  progress: <String>,
     * }
     * ```
     * */
    "uploadImage": {
        "name": "uploadImage",
        "moduleName": "",
        "methodName": "uploadImage"
    },
    /**
     * 上传图片
     * <br/><b style="color:red;">NOTE: 暂时没有实现,后续迭代</b>
     * @method uploadPhoto
     * @since 2.0.0
     * @param opts {Object}
     * @param opts.bucket {String} 桶名
     * @param opts.signatureURL {String} 签名URL
     * @param opts.localIds {Array} 待上传图片的本地资源位置id
     * @param opts.success {Function} 调用成功回调
     * @param opts.handle {Function} 上传成功的回调
     * @param opts.fail {Function} 调用失败回调
     * @showfalse
     * @demo  upload_photo.html
     * @return {Object} `Base`
     * */
    "uploadPhoto": {
        "name": "uploadPhoto",
        "moduleName": "",
        "methodName": "uploadPhoto"
    },
    /**
     * 取消上传,适用于上传未完成时用户尝试退出当前页面。
     * @method cancelUploadImage
     * @param opt {Object}
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  cancel_upload_image.html
     * @return {Object} `Base`
     * */
    "cancelUploadImage": {
        "name": "cancelUploadImage",
        "moduleName": "",
        "methodName": "cancelUploadImage"
    },
    /**
     * 重新上传图片
     * @method reuploadImage
     * @since 0.4.6
     * @param opts {Object}
     * @param opts.originalFileName
     * @param opts.originalData
     * @param opts.callback {Function} callback回调
     * @return {Object} `Base`
     * */
    "reuploadImage": {
        "name": "reuploadImage",
        "moduleName": "",
        "methodName": "reuploadImage"
    },
    /**
     * 更改(删除)图片
     * <br/><b style="color:red;">注意:点评管家特有的实现<br/>
     * IOS需要特殊参数,可以在相册管理项目里测试
     * </b>
     * @method editPhoto
     * @param opt {Object}
     * @param opt {Object}
     * @param opt.imageList {Array} 图片列表
     * @param opt.imageList.name {String} 图片名称
     * @param opt.imageList.url {String} 图片地址
     * @param opt.index {Integer} 当前所在页,从0开始
     * @param opt.success {Function} 调用成功执行的回调
     * @showfalse
    * @demo  edit_photo.html
     * @return {Object} `Base`
     * */
    "editPhoto": {
        "name": "editPhoto",
        "moduleName": "",
        "methodName": "editPhoto"
    },
    /**
     * 下载图片,下载完成后,图片会出现在用户设备的资源库中
     * @method downloadImage
     * @param opts {Object}
     * @param opts.type {Integer} 0或1,若为1则下载到相册,为0则返回imageData(base64)
     * @param opts.imageUrl {String} 图片地址
     * @param opts.success {Function}
     * @showfalse
    * @demo  download_image.html
     * @return {Object} ```
     * {
     *  imageData: <String>,
     * }
     * ```
     * */
    "downloadImage": {
        "name": "downloadImage",
        "moduleName": "",
        "methodName": "downloadImage"
    },
    /**
     * 选择图片
     * <br/><b style="color:red;">NOTE: 暂时没有实现,后续迭代</b>
     * @since 2.0.0
     * @method chooseImage
     * @param opts {Object}
     * @param opts.type {String} 图片类型:'gallery'相册, 'camera'相机, ''呼出相机和相册组合
     * @param [opts.count=9] {Number} 可选,表示可以选择图片的最大数量,当type:camera时此参数无效。
     * @param [opts.ensureUpright=false] {Boolean} 可选,true表示需要在返回前调整图片朝向为正立。
     * @param [opts.returnType] {String} 可选,指定返回类型, localId返回本地URL对应的具体图片。 base64:返回base64编码,返回值以data;image/jpeg;base64开头。default: localId
     * @param [opts.width] {Number} 可选,表示裁减到指定的宽度
     * @param [opts.maxWidth] {Number} 可选,表示裁减到指定的宽度
     * @param [opts.height] {Number} 可选,表示裁减到指定的宽度
     * @param [opts.maxHeight] {Number} 可选,表示裁减到指定的宽度
     * @param [opts.quality] {Number} 可选,指定图片的压缩质量,范围从0~100. 0表示质量最差,100表示原图
     * @param opts.success {Function} 成功回调
     * @showfalse
    * @demo  choose_image.html
     * @return {Object} ```
     * {
     *  photoInfos: <Array>// { localId: <String> }
     * }
     * ```
     */
    "chooseImage": {
        "name": "chooseImage",
        "moduleName": "",
        "methodName": "chooseImage"
    },
    /**
     * 预览图片
     * @since 2.0.0
     * @method previewImage
     * @param opts {Object}
     * @param opts.current {String} 默认展示的图片
     * @param opts.urls {Array} 相册列表url
     * @param opts.success {Function} 成功回调
     * @showfalse
    * @demo  preview_image.html
     * @return {Object} `Base`
     */
    "previewImage": {
        "name": "previewImage",
        "moduleName": "",
        "methodName": "previewImage"
    },
    /**
     * 播放本地音频
     * @method playVoice
     * @param opts {Object}
     * @param opts.localId {String} 本地音频资源Id (必填)
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
     * @demo play_voice.html
     * @return {Object} `Base`
     */
    "playVoice": {
        "name": "playVoice",
        "moduleName": "",
        "methodName": "playVoice"
    },
    /**
     * 订阅与广播<br/>
     * <a href='#method_subscribe'>订阅消息</a>,
     * <a href='#method_unsubscribe'>取消订阅消息</a>,
     * <a href='#method_publish'>发布消息</a>
     * @class 订阅与广播
     */
    /**
     * 发布消息
     * @method publish
     * @param opts {Object}
     * @param opts.action {String} 发布的消息名称
     * @param opts.data {Object} 需要传递的数据
     * @param opts.success {Function} 发送成功的回调
     * @showfalse
    * @demo  publish.html
     * @return {Object} `Base`
     * */
    "publish": {
        "name": "publish",
        "moduleName": "",
        "methodName": "publish"
    },
    /**
     * 订阅消息
     * <br/><b style="color:red;">注意:action 可取值说明<br/>
     * switchCity: 切换城市<br/>
     * loginSuccess: 登录成功<br/>
     * foreground: 应用切换回前台<br/>
     * background: 应用切换到后台<br/>
     * disapper: 视图隐藏,比如在当前页面调用KNB.login或者通过openWebview跳转到新容器<br/>
     * appear:视图出现,同上切回到当前容器时触发<br/></b>
     * @method subscribe
     * @param opts.action {String} 订阅的消息名称
     * @param opts.success {Function} 订阅成功的回调
     * @param opts.handle {Function} 接受到消息的回调
     * @showfalse
    * @demo  subscribe.html
     * @return {Object} ```
     * {
     *  data: <String>
     * }
     * ```
     * */
    "subscribe": {
        "name": "subscribe",
        "moduleName": "",
        "methodName": "subscribe"
    },
    /**
     * 取消订阅消息
     * @method unsubscribe
     * @param opts {Object}
     * @param opts.action {String} 取消该所有事件的订阅
     * @param opts.subId {String} 取消订阅id
     * @param opts.handle {Function} 取消特定订阅回调,一定要和subscribe的handle为同一个函数,切忌不要用匿名函数,
     * @param opts.success {Function} 取消成功回调
     * @showfalse
    * @demo  unsubscribe.html
     * @return {Object} `Base`
     * */
    "unsubscribe": {
        "name": "unsubscribe",
        "moduleName": "",
        "methodName": "unsubscribe"
    },

    /**
     * 系统提示<br/>
     * <a href='#method_sendSMS'>发送消息</a>,
     * <a href='#method_alert'>弹出alert</a>,
     * <a href='#method_confirm'>弹出确认对话框</a>,
     * <a href='#method_prompt'>弹出输入对话框</a>,
     * <a href='#method_toast'>浮层提示(toast)</a>,
     * <a href='#method_vibarte'>vibarte(震动)</a>,
     * <a href='#method_autoLock'>autoLock(自动锁屏)</a>,
     * @class 系统提示
     */
    /**
     * 发送消息
     * @method sendSMS
     * @since 0.3.0
     * @param opts {Object}
     * @param opts.content {String} 消息内容
     * @param opts.recipients {String} 联系人,多个之间用';'分割开
     * @showfalse
    * @demo  send_sms.html
     * @return {Object} `Base`
     * */
    "sendSMS": {
        "name": "sendSMS",
        "moduleName": "",
        "methodName": "sendSMS"
    },
    /**
     * 浮层提示(toast) 弹出一段简短的信息,一定时间后消失。
     * <br/>安卓设备上toast显示持续时间受到系统限制,只有2秒和3.5秒两个选项。
     * 调用本接口时,如果`timeout`大于2000,则按3.5秒展示;否则按2秒展示。
     * <br/><b style="color: red;">注意: 2.0.0 为了适配KNB,添加了 content 和 duration 参数,与原先的 title, timeout 分别对应</b>
     * @method toast
     * @param opt {Object}
     * @param opt.title(content) {String} 文字
     * @param opt.timeout(duration) {Number} 持续时间,若属性为duration, 则0表示2000ms, 1表示3500ms
     * @showfalse
     * @demo  toast.html
     * @return {Object} `Base`
     * */
    "toast": {
        "name": "toast",
        "moduleName": "",
        "methodName": "toast"
    },
    /**
     * 弹出原生的输入对话框(类似于window.prompt),允许用户输入一段文字,确认或取消。
     * @method prompt
     * @param opt {Object}
     * @param opt.title {String} 标题文字
     * @param opt.message {String} 内容文字
     * @param opt.placeholder {String} 输入框默认文字
     * @param opt.okButton {String} 确认按钮文字,可选,默认值『确定』
     * @param opt.cancelButton {String} 取消按钮文字,可选,默认值『取消』
     * @param opt.success {Function} 调用成功执行的回调 有返回值
     * @showfalse
    * @demo  prompt.html
     * @return {Object} ```
     * {
     *  text: <String>,
     *  ret: <Boolean>
     * }
     * ```
     * */
    "prompt": {
        "name": "prompt",
        "moduleName": "",
        "methodName": "prompt"
    },
    /**
     * 弹出原生的确认对话框(类似于window.confirm),允许用户确认或取消
     * @method confirm
     * @param opt {Object}
     * @param opt.title {String} 标题文字
     * @param opt.message {String} 内容文字
     * @param opt.okButton {String} 确认按钮文字,可选,默认值『确定』
     * @param opt.cancelButton {String} 取消按钮文字,可选,默认值『取消』
     * @param opt.success {Function} 调用成功执行的回调 有返回值
     * @showfalse
    * @demo  confirm.html
     * @return {Object} ```
     * {
     *  ret: <Boolean>
     * }
     * ```
     * */
    "confirm": {
        "name": "confirm",
        "moduleName": "",
        "methodName": "confirm"
    },
    /**
     * 弹出提醒
     * @method alert
     * @param opts {Object}
     * @param opts.title {String} 标题文字
     * @param opts.message {String} 内容文字
     * @param opts.button {String} 按钮文字
     * @showfalse
    * @demo  alert.html
     * @return {Object} `Base`
     */
    "alert": {
        "name": "alert",
        "moduleName": "",
        "methodName": "alert"
    },
    /**
     * 震动
     * @since 2.0.0
     * @method vibarte
     * @param opts {Object} 需要执行的回调方法
     * @param opts.duration=1000 {Number} 震动间隔,单位ms
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
    * @demo  vibarte.html
     * @return {Object} `Base`
     */
    "vibarte": {
        "name": "vibarte",
        "moduleName": "",
        "methodName": "vibarte"
    },
    /**
     * 设置自动锁屏
     * <br/><b style="color:red;">注意:因为权限问题没法实现</b>
     * @since 2.0.0
     * @method autoLock
     * @param opts {Object}
     * @param opts.disable=0 {Number} default 0: 打开自动锁屏, 1: 禁止自动锁屏
     * @param opts.success {Function} 成功回调
     * @param opts.fail {Function} 失败回调
     * @showfalse
    * @demo  auto_lock.html
     * @return {Object} `Base`
     */
    "autoLock": {
        "name": "autoLock",
        "moduleName": "",
        "methodName": "autoLock"
    },
};