App

解释: App 函数用来注册一个智能小程序。接受一个 Object 作为参数,用以指定智能小程序的生命周期函数等。

注: App函数必须在 app.js 中被调用一次。该函数在整个小程序中不能被调用多次,否则会出现无法预期的后果。

Web 态说明:

由于 Web 态框架暂不支持当前是否进入前、后台的状态检测,因此在下列场景中,App.onShow、App.onHide 生命周期无法触发

  • 当 Web 态小程序从后台切换至前台时,如从任务管理器进入、或关闭显示在上层的语音助手等,App.onShow 生命周期无法触发
  • 由于 Web 态框架暂不支持当前是否进入前、后台的状态检测,因此 Web 态小程序暂不支持 App.onHide 生命周期

参数

Object object

属性类型默认值描述触发时机Web 态说明
其他Any开发者可以添加任意的函数或者数据到 Object 参数中, 用 this 可以访问。
onLoginFunction生命周期函数 — 监听 web 态小程序登录成功(web 态小程序独有)当小程序初次登录成功后,会触发 onLogin (全局只触发一次)。
onLaunchFunction生命周期函数 — 监听小程序的初始化 。当小程序初始化完成时,会触发 onLaunch (全局只触发一次)。
onShowFunction生命周期函数 — 监听小程序的显示 。当小程序初始化,或从后台进入前台显示,会触发 onShow 。仅在小程序初始化时触发
onHideFunction生命周期函数 — 监听小程序的隐藏 。当小程序从前台进入后台,会触发 onHide。暂不支持
onErrorFunction错误监听函数。小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息。
onPageNotFoundFunction页面不存在监听函数。小程序要打开的页面不存在时触发,会带上页面信息回调该函数。

onLogin生命周期解释

  • app的onLogin生命周期是web小程序独有的且只有第一次登录成功后触发,百度App端的小程序没有此生命周期。
  • web小程序设计onLogin生命周期的原因:web小程序的登录不是在小程序内部页面进行的,是需要跳转登录页面进行登录,所以小程序未登录状态下进行swan.login的调用会进入登录页面进行登录所以会导致小程序的运行时环境会销毁,所以登录成功后开发者设置的success回调无法进行,所以需要设计一个时机(onLogin生命周期)把登录成功后的code给到开发者。
  • 注意onLogin生命周期的触发时机在onLaunch之前,当时页面的dom还未ready。

名词解释:前台、后台:当用户点击右上角的关闭,或者按了设备的 Home 键离开智能小程序,智能小程序没有直接销毁,而是进入到了后台;当再次进入智能小程序,又会从后台进入前台。

注意:只有在以下情况小程序才可能会被动销毁,参考运行机制App - 图1:

  • 进入后台超过5分钟;
  • 系统资源占用过高;
  • 打开小程序数量超过系统支持上限(系统按照小程序被打开的先后顺序进行销毁)。

代码示例

  1. // app.js
  2. App({
  3. onLaunch(options) {
  4. // Do something initial when launch.
  5. },
  6. onShow(options) {
  7. // Do something when show.
  8. },
  9. onHide() {
  10. // Do something when hide.
  11. },
  12. onError(errMsg) {
  13. console.log(errMsg); // 发生错误时,回调此方法并传递错误信息
  14. },
  15. globalData: 'This is global data'
  16. });

onLaunch(Object object)

小程序初始化完成时触发,全局只触发一次。

字段类型说明
sceneString打开智能小程序的场景值,scene值统一由百度小程序场景值管理中心在B端平台统一配置后下发到宿主(例如百度App),调起协议中会携带相应入口的scene值。
pathString打开小程序的路径。
queryObject打开当前页面路径中的参数。
shareTicketString标记转发对象。
referrerInfoObject从另一个小程序打开该小程序时,返回此字段。
referrerInfo.appIdString来源小程序的 appKey。
referrerInfo.extraDataObject来源小程序传过来的数据。

名词解释:

  • 场景值: 智能小程序被打开时,其来源渠道的标识(例如: 从百度搜索结果打开、从百度信息流打开),开发者可以利用该字段统计小程序在什么场景下被打开,更多场景值
  • 调起协议: 宿主(例如百度App)用于识别一个小程序被打开时的初始化信息(例如: 小程序的appKey、path、query等),由该类信息构成的一个协议。

onShow(Object object)

小程序启动,或从后台进入前台显示时触发。也可以使用 swan.onAppShowApp - 图2 绑定监听。

参数:swan.onAppShowApp - 图3 一致

onHide()

小程序从前台进入后台时触发。也可以使用 swan.onAppHideApp - 图4 绑定监听。

onError(Object object)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 swan.onErrorApp - 图5 绑定监听。

参数:swan.onErrorApp - 图6 一致

onPageNotFound(Object object)

小程序要打开的页面不存在时触发。也可以使用 swan.onPageNotFoundApp - 图7 绑定监听。注意事项请参考 swan.onPageNotFoundApp - 图8

参数:swan.onPageNotFoundApp - 图9 一致

代码示例

  1. // app.js
  2. App({
  3. onPageNotFound(res) {
  4. // 如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
  5. swan.redirectTo({
  6. url: 'path/to/otherPage'
  7. });
  8. }
  9. });