微信小程序事件转化
微信小程序App和Page的事件属性转化规则#
APM设计的内置事件名与微信小程序生命周期函数对照表#
| 事件名 | 生命周期/回调 | 说明 |
|---|---|---|
| $mp_app_initiated | App.onLaunch | 小程序初始化(冷启动),小程序进程被杀死,重新打开时会触发 |
| $mp_app_opened | App.onShow | 打开小程序(后台进入前台) |
| $mp_app_closed | App.onHide | 离开小程序,点击小程序右上角退出按钮、微信进入后台、进入小程序关于页面、手机锁屏、小程序进程被杀死时 |
| 无(暂时不设计) | App.onError | 错误监听函数 |
| 无(暂时不设计) | App.onPageNotFound | 页面不存在监听函数 |
| 无(暂时不设计) | App.onUnhandledRejection | 未处理的 Promise 拒绝事件监听函数 |
| 无(暂时不设计) | App.onThemeChange | 监听系统主题变化 |
| $mp_page_opened | Page.onLoad | 加载小程序页面 |
| $mp_page_visited | Page.onShow | 显示小程序页面 |
| $mp_page_closed | Page.onHide | 卸载小程序页面 |
| $mp_page_left | Page.onUnload | 隐藏小程序页面 |
| 无(暂时不设计) | Page.onPullDownRefresh | 监听用户下拉动作 |
| 无(暂时不设计) | Page.onReachBottom | 页面上拉触底事件的处理函数 |
| $mp_page_shared | Page.onShareAppMessage | 分享小程序 |
| $mp_page_shared_timeline | Page.onShareTimeline | 用户点击右上角转发到朋友圈 |
| $mp_page_added_favorite | Page.onAddToFavorites | 用户点击右上角收藏 |
| 无(暂时不设计) | Page.onPageScroll | 页面滚动触发事件的处理函数 |
| 无(暂时不设计) | Page.onResize | 页面尺寸改变时触发,详见 响应显示区域变化 |
| 无(暂时不设计) | Page.onTabItemTap | 当前是 tab 页时,点击 tab 时触发 |
| $mp_page_opened_from_share | 无 | 从分享打开小程序 |
1. $mp_app_initiated#
$mp_app_initiated是App.onLaunch产生时使用的内置事件名。它需要如下属性:
2. $mp_app_opened#
$mp_app_opened是App.onShow产生时使用的内置事件名。它需要如下属性:
3. $mp_app_closed#
$mp_app_closed是App.onHide产生时使用的内置事件名。它需要如下属性:
6. $mp_page_opened#
$mp_page_opened是Page.onLoad产生时使用的内置事件名。它需要如下属性:
7. $mp_page_visited#
$mp_page_visited是Page.onShow产生时使用的内置事件名。它需要如下属性:
8. $mp_page_closed#
$mp_page_closed是Page.onHide产生时使用的内置事件名。它需要如下属性:
9. $mp_page_left#
$mp_page_left是Page.onUnload产生时使用的内置事件名。它需要如下属性:
10. $mp_page_shared#
$mp_page_shared是Page.onShareAppMessage产生时使用的内置事件名。它需要如下属性:
11. $mp_page_shared_timeline#
$mp_page_shared_timeline是Page.onShareTimeline产生时使用的内置事件名。它需要如下属性:
12. $mp_page_added_favorite#
$mp_page_added_favorite是Page.onAddToFavorites产生时使用的内置事件名。它需要如下属性:
13. $mp_page_opened_from_share#
$mp_page_opened_from_share是用户从分享的小程序卡片打开小程序页面。它需要如下属性:
品牌旧数据转化处理#
处理逻辑:App生命周期事件和Page生命周期事件#
- 事件属性已经设计,请看 https://docs.google.com/spreadsheets/d/1a-PUoYoKLV_DTfMe9I8jAq-IFrcETu9I0NbBX-ZRxwA/edit#gid=898934837
- eventType = 1 App生命周期事件 按 微信小程序App和Page的事件属性转化规则 说明处理
- eventType = 2 Page生命周期事件 按 微信小程序App和Page的事件属性转化规则 说明处理
处理逻辑:$page_url的参数#
- 只处理APP和PAGE生命周期事件的的$page_url属性,其它事件的$page_url暂时不需要处理。
- 根据 https://github.com/catalyst8/Panmeta_Issues/issues/3375 的方案 处理$page_url的参数
- 使用脚本生成需要处理的属性列表,因为我们需要把列表导入APM CEV;包括事件和属性,所以必须有列表。(列表至少需要https://docs.google.com/spreadsheets/d/1a-PUoYoKLV_DTfMe9I8jAq-IFrcETu9I0NbBX-ZRxwA/edit#gid=898934837 的BCDE列)。
处理 eventType = 3 WXML组件事件#
- 在 APM CEV添加一个事件。事件名:wxml_event(显示名字:WXML事件),有一个属性名为:data-p_event_name(text)
- 事件名:wxmlevent(显示名字:WXML事件),有一个属性名为:data-p_event_name,值是对应的事件名,例如:ArchivesCenterBadgeF_ButtonClickF_ViewBadgeF锋芒初露_3F_20200622091。
处理 eventType = 5 小程序开发者通过JSSDK提供的API setEvent 自定义的事件#
- 生成需要处理的事件列表,因为我们需要把事件列表导入APM CEV;只需要事件,不需要属性。
- 事件名不需要更改
- 事件名字不符合APM要求的事件无需转化,直接丢弃。例如事件名字有空格,有特殊符号,有中文,如下面的例子。
- 下面的事件无需转化
处理 eventType = 4 wx对象内API(内置API)调用追踪事件#
- 只处理下面三个API,其它内置API不需要处理。
- wx.getSystemInfo:把它的值分解为App和Page生命周期事件的属性
- wx.getNetworkType:它只有一个值,设为属性$network_type,这个属性是App和Page生命周期事件的属性
- wx.getBatteryInfo:它有两个值,设为属性$battery_power和$is_charging,这两个属性是$mp_page_visited事件的属性
目前MP系统里的数据例子#
新的APM MP JSSDK#
issue: https://github.com/catalyst8/Panmeta_Issues/issues/3176