注册小程序
App(Object)
App()
函数用来注册一个小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。
App() 必须在 app.js
中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
Object参数说明:
属性 | 类型 | 描述 | 触发时机 | 版本 |
---|---|---|---|---|
onLaunch | function | 生命周期回调—监听小程序初始化 | 小程序初始化完成时(全局只触发一次) | |
onShow | function | 生命周期回调—监听小程序显示 | 小程序启动,或从后台进入前台显示时 | |
onHide | function | 生命周期回调—监听小程序隐藏 | 小程序从前台进入后台时 | |
onError | function | 错误监听函数 | 小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息 | |
onPageNotFound | function | 页面不存在监听函数 | 小程序要打开的页面不存在时触发,会带上页面信息回调该函数 | |
onThemeChange | function | 系统主题切换回调 | 系统切换主题时触发,也可以使用 bl.onThemeChange 绑定监听 (目前只支持iOS) | 3.8.0 |
其他 | Any | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问 |
前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开APP,小程序并没有直接销毁,而是进入了后台;当再次进入APP或再次打开小程序,又会从后台进入前台。 需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。
onLaunch(Object)
小程序初始化完成时触发,全局只触发一次。
onLaunch参数说明
字段 | 类型 | 说明 | 版本 |
---|---|---|---|
path | string | 启动小程序的路径 | |
query | object | 启动小程序的 query 参数 | |
appId | string | 小程序的appId | |
virtualId | string | 虚拟ID,同一个小程序挂接给不同up主会有不同的虚拟Id | |
envVersion | string | 小程序所在环境,为空表示线上环境,还有dev(开发)/precheck(预览审核)/predev(预览开发)等值 | 1.5.2 |
referrerInfo | object | 当场景为由从另一个小程序打开时,返回此字段 | |
referrerInfo.appId | string | 来源小程序appId | |
referrerInfo.extraData | object | 来源小程序传过来的数据 |
onShow(Object)
小程序启动,或从后台进入前台显示时触发。
onShow参数说明
与 onLaunch
一致
onHide()
小程序从前台进入后台时触发。
onError(string)
小程序发生脚本错误,或者 api 调用失败时触发。
onError参数说明
名称 | 类型 | 说明 | 版本 |
---|---|---|---|
error | string | 错误信息,包含堆栈 |
onPageNotFound(Object)
小程序要打开的页面不存在时触发。
onPageNotFound参数说明
字段 | 类型 | 说明 | 版本 |
---|---|---|---|
path | string | 不存在页面的路径 | |
query | object | 打开不存在页面的 query | |
isEntryPage | boolean | 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) |
开发者可以在 onPageNotFound
回调中进行重定向处理,但必须在回调中同步处理,异步处理(例如 setTimeout 异步执行)无效。
注意:
- 如果开发者没有添加
onPageNotFound
监听,当跳转页面不存在时,将推入客户端原生的页面不存在提示页面。 - 如果
onPageNotFound
回调中又重定向到另一个不存在的页面,将推入客户端原生的页面不存在提示页面,并且不再回调onPageNotFound
。
onThemeChange(Object object)
iOS 基础库 3.8.0 开始支持,低版本需做兼容处理 目前只支持 iOS
bl.onThemeChange 一致
参数:与bl.getApp()
bl.getApp()
方法可以用来获取到小程序 App(object)
中的 object
实例。
注意
- 不要在定义于
App()
内的函数中调用bl.getApp()
,使用this
就可以拿到 app 实例。 - 通过
bl.getApp()
获取实例之后,不要私自调用生命周期函数。