Appearance
8.9 API
前缀:wx.
方法:wx.get(获取)、wx.set(写入)
回调函数:success(成功)、fail(失败)、complete(完成)
回调函数类型:直调函数(程序运行时立即执行被调函数)、回调函数(程序运行之后执行被调函数。包括登记回调函数和执行回调函数)
8.9.1 基础
环境变量
wx.env- 环境变量对象wx.env.USER_DATA_PATH- 文件系统中的用户目录路径 (本地路径)
兼容性检查
wx.canIUse- 判断小程序的API,回调,参数,组件等是否在当前版本可用- 格式:
${API}.${method}.${param}.${option}或${component}.${attribute}.${option} - 示例:js
wx.canIUse('console.log') wx.canIUse('getSystemInfo.success.screenWidth') wx.canIUse('button.open-type.contact')
- 格式:
系统
wx.openSystemBluetoothSetting- 打开系统蓝牙设置页。仅支持安卓wx.openAppAuthorizeSetting- 打开应用授权设置页wx.getWindowInfo- 获取窗口信息wx.getSystemSetting- 获取系统设置wx.getSkylineInfoSync- 同步获取当前运行环境对于 Skyline 渲染引擎 的支持情况wx.getSkylineInfo- 异步获取当前运行环境对于 Skyline 渲染引擎 的支持情况wx.getRendererUserAgent- 获取 Webview 小程序的 UserAgentwx.getDeviceInfo- 获取设备信息wx.getDeviceBenchmarkInfo- 获取设备性能得分和机型档位数据wx.getAppBaseInfo- 获取应用基础信息wx.getAppAuthorizeSetting- 获取应用授权信息
更新
wx.updateWeChatApp- 更新微信版本wx.getUpdateManager- 获取全局唯一的版本更新管理器
小程序生命周期
wx.onApiCategoryChange- 监听 API 类别变化事件wx.offApiCategoryChange- 移除 API 类别变化事件的监听函数wx.getLaunchOptionsSync- 获取小程序启动时的参数。与 App.onLaunch 的回调参数一致。wx.getEnterOptionsSync- 获取本次小程序启动时的参数。如果当前是冷启动,则返回值与 App.onLaunch 的回调参数一致;如果当前是热启动,则返回值与 App.
应用级事件
wx.postMessageToReferrerPage- 向来源页面发送消息wx.postMessageToReferrerMiniProgram- 向跳转的源小程序发送消息,源小程序可在 wx.onShow 或 wx.getEnterOptionsSync 中通过 extraData 接收消息wx.onUnhandledRejection- 监听未处理的 Promise 拒绝事件wx.offUnhandledRejection- 移除未处理的 Promise 拒绝事件的监听函数wx.onThemeChange- 监听系统主题变化事件wx.offThemeChange- 移除系统主题变化事件的监听函数wx.onPageNotFound- 监听页面不存在事件wx.offPageNotFound- 移除页面不存在事件的监听函数wx.onLazyLoadError- 监听分包加载失败事件wx.offLazyLoadError- 移除分包加载失败事件的监听函数wx.onError- 监听小程序错误事件wx.offError- 移除小程序错误事件的监听函数wx.onAudioInterruptionEnd- 监听音频中断结束事件wx.offAudioInterruptionEnd- 移除音频中断结束事件的监听函数wx.onAudioInterruptionBegin- 监听音频因为受到系统占用而被中断开始事件wx.offAudioInterruptionBegin- 移除音频中断开始事件的监听函数wx.onAppShow- 监听小程序切前台事件wx.offAppShow- 移除小程序显示事件的监听函数wx.onAppHide- 监听小程序切后台事件wx.offAppHide- 移除小程序隐藏事件的监听函数
路由事件
执行顺序
路由事件的执行顺序如下(以页面跳转为例):
wx.onBeforeAppRoute- 路由逻辑执行前wx.onBeforePageUnload- 当前页面销毁前wx.onBeforePageLoad- 新页面实例化前wx.onAppRoute- 路由逻辑执行后wx.onAfterPageUnload- 当前页面销毁后wx.onAfterPageLoad- 新页面实例化完成wx.onAppRouteDone- 路由动画执行完成
事件详解
路由前事件:
wx.onBeforeAppRoute- 监听路由事件下发后,执行路由逻辑前的事件监听wx.offBeforeAppRoute- 移除路由事件下发后,执行路由逻辑前的事件监听
应用场景:路由拦截、权限检查、数据预处理
页面销毁事件:
wx.onBeforePageUnload- 监听路由事件引起现有页面实例销毁时,页面实例销毁前的事件监听wx.offBeforePageUnload- 移除路由事件引起现有页面实例销毁时,页面实例销毁前的事件监听
应用场景:数据保存、资源清理、状态记录
wx.onAfterPageUnload- 监听路由事件引起现有页面实例销毁时,页面实例销毁后的事件监听wx.offAfterPageUnload- 移除路由事件引起现有页面实例销毁时,页面实例销毁后的事件监听
应用场景:内存清理、统计上报
页面加载事件:
wx.onBeforePageLoad- 监听路由事件引起新的页面实例化时,页面实例化前的事件监听wx.offBeforePageLoad- 移除路由事件引起新的页面实例化时,页面实例化前的事件监听
应用场景:参数验证、初始化配置
wx.onAfterPageLoad- 监听路由事件引起新的页面实例化时,页面实例化完成的事件监听wx.offAfterPageLoad- 移除路由事件引起新的页面实例化时,页面实例化完成的事件监听
应用场景:数据加载、UI初始化、埋点统计
路由后事件:
wx.onAppRoute- 监听路由事件下发后,执行路由逻辑后的事件监听wx.offAppRoute- 移除路由事件下发后,执行路由逻辑后的事件监听
应用场景:路由完成后的业务逻辑处理
动画完成事件:
wx.onAppRouteDone- 监听当前路由动画执行完成的事件监听wx.offAppRouteDone- 移除当前路由动画执行完成的事件监听
应用场景:动画完成后的回调、性能监控
调试
wx.setEnableDebug- 设置是否打开调试开关wx.getRealtimeLogManager- 获取实时日志管理器wx.getLogManager- 获取日志管理器
性能
wx.reportPerformance- 上报性能数据wx.preloadWebview- 预加载 WebViewwx.preloadSkylineView- 预加载 Skyline 视图wx.preloadAssets- 为视图层预加载媒体资源文件, 目前支持:font,imagewx.getPerformance- 获取性能管理器
分包加载
wx.preDownloadSubpackage- 预下载分包,目前只开放了下载 worker 分包的能力
加密
wx.getUserCryptoManager- 获取用户加密管理器
8.9.2 跳转
wx.restartMiniProgram- 重启当前小程序wx.openOfficialAccountProfile- 打开公众号主页wx.openOfficialAccountArticle- 打开公众号文章页wx.openEmbeddedMiniProgram- 打开半屏小程序wx.onEmbeddedMiniProgramHeightChange- 监听半屏小程序可视高度变化事件wx.offEmbeddedMiniProgramHeightChange- 移除半屏小程序可视高度变化事件的监听函数wx.navigateToMiniProgram- 打开另一个小程序wx.navigateBackMiniProgram- 返回到上一个小程序wx.exitMiniProgram- 退出当前小程序
8.9.3 聊天工具
wx.shareVideoToGroup- 转发视频到聊天wx.shareImageToGroup- 转发图片到聊天wx.shareFileToGroup- 转发文件到聊天wx.shareEmojiToGroup- 转发表情到聊天wx.shareAppMessageToGroup- 转发小程序卡片到聊天wx.selectGroupMembers- 选择聊天室的成员,并返回选择成员的 group_openid。若当前为群聊,则会拉起成员选择器;若当前为单聊,则直接返回双方的 group_openidwx.openChatTool- 进入聊天工具模式wx.notifyGroupMembers- 提醒用户完成任务,标题长度不超过 30 个字符,支持中英文和数字,中文算2个字符。wx.getChatToolInfo- 获取聊天工具模式下的群聊信息。
8.9.4 转发
wx.updateShareMenu- 更新转发按钮状态和显示内容wx.showShareMenu- 显示转发按钮wx.showShareImageMenu- 打开图片分享面板wx.shareVideoMessage- 直接分享视频到聊天wx.shareFileMessage- 直接分享文件到聊天wx.onCopyUrl- 监听用户复制页面链接事件wx.offCopyUrl- 取消监听用户复制页面链接事件wx.hideShareMenu- 隐藏转发按钮、wx.authPrivateMessage- 校验私密消息(私密消息跳转校验)
8.9.5 界面
交互
wx.showToast- 显示消息提示框wx.hideToast- 隐藏消息提示框wx.showModal- 显示模态对话框wx.showLoading- 显示 loading 提示框wx.hideLoading- 隐藏 loading 提示框wx.showActionSheet- 显示操作菜单wx.enableAlertBeforeUnload- 开启小程序页面返回询问对话框wx.disableAlertBeforeUnload- 关闭小程序页面返回询问对话框
导航栏
wx.showNavigationBarLoading- 显示导航栏加载动画wx.hideNavigationBarLoading- 隐藏导航栏加载动画wx.setNavigationBarTitle- 设置导航栏标题wx.setNavigationBarColor- 设置导航栏颜色wx.hideHomeButton- 隐藏返回首页按钮
背景
wx.setBackgroundTextStyle- 设置下拉背景字体、loading 图的样式wx.setBackgroundColor- 设置窗口的背景色
Tab Bar
wx.setTabBarStyle- 设置 tabBar 的样式wx.showTabBar- 显示 tabBarwx.hideTabBar- 隐藏 tabBarwx.showTabBarRedDot- 显示 tabBar 上指定 item 的红点wx.hideTabBarRedDot- 隐藏 tabBar 上指定 item 的红点wx.setTabBarItem- 动态设置 tabBar 上的文本、图片和选中状态wx.setTabBarBadge- 设置 tabBar 上指定 item 的右上角徽标wx.removeTabBarBadge- 移除 tabBar 上指定 item 的右上角徽标
字体
wx.loadFontFace- 动态加载网络字体wx.loadBuiltInFontFace- 加载内置字体
下拉刷新
wx.stopPullDownRefresh- 停止当前页面下拉刷新wx.startPullDownRefresh- 开始下拉刷新。调用后触发下拉刷新动画,效果与用户手动下拉刷新一致
滚动
wx.pageScrollTo- 将页面滚动到目标位置,支持选择器和滚动距离两种方式定位ScrollViewContext- 增强 ScrollView 实例
动画
wx.createAnimation- 创建动画实例Animation- 过渡动画实例
自定义组件
wx.nextTick- 延迟一部分操作到下一个时间片再执行。(类似于 setTimeout)
菜单
wx.onOnUserTriggerTranslation- 监听用户触发小程序菜单中翻译功能的事件wx.offOnUserTriggerTranslation- 取消监听用户触发翻译功能的事件wx.onMenuButtonBoundingClientRectWeightChange- 监听菜单按钮(右上角胶囊按钮)的布局位置信息变化事件wx.offMenuButtonBoundingClientRectWeightChange- 取消监听菜单按钮(右上角胶囊按钮)的布局位置信息变化事件wx.getMenuButtonBoundingClientRect- 获取菜单按钮(右上角胶囊按钮)的布局位置信息。坐标信息以屏幕左上角为原点
窗口
wx.onWindowStateChange- 监听小程序窗口状态变化事件。仅适用于 PC 平台wx.offWindowResize- 移除小程序窗口状态变化事件的监听函数wx.onWindowResize- 监听窗口尺寸变化事件wx.offWindowResize- 移除窗口尺寸变化事件的监听函数wx.checkIsPictureInPictureActive- 返回当前是否存在小窗播放(小窗在 video/live-player/live-pusher 下可用)
worklet动画
8.9.6 网络
8.9.7 支付
8.9.8 数据缓存
wx.setStorageSync、wx.setStorage- 同步、异步将数据存储在本地缓存中指定的 key 中wx.getStorageSync、wx.getStorage- 同步、异步获取指定 key 对应的内容wx.getStorageInfoSync、wx.getStorageInfo- 同步、异步获取当前 storage 的相关信息wx.removeStorageSync、wx.removeStorage- 同步、异步移除指定 keywx.clearStorageSync、wx.clearStorage- 同步、异步清除 storage 中所有 keywx.batchSetStorageSync、wx.batchSetStorage- 同步、异步批量保存 指定 key 的内容wx.batchGetStorageSync、wx.batchGetStorage- 同步、异步批量保存获取指定 key 的内容wx.createBufferURL- 根据传入的 buffer 创建一个唯一的 URL 存在内存中wx.revokeBufferURL- 根据 URL 销毁存在内存中的数据
数据预拉取和周期性更新
wx.setBackgroundFetchToken- 设置自定义登录态,在周期性拉取数据时带上,wx.getBackgroundFetchToken- 获取设置过的自定义登录态。若无,则返回 fail。wx.onBackgroundFetchData- 监听预拉取数据接口,监听到请求返回后,返回最新的数据wx.getBackgroundFetchData- 监听预拉取数据接口
1.如果小程序已启动,请求还未完成,则返回缓存的旧数据(首次启动,没有缓存,返回空)
2.如果请求已结束,则返回最新的数据
TIP
wx.getBackgroundFetchData可能获取到新或者旧数据,wx.onBackgroundFetchData获取的一定是新数据。因此在实际业务中需要两个 api 配合,保证数据是最新的
深度解析微信小程序数据预拉取API调用的问题与使用方法 wx.getBackgroundFetchData
缓存管理器
8.9.9 数据分析
8.9.10 画布
8.9.11 媒体
8.9.12 位置
wx.openLocation- 使用微信内置地图查看位置wx.onLocationChangeError、offLocationChangeError- 监听、移除持续定位接口返回失败时触发wx.onLocationChange、offLocationChange- 监听、移除实时地理位置变化事件wx.getLocation- 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。wx.getFuzzyLocation- 获取当前的模糊地理位置wx.startLocationUpdate、wx.stopLocationUpdate- 开启、停止监听位置变化wx.startLocationUpdateBackground- 开启小程序在前后台时均可接收位置消息,后台包括离开小程序后继续使用微信(微信仍在前台)、离开微信(微信在后台)两个场景wx.choosePoi- 打开POI列表选择位置,支持模糊定位(精确到市)和精确定位混选wx.chooseLocation- 打开地图选择位置
8.9.13 文件
wx.saveFileToDisk- 保存文件到本地磁盘,仅在 PC 端支持wx.openDocument- 在新开页面打开文档wx.getFileSystemManager- 获取文件系统管理器