# 百度小程序--API
* 小程序开发框架提供丰富的原生 API
* 多数 API 的回调都是异步,你需要处理好代码逻辑的异步问题
## 目录结构
[toc]
---
## `API` 导读
<table>
<tr>
<td>一级分类</td>
<td>二级分类</td>
<td>API</td>
<td>描述</td>
</tr>
<tr>
<td rowspan="8">基础</td>
<td rowspan="8">应用级事件</td>
<td>swan.onPageNotFound</td>
<td>监听小程序要打开的页面不存在事件。该事件与 App.onPageNotFound 的回调时机一致</td>
</tr>
<tr>
<td>swan.onError</td>
<td>监听小程序错误事件。如脚本错误或API调用报错等</td>
</tr>
<tr>
<td>swan.onAppShow</td>
<td>监听小程序错误事件。如脚本错误或API调用报错等。该事件与 App.onError 的回调时机与参数一致</td>
</tr>
<tr>
<td>swan.onAppHide</td>
<td>监听小程序切后台事件。该事件与 App.onHide 的回调时机一致</td>
</tr>
<tr>
<td>swan.offPageNotFound</td>
<td>取消监听小程序要打开的页面不存在事件</td>
</tr>
<tr>
<td>swan.offError</td>
<td>取消监听小程序错误事件</td>
</tr>
<tr>
<td>swan.offAppShow</td>
<td>取消监听小程序切前台事件</td>
</tr>
<tr>
<td>swan.offAppHide</td>
<td>取消监听小程序切后台事件</td>
</tr>
<tr>
<td rowspan="10">网络</td>
<td>请求</td>
<td>swan.request</td>
<td>发起网络请求</td>
</tr>
<tr>
<td rowspan="2">上传、下载</td>
<td>swan.uploadFile</td>
<td>将本地资源上传到开发者服务器</td>
</tr>
<tr>
<td>swan.downloadFile</td>
<td>下载文件资源到本地</td>
</tr>
<tr>
<td rowspan="7">WebSocket</td>
<td>swan.connectSocket</td>
<td>创建一个 WebSocket 连接</td>
</tr>
<tr>
<td>swan.onSocketOpen</td>
<td>监听 WebSocket 连接打开事件</td>
</tr>
<tr>
<td>swan.onSocketError</td>
<td>监听 WebSocket 错误</td>
</tr>
<tr>
<td>swan.sendSocketMessage</td>
<td>通过 WebSocket 连接发送数据</td>
</tr>
<tr>
<td>swan.onSocketMessage</td>
<td>监听 WebSocket 接受到服务器的消息事件</td>
</tr>
<tr>
<td>swan.closeSocket</td>
<td>关闭 WebSocket 连接</td>
</tr>
<tr>
<td>swan.onSocketClose</td>
<td>监听 WebSocket 关闭</td>
</tr>
<tr>
<td rowspan="24">AI</td>
<td rowspan="4">文字识别</td>
<td>swan.ai.ocrIdCard</td>
<td>用户向服务请求识别身份证,身份证识别包括正面和背面</td>
</tr>
<tr>
<td>swan.ai.ocrBankCard</td>
<td>识别银行卡并返回卡号、发卡行和卡片类型</td>
</tr>
<tr>
<td>swan.ai.ocrDrivingLicense</td>
<td>对机动车驾驶证所有关键字段进行识别</td>
</tr>
<tr>
<td>swan.ai.ocrVehicleLicense</td>
<td>对机动车行驶证正本所有关键字段进行识别</td>
</tr>
<tr>
<td>文本审核</td>
<td>swan.ai.textReview</td>
<td>运用业界领先的深度学习技术,判断一段文本内容是否符合网络发文规范,实现自动化、智能化的文本审核</td>
</tr>
<tr>
<td>语音合成</td>
<td>swan.ai.textToAudio</td>
<td>将文本转换为可以播放的 mp3 文件</td>
</tr>
<tr>
<td>图像审核</td>
<td>swan.ai.imageAudit</td>
<td>自定义图像审核</td>
</tr>
<tr>
<td rowspan="7">图像识别</td>
<td>swan.ai.advancedGeneralIdentify</td>
<td>通用物体及场景识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的多个物体及场景标签</td>
</tr>
<tr>
<td>swan.ai.objectDetectIdentify</td>
<td>用户向服务请求检测图像中的主体位置</td>
</tr>
<tr>
<td>swan.ai.carClassify</td>
<td>用于检测一张车辆图片的具体车型,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的车辆品牌及型号、颜色及年份、位置信息</td>
</tr>
<tr>
<td>swan.ai.dishClassify</td>
<td>用于菜品识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度</td>
</tr>
<tr>
<td>swan.ai.logoClassify</td>
<td>用于检测和识别图片中的品牌 LOGO 信息</td>
</tr>
<tr>
<td>swan.ai.animalClassify</td>
<td>该请求用于识别一张图片,即对于输入的一张图片(可正常解码,且长宽比较合适),输出动物识别结果</td>
</tr>
<tr>
<td>swan.ai.plantClassify</td>
<td>该请求用于识别一张图片,即对于输入的一张图片(可正常解码,且长宽比较合适),输出植物识别结果</td>
</tr>
<tr>
<td>语音识别</td>
<td>swan.ai.getVoiceRecognizer</td>
<td>获取全局唯一的语音识别器 voiceRecognizer</td>
</tr>
<tr>
<td rowspan="8">人脸识别</td>
<td>swan.ai.faceDetect</td>
<td>人脸检测,检测图片中的人脸并标记出相应的信息位置,同时可以展示出人脸的关键信息和属性信息,比如年龄,性别等</td>
</tr>
<tr>
<td>swan.ai.faceMatch</td>
<td>人脸对比,支持两张人脸图片的相似度对比,图片类型可以为:生活照,证件照,身份证芯片照或者带网纹照</td>
</tr>
<tr>
<td>swan.ai.faceSearch</td>
<td>人脸搜索,传入人脸图片,支持在指定人脸图片集合中,找到与传入图片中人脸最为相似的图片</td>
</tr>
<tr>
<td>swan.ai.facePersonVerify</td>
<td>公安验证,基于姓名和身份证号,调取公民身份证小图(源自公安系统),将当前获取的人脸图片,与此证件小图进行对比,得出比对分数</td>
</tr>
<tr>
<td>swan.ai.facePersonIdmatch</td>
<td>身份证和名字对比,验证用户输入的身份证号码和姓名是否匹配,用于判断用户信息是否真实</td>
</tr>
<tr>
<td>swan.ai.faceVerify</td>
<td>在线活体检测,基于单张图片,判断图片中的人脸是否为二次翻拍</td>
</tr>
<tr>
<td>swan.ai.faceLivenessSessioncode</td>
<td>H5活体检测-语音校验码,为防止用户提交非当前操作的视频,在录制视频时,随机分配一个数字,用户需要读出这个数字,在后续识别时校验,以判断视频是否为现场录制</td>
</tr>
<tr>
<td>swan.ai.faceLivenessVerify</td>
<td>H5活体检测-视频活体检测,录制并上传的视频,会在云端进行随机抽帧分析,并得出最终的活体检测分数</td>
</tr>
<tr>
<td>词法分析</td>
<td>swan.ai.nlpLexerCustom</td>
<td>词法分析,提供分词、词性标注、专名识别三大功能</td>
</tr>
<tr>
<td rowspan="15">媒体</td>
<td rowspan="5">图片</td>
<td>swan.chooseImage</td>
<td>从本地相册选择图片或使用相机拍照</td>
</tr>
<tr>
<td>swan.previewImage</td>
<td>预览图片</td>
</tr>
<tr>
<td>swan.getImageInfo</td>
<td>获取图片信息</td>
</tr>
<tr>
<td>swan.saveImageToPhotosAlbum</td>
<td>保存图片到系统相册,需要用户授权</td>
</tr>
<tr>
<td>swan.chooseAlbum</td>
<td>打开本地相册,相册内可以同时包含图片和视频</td>
</tr>
<tr>
<td>录音管理</td>
<td>swan.getRecorderManager</td>
<td>获取全局唯一的录音管理器 recorderManager</td>
</tr>
<tr>
<td>背景音频</td>
<td>swan.getBackgroundAudioManager</td>
<td>获取全局唯一的背景音频管理器 backgroundAudioManager</td>
</tr>
<tr>
<td rowspan="2">音频组件</td>
<td>swan.createInnerAudioContext</td>
<td>创建并返回内部 audio 上下文 innerAudioContext 对象</td>
</tr>
<tr>
<td>swan.setInnerAudioOption</td>
<td>对innerAudioContext进行小程序内部的全局设置</td>
</tr>
<tr>
<td rowspan="2">视频</td>
<td>swan.chooseVideo</td>
<td>拍摄视频或从手机相册中选视频,返回视频的临时文件路径</td>
</tr>
<tr>
<td>swan.saveVideoToPhotosAlbum</td>
<td>保存视频到系统相册。需要用户授权</td>
</tr>
<tr>
<td rowspan="1">视频组件</td>
<td>swan.createVideoContext</td>
<td>创建并返回 video 上下文 videoContext 对象</td>
</tr>
<tr>
<td rowspan="1">直播组件</td>
<td>swan.createLivePlayerContext</td>
<td>操作对应的 < live-player/> 组件</td>
</tr>
<tr>
<td rowspan="1">相机组件</td>
<td>swan.createCameraContext</td>
<td>创建并返回 camera 上下文 cameraContext对象</td>
</tr>
<tr>
<td rowspan="1">AR相机</td>
<td>swan.createARCameraContext</td>
<td>创建并返回 ar-camera 上下文 ARCameraContext对象</td>
</tr>
<tr>
<td rowspan="6">文件</td>
<td rowspan="4">保存、获取文件</td>
<td>swan.saveFile</td>
<td>保存文件到本地</td>
</tr>
<tr>
<td>swan.getFileInfo</td>
<td>获取文件信息</td>
</tr>
<tr>
<td>swan.getSavedFileList</td>
<td>获取本地已保存的文件列表</td>
</tr>
<tr>
<td>swan.getSavedFileInfo</td>
<td>获取本地文件的文件信息</td>
</tr>
<tr>
<td rowspan="1">删除文件</td>
<td>swan.removeSavedFile</td>
<td>删除本地存储的文件</td>
</tr>
<tr>
<td rowspan="1">新文件</td>
<td>swan.openDocument</td>
<td>新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx</td>
</tr>
<tr>
<td rowspan="10">数据存储</td>
<td rowspan="6">存储数据</td>
<td>swan.setStorage</td>
<td>将数据存储在本地缓存中指定的 key 中</td>
</tr>
<tr>
<td>swan.setStorageSync</td>
<td>将数据存储在本地缓存中指定的 key 中</td>
</tr>
<tr>
<td>swan.getStorage</td>
<td>从本地缓存中异步获取指定 key 对应的内容</td>
</tr>
<tr>
<td>swan.getStorageSync</td>
<td>从本地缓存中同步获取指定 key 对应的内容</td>
</tr>
<tr>
<td>swan.getStorageInfo</td>
<td>异步获取当前 storage 的相关信息</td>
</tr>
<tr>
<td>swan.getStorageInfoSync</td>
<td>同步获取当前 storage 的相关信息</td>
</tr>
<tr>
<td rowspan="4">存储清理</td>
<td>swan.removeStorage</td>
<td>从本地缓存中异步移除指定 key</td>
</tr>
<tr>
<td>swan.removeStorageSync</td>
<td>从本地缓存中同步移除指定 key</td>
</tr>
<tr>
<td>swan.clearStorage</td>
<td>清理本地数据缓存</td>
</tr>
<tr>
<td>swan.clearStorageSync</td>
<td>同步清理本地数据缓存</td>
</tr>
<tr>
<td rowspan="4">位置</td>
<td rowspan="2">获取位置</td>
<td>swan.getLocation</td>
<td>获取当前的地理位置、速度</td>
</tr>
<tr>
<td>swan.chooseLocation</td>
<td>打开地图选择位置</td>
</tr>
<tr>
<td rowspan="1">查看位置</td>
<td>swan.openLocation</td>
<td>使用宿主 App 内置地图查看位置</td>
</tr>
<tr>
<td rowspan="1">地图组件</td>
<td>swan.createMapContext</td>
<td>创建并返回 map 上下文 mapContext 对象</td>
</tr>
<tr>
<td rowspan="38">界面</td>
<td rowspan="4">绘图</td>
<td>swan.createCanvasContext</td>
<td>绘图上下文的创建</td>
</tr>
<tr>
<td>swan.canvasGetImageData</td>
<td>用来描述 canvas 区域隐含的像素数据</td>
</tr>
<tr>
<td>swan.canvasPutImageData</td>
<td>将像素数据绘制到画布的方法</td>
</tr>
<tr>
<td>swan.canvasToTempFilePath</td>
<td>把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径</td>
</tr>
<tr>
<td rowspan="6">交互反馈</td>
<td>swan.showToast</td>
<td>显示消息提示框</td>
</tr>
<tr>
<td>swan.showLoading</td>
<td>显示 loading 提示框, 需主动调用 hideLoading 才能关闭提示框</td>
</tr>
<tr>
<td>swan.hideToast</td>
<td>隐藏消息提示框</td>
</tr>
<tr>
<td>swan.hideLoading</td>
<td>隐藏 loading 提示框</td>
</tr>
<tr>
<td>swan.showModal</td>
<td>显示模态弹窗</td>
</tr>
<tr>
<td>swan.showActionSheet</td>
<td>显示操作菜单</td>
</tr>
<tr>
<td rowspan="4">导航栏</td>
<td>swan.setNavigationBarTitle</td>
<td>动态设置当前页面的标题</td>
</tr>
<tr>
<td>swan.showNavigationBarLoading</td>
<td>该方法在当前页面显示导航条加载动画</td>
</tr>
<tr>
<td>swan.hideNavigationBarLoading</td>
<td>隐藏导航条加载动画</td>
</tr>
<tr>
<td>swan.setNavigationBarColor</td>
<td>动态设置当前页面导航条的颜色</td>
</tr>
<tr>
<td rowspan="8">设置tabBar</td>
<td>swan.setTabBarBadge</td>
<td>为 tabBar 某一项的右上角添加文本</td>
</tr>
<tr>
<td>swan.removeTabBarBadge</td>
<td>移除tabBar某一项右上角的文本</td>
</tr>
<tr>
<td>swan.showTabBarRedDot</td>
<td>显示 tabBar 某一项的右上角的红点</td>
</tr>
<tr>
<td>swan.hideTabBarRedDot</td>
<td>隐藏 tabBar 某一项的右上角的红点</td>
</tr>
<tr>
<td>swan.setTabBarStyle</td>
<td>动态设置 tabBar 的整体样式</td>
</tr>
<tr>
<td>swan.setTabBarItem</td>
<td>动态设置 tabBar 某一项的内容</td>
</tr>
<tr>
<td>swan.showTabBar</td>
<td>显示 tabBar</td>
</tr>
<tr>
<td>swan.hideTabBar</td>
<td>隐藏 tabBar</td>
</tr>
<tr>
<td rowspan="5">导航</td>
<td>swan.navigateTo</td>
<td>保留当前页面,跳转到应用内的某个页面</td>
</tr>
<tr>
<td>swan.redirectTo</td>
<td>关闭当前页面,跳转到应用内的某个页面</td>
</tr>
<tr>
<td>swan.switchTab</td>
<td>跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面</td>
</tr>
<tr>
<td>swan.navigateBack</td>
<td>关闭当前页面,跳转到应用内的某个页面</td>
</tr>
<tr>
<td>swan.reLaunch</td>
<td>关闭所有页面,打开到应用内的某个页面</td>
</tr>
<tr>
<td rowspan="1">动画</td>
<td>swan.createAnimation</td>
<td>创建一个动画实例 animation</td>
</tr>
<tr>
<td rowspan="1">位置</td>
<td>swan.pageScrollTo</td>
<td>将页面滚动到目标位置</td>
</tr>
<tr>
<td rowspan="2">背景</td>
<td>swan.setBackgroundColor</td>
<td>设置窗口的背景颜色</td>
</tr>
<tr>
<td>swan.setBackgroundTextStyle</td>
<td>设置窗口下拉背景loading样式</td>
</tr>
<tr>
<td rowspan="2">下拉刷新</td>
<td>swan.startPullDownRefresh</td>
<td>开始下拉刷新,调用后触发下拉刷新动画</td>
</tr>
<tr>
<td>swan.stopPullDownRefresh</td>
<td>停止当前页面下拉刷新</td>
</tr>
<tr>
<td rowspan="1">自定义组件</td>
<td>swan.nextTick</td>
<td>延迟一部分操作到下一个时间片再执行</td>
</tr>
<tr>
<td rowspan="1">菜单</td>
<td>swan.getMenuButtonBoundingClientRect</td>
<td>获取菜单按钮(右上角胶囊按钮)的布局位置信息</td>
</tr>
<tr>
<td rowspan="2">节点信息</td>
<td>swan.createIntersectionObserver</td>
<td>创建并返回一个 IntersectionObserver 对象实例</td>
</tr>
<tr>
<td>swan.createSelectorQuery</td>
<td>返回一个 SelectorQuery 对象实例</td>
</tr>
<tr>
<td rowspan="1">小程序引导</td>
<td>swan.showFavoriteGuide</td>
<td>支持在小程序内调起添加到我的小程序引导组件,引导用户添加到我的小程序</td>
</tr>
<tr>
<td rowspan="29">设备</td>
<td rowspan="4">系统信息</td>
<td>swan.getSystemInfo</td>
<td>获取系统信息</td>
</tr>
<tr>
<td>swan.getSystemInfoSync</td>
<td>获取系统信息同步接口</td>
</tr>
<tr>
<td>swan.getEnvInfoSync</td>
<td>获取运行环境信息同步接口</td>
</tr>
<tr>
<td>swan.canIUse</td>
<td>判断智能小程序的API,回调,参数,组件等是否在当前版本可用</td>
</tr>
<tr>
<td rowspan="1">内存</td>
<td>swan.onMemoryWarning</td>
<td>监听内存不足的告警事件</td>
</tr>
<tr>
<td rowspan="2">内存</td>
<td>swan.getNetworkType</td>
<td>获取网络类型</td>
</tr>
<tr>
<td>swan.onNetworkStatusChange</td>
<td>监听网络状态变化</td>
</tr>
<tr>
<td rowspan="3">加速度计</td>
<td>swan.onAccelerometerChange</td>
<td>监听加速度数据</td>
</tr>
<tr>
<td>swan.startAccelerometer</td>
<td>开始监听加速度数据</td>
</tr>
<tr>
<td>swan.stopAccelerometer</td>
<td>停止监听加速度数据</td>
</tr>
<tr>
<td rowspan="3">罗盘</td>
<td>swan.onCompassChange</td>
<td>监听罗盘数据</td>
</tr>
<tr>
<td>swan.startCompass</td>
<td>开始监听罗盘数据</td>
</tr>
<tr>
<td>swan.stopCompass</td>
<td>停止监听罗盘数据</td>
</tr>
<tr>
<td rowspan="3">设备方向</td>
<td>swan.onDeviceMotionChange</td>
<td>监听设备方向变化事件</td>
</tr>
<tr>
<td>swan.startDeviceMotionListening</td>
<td>开始监听设备方向的变化</td>
</tr>
<tr>
<td>swan.stopDeviceMotionListening</td>
<td>停止监听设备方向的变化</td>
</tr>
<tr>
<td rowspan="2">获取电量</td>
<td>swan.getBatteryInfo</td>
<td>支持在小程序内获取当前设备电量</td>
</tr>
<tr>
<td>swan.getBatteryInfoSync</td>
<td>获取当前设备电量同步接口,ios系统不可用</td>
</tr>
<tr>
<td rowspan="1">扫码</td>
<td>swan.scanCode</td>
<td>调起客户端扫码界面,扫码成功后返回对应的结果</td>
</tr>
<tr>
<td rowspan="3">屏幕亮度</td>
<td>swan.setScreenBrightness</td>
<td>设置屏幕亮度</td>
</tr>
<tr>
<td>swan.getScreenBrightness</td>
<td>获取屏幕亮度</td>
</tr>
<tr>
<td>swan.setKeepScreenOn</td>
<td>设置是否保持常亮状态</td>
</tr>
<tr>
<td rowspan="1">用户截屏</td>
<td>swan.onUserCaptureScreen</td>
<td>监听用户主动截屏事件,用户使用系统截屏按键截屏时触发此事件</td>
</tr>
<tr>
<td rowspan="2">振动</td>
<td>swan.vibrateLong</td>
<td>使手机发生较长时间的振动</td>
</tr>
<tr>
<td>swan.vibrateShort</td>
<td>使手机发生较短时间的振动</td>
</tr>
<tr>
<td rowspan="1">手机联系人</td>
<td>swan.addPhoneContact</td>
<td>写入手机系统通讯录</td>
</tr>
<tr>
<td rowspan="1">拨打电话</td>
<td>swan.makePhoneCall</td>
<td>拨打电话</td>
</tr>
<tr>
<td rowspan="2">剪贴板</td>
<td>swan.setClipboardData</td>
<td>设置系统剪贴板的内容</td>
</tr>
<tr>
<td>swan.getClipboardData</td>
<td>获取系统剪贴板内容</td>
</tr>
<tr>
<td rowspan="2">第三方平台</td>
<td rowspan="2">第三方数据</td>
<td>swan.getExtConfig</td>
<td>获取第三方平台自定义的数据字段</td>
</tr>
<tr>
<td>swan.getExtConfigSync</td>
<td>swan.getExtConfig的同步版本</td>
</tr>
<tr>
<td rowspan="28">开放接口</td>
<td rowspan="3">登陆</td>
<td>swan.login</td>
<td>获取用户登录凭证</td>
</tr>
<tr>
<td>swan.checkSession</td>
<td>检测当前用户登录态是否有效</td>
</tr>
<tr>
<td>swan.isLoginSync</td>
<td>获取宿主 App登录状态</td>
</tr>
<tr>
<td rowspan="1">授权</td>
<td>swan.authorize</td>
<td>提前向用户发起授权请求</td>
</tr>
<tr>
<td rowspan="2">授权</td>
<td>swan.getSwanId</td>
<td>获取 swanid</td>
</tr>
<tr>
<td>swan.getUserInfo</td>
<td>获取用户信息</td>
</tr>
<tr>
<td rowspan="2">设置</td>
<td>swan.openSetting</td>
<td>调起客户端智能小程序设置界面,返回用户设置的操作结果</td>
</tr>
<tr>
<td>swan.getSetting</td>
<td>获取用户的当前设置</td>
</tr>
<tr>
<td rowspan="2">分享</td>
<td>swan.openShare</td>
<td>调起分享面板</td>
</tr>
<tr>
<td>swan.shareFile</td>
<td>支持调起系统分享面板将文件分享到其他App</td>
</tr>
<tr>
<td rowspan="1">收货地址</td>
<td>swan.chooseAddress</td>
<td>调起用户编辑收货地址原生界面</td>
</tr>
<tr>
<td rowspan="1">百度支付</td>
<td>swan.requestPolymerPayment</td>
<td>百度收银台,聚合了主流的百度钱包、微信、支付宝、网银等多种支付方式</td>
</tr>
<tr>
<td rowspan="1">获取发票</td>
<td>swan.chooseInvoiceTitle</td>
<td>选择用户的发票抬头</td>
</tr>
<tr>
<td rowspan="2">打开小程序</td>
<td>swan.navigateToSmartProgram</td>
<td>打开另一个小程序</td>
</tr>
<tr>
<td>swan.navigateBackSmartProgram</td>
<td>返回到上一个小程序</td>
</tr>
<tr>
<td rowspan="4">页面基础信息</td>
<td>swan.setPageInfo</td>
<td>设置各类页面基础信息</td>
</tr>
<tr>
<td>swan.setMetaDescription</td>
<td>设置 web 版小程序 description meta 信息</td>
</tr>
<tr>
<td>swan.setMetaKeywords</td>
<td>设置 web 版小程序 keywords meta 信息</td>
</tr>
<tr>
<td>swan.setDocumentTitle</td>
<td>动态设置当前页面的标题</td>
</tr>
<tr>
<td rowspan="1">分包预下载</td>
<td>swan.loadSubPackage</td>
<td>提前下载好子包的资源</td>
</tr>
<tr>
<td rowspan="1">更新</td>
<td>swan.getUpdateManager</td>
<td>获取全局唯一的版本更新管理器,用于管理小程序更新</td>
</tr>
<tr>
<td rowspan="1">调试</td>
<td>swan.setEnableDebug</td>
<td>设置是否打开调试开关,此开关对正式版也能生效</td>
</tr>
<tr>
<td rowspan="1">数据分析</td>
<td>swan.reportAnalytics</td>
<td>自定义分析数据上报接口</td>
</tr>
<tr>
<td rowspan="4">定时器</td>
<td>setInterval</td>
<td>设定一个定时器</td>
</tr>
<tr>
<td>clearInterval</td>
<td>取消由 setInterval 设置的定时器</td>
</tr>
<tr>
<td>setTimeout</td>
<td>设定一个定时器</td>
</tr>
<tr>
<td>clearTimeout</td>
<td>取消由 setTimeout 设置的定时器</td>
</tr>
<tr>
<td rowspan="1">风控</td>
<td>swan.getSystemRiskInfo</td>
<td>获取用于得到风控信息的加密信息对象</td>
</tr>
</table>
---
## 一、界面--交互反馈api
```php
1. swan.showToast 显示消息提示框
2. swan.hideToast 隐藏消息提示框
3. swan.showLoading 显示 loading 提示框。需主动调用 swan.hideLoading 才能关闭提示框
4. swan.hideLoading 隐藏 loading 提示框
5. swan.showModal 显示模态对话框
6. swan.showActionSheet 显示操作菜单
```
---
### 1. `swan.showToast` 显示消息提示框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
title|string|是|提示的内容
icon|string|否|图标
image|string|否|自定义图标的本地路径,image 的优先级高于 icon
duration|number|否|提示的延迟时间
mask|boolean|否|是否显示透明蒙层,防止触摸穿透
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> icon合法值:
**属性**|**描述**
---|---
success|显示成功图标,此时 title 文本最多显示 7 个汉字长度
loading|显示加载图标,此时 title 文本最多显示 7 个汉字长度
none|不显示图标,此时 title 文本最多可显示两行
> js示例:
```js
Page({
onLoad: function (options) {
swan.showToast({
title: '成功',
icon: 'success',
image: 'img/1.png', // 放在小程序根目录,icon就不会显示了
duration : 1000,
mask : true,
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 2. `swan.hideToast` 隐藏消息提示框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.hideToast({
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 3. `swan.showLoading` 显示 loading 提示框。需主动调用 `swan.hideLoading` 才能关闭提示框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
title|string|是|提示的内容
mask|boolean|否|是否显示透明蒙层,防止触摸穿透
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.showLoading({
title: '加载中',
mask : true,
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 4. `swan.hideLoading` 隐藏 loading 提示框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.hideLoading({
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 5. `swan.showModal` 显示模态对话框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
title|string|是|提示的标题
content|string|是|提示的内容
showCancel|boolean|否|是否显示取消按钮
cancelText|string|否|取消按钮的文字,最多 4 个字符
cancelColor|string|否|取消按钮的文字颜色,必须是 16 进制格式的颜色字符串
confirmText|string|否|确认按钮的文字,最多 4 个字符
confirmColor|string|否|确认按钮的文字颜色,必须是 16 进制格式的颜色字符串
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.showModal({
title: '提示',
content: '这是一个模态弹窗',
showCancel : true,
cancelText : '取消按钮',
cancelColor : '#333',
confirmText : '确定按钮',
confirmColor : 'red',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 6. `swan.showActionSheet` 显示模态对话框
**属性**|**类型**|**必填**|**描述**
---|---|---|---
itemList|Array|是|按钮的文字数组,数组长度最大为 6
itemColor|string|否|按钮的文字颜色
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.showActionSheet({
itemList: [
'欧阳克',
'黄蓉',
'郭靖',
'杨康',
'穆念慈'
],
itemColor: '#333',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
## 二、界面--导航api
```php
1. swan.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
2. swan.reLaunch 关闭所有页面,打开到应用内的某个页面
3. swan.redirectTo 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
4. swan.navigateTo 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
5. swan.navigateBack 关闭当前页面,返回上一页面或多级页面
```
---
### 1. `swan.switchTab` 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
**属性**|**类型**|**必填**|**描述**
---|---|---|---
url|string|是|需要跳转的 tabBar 页面的路径,路径后不能带参数。
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.switchTab({
url: 'a',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
> app.json示例:
```json
{
"tabBar": {
"list": [
{
"pagePath": "index",
"text": "首页"
},
{
"pagePath": "a",
"text": "A页面"
}
]
}
}
```
---
### 2. `swan.reLaunch` 关闭所有页面,打开到应用内的某个页面
**属性**|**类型**|**必填**|**描述**
---|---|---|---
url|string|是|需要跳转的应用内页面路径,路径后可以带参数。
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.reLaunch({
url: 'a?id=1',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 3. `swan.redirectTo` 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
**属性**|**类型**|**必填**|**描述**
---|---|---|---
url|string|是|需要跳转的应用内非 tabBar 的页面的路径, 路径后可以带参数。
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.redirectTo({
url: 'a?id=1',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 4. `swan.navigateTo` 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
**属性**|**类型**|**必填**|**描述**
---|---|---|---
url|string|是|需要跳转的应用内非 tabBar 的页面的路径, 路径后可以带参数。
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.navigateTo({
url: 'a?id=1',
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 5. `swan.navigateBack` 关闭当前页面,返回上一页面或多级页面
**属性**|**类型**|**必填**|**描述**
---|---|---|---
delta|string|是|返回的页面数,如果 delta 大于现有页面数,则返回到首页,最多10层
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.navigateBack({
delta: 10,
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
## 三、网络--请求api
```php
1. swan.request 发起 HTTPS 网络请求
```
---
### 1. `swan.request` 发起 HTTPS 网络请求
**属性**|**类型**|**必填**|**描述**
---|---|---|---
url|number|是|开发者服务器接口地址
data|string/object/ArrayBuffer|否|请求的参数
header|Object|否|设置请求的 header,header 中不能设置 Referer
method|string|否|HTTP 请求方法
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.request({
url: 'http://apis.juhe.cn/mobile/get',
data : {
key : '4d6cce531387deeedf359687fb04c163',
phone : '13429667914'
},
header: {
'content-type': 'application/json'
},
method : 'POST',
success(e){
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
> 接口返回的json数据不能使用,请看这里:
>> 对于 POST 方法且 header['content-type'] 为 application/json 的数据,会对数据进行 JSON 序列化
>> 对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string
---
## 四、媒体--图片api
```php
1. swan.previewImage 在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作。
```
---
### 1. `swan.previewImage` 在新页面中全屏预览图片
**属性**|**类型**|**必填**|**描述**
---|---|---|---
urls|Array|是|需要预览的图片链接列表
current|string|否|当前显示图片的链接
success|function|否|接口调用成功的回调函数
fail|function|否|接口调用失败的回调函数
complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
wx.previewImage({
current: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558711326985&di=3386e412418b6826b3b1fcbf55f72165&imgtype=0&src=http%3A%2F%2Fk.zol-img.com.cn%2Fsjbbs%2F7692%2Fa7691515_s.jpg',
urls: [
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558711326985&di=3386e412418b6826b3b1fcbf55f72165&imgtype=0&src=http%3A%2F%2Fk.zol-img.com.cn%2Fsjbbs%2F7692%2Fa7691515_s.jpg',
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558711326983&di=37ac9ac0c2c7dccaa914d5ebae940325&imgtype=0&src=http%3A%2F%2Fpic37.nipic.com%2F20140110%2F17563091_221827492154_2.jpg',
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558711326983&di=e32936aa5551a260c99cb4deaaf6c141&imgtype=0&src=http%3A%2F%2Fpic35.nipic.com%2F20131115%2F13972544_160943053001_2.jpg'
]
success(){
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
## 五、开放接口api
```php
1. swan.authorize 提前向用户发起授权请求
2. swan.chooseAddress 获取用户收货地址
3. swan.chooseInvoiceTitle 选择用户的发票抬头
4. swan.chooseInvoice 选择用户已有的发票
5. swan.getUserInfo 获取用户信息
```
---
### 1. `swan.authorize` 提前向用户发起授权请求
**属性**|**类型**|**描述**
---|---|---
scope|string|需要获取权限的 scope
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> scope合法值:
**属性**|**对应接口**|**描述**
---|---|---
scope.address|swan.chooseAddress|通讯地址
scope.invoiceTitle|swan.chooseInvoiceTitle|发票抬头
scope.invoice|swan.chooseInvoice|获取发票
scope.userInfo|swan.getUserInfo|用户信息
> js示例:
```js
Page({
onLoad: function (options) {
swan.authorize({
scope: 'scope.address',
success(e) {
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 2. `swan.chooseAddress` 获取用户收货地址
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例1:
```js
Page({
onLoad: function (options) {
swan.chooseAddress({
success(e) {
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
});
}
})
```
> js示例2:
```js
Page({
onLoad: function (options) {
swan.authorize({
scope: 'scope.address',
success(e) {
swan.chooseAddress({
success(e) {
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
});
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 5. `swan.getUserInfo` 获取用户信息
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例1:
```js
Page({
onLoad: function (options) {
// 这样调用,会失败
swan.getUserInfo({
success(e) {
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
});
}
})
```
> js示例2:
```js
Page({
onLoad: function (options) {
// 授权成功后,还是失败
// 因为微信已经禁止直接调用微信用户信息,需要用户主动请求
swan.authorize({
scope: 'scope.userInfo',
success(e) {
swan.getUserInfo({
success(e) {
console.log(e);
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
});
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
### `button` 按钮
**属性**|**类型**|**描述**
---|---|---|---
open-type|string|开放能力
bindgetuserinfo|eventhandle|用户点击该按钮时,会返回获取到的用户信息,open-type="getUserInfo"时有效
bindcontact|eventhandle|客服消息回调,open-type="contact"时有效
bindgetphonenumber|eventhandle|获取用户手机号回调,open-type=getPhoneNumber时有效
> js示例3:
```js
Page({
onLoad: function (options) {
a(e){
console.log(e);
}
}
})
```
```html
<button open-type="getUserInfo" bindgetuserinfo='a'>登录</button>
```
---
## 六、设备api
```php
1. swan.setClipboardData 设置系统剪贴板的内容
2. swan.getClipboardData 获取系统剪贴板的内容
3. swan.getNetworkType 获取网络类型
4. swan.makePhoneCall 拨打电话
5. swan.scanCode 调起客户端扫码界面进行扫码
6. swan.getSystemInfo 获取系统信息
```
---
### 1、`swan.setClipboardData` 设置系统剪贴板的内容
**属性**|**类型**|**描述**
---|---|---
data|string|剪贴板的内容
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.setClipboardData({
data: '我是欧阳克',
success(e) {
console.log(e);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 2、`swan.getClipboardData` 获取系统剪贴板的内容
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.getClipboardData({
success(e) {
console.log(e);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 3、`swan.getNetworkType` 获取网络类型
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.getNetworkType({
success(e) {
console.log(e);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 4、`swan.makePhoneCall` 拨打电话
**属性**|**类型**|**描述**
---|---|---
phoneNumber|string|需要拨打的电话号码
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.makePhoneCall({
phoneNumber : '13843843843',
success(e) {
console.log(e);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 5、`swan.scanCode` 调起客户端扫码界面进行扫码
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> js示例:
```js
Page({
onLoad: function (options) {
swan.scanCode({
success(e) {
console.log(e);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
---
### 6、`swan.getSystemInfoSync` 和 `swan.getSystemInfo` 获取系统信息
**属性**|**类型**|**描述**
---|---|---
success|function|接口调用成功的回调函数
fail|function|接口调用失败的回调函数
complete|function|接口调用结束的回调函数(调用成功、失败都会执行)
> 成功返回值:
**属性**|**类型**|**描述**
---|---|---
brand|string|设备品牌
model|string|设备型号
pixelRatio|string|设备像素比
screenWidth|string|屏幕宽度
screenHeight|number|屏幕高度
windowWidth|number|可使用窗口宽度
windowHeight|number|可使用窗口高度
statusBarHeight|number|状态栏的高度
navigationBarHeight|number|导航栏的高度
language|string|宿主 App 设置的语言
version|string|宿主 App 版本号
system|string|操作系统及版本
platform|string|客户端平台
fontSizeSetting|number|用户字体大小设置
> js示例:
```js
Page({
onLoad: function (options) {
swan.getSystemInfo({
success(){
console.log(res);
console.log('成功');
},
fail(){
console.log('失败');
},
complete(){
console.log('成功或失败');
}
})
}
})
```
- 序言
- PHP基础
- 认识PHP
- 环境安装
- PHP语法
- 流程控制
- PHP数组
- PHP函数
- PHP类与对象
- PHP命名空间
- PHP7新特性
- PHP方法库
- PHP交互
- 前后端交互
- 项目常规开发流程
- MySQL数据库
- 会话控制
- Ajax分页技术
- 细说函数
- 类与对象
- 对象进阶
- 类与对象进阶
- OOP面向对象
- 设计模式
- 路由与模板引擎
- 异常类
- PHP爬虫
- PHP抓取函数
- PHP匹配函数
- 正则表达式
- PHP字符串函数
- 抓取实战
- PHP接口
- 了解接口
- PHP插件
- PHPSpreadsheet
- ThinkPHP6
- 安装
- 架构
- 数据库
- 数据库操作
- 视图
- 模版
- 模型
- 杂项
- 命令行
- 交互
- 微信小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- 百度小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- Linux
- 服务器上线流程
- 安装svn
- MySQL
- 认识MySQL
- MySQL函数
- 杂项
- composer依赖管理工具