在 Kotlin Multiplatform SDK 中追踪流程页面浏览
每当用户在流程中打开某个页面时,SDK 都会向您的应用上报一个 flow_screen_showed 事件。将其转发至 Amplitude、Mixpanel 或您使用的任意产品分析工具,即可将流程页面数据与应用的其他事件一同分析。
要查看用户在流程中的进度,无需任何代码——流程数据图表已在 Adapty 看板中展示了浏览量、完成量以及每个屏幕的流失情况。当你需要将这些数据导入自己的分析系统,并与 Adapty 未知的事件进行关联时,请参考本指南。
开始之前
你需要:
- Adapty Kotlin Multiplatform SDK v4 或更高版本:早期版本中不存在流程分析回调。
- 在此功能上线后发布的流程版本:Adapty 在发布流程时生成屏幕事件,因此在此之前最后一次发布的流程不会上报任何数据。如果应用未收到任何事件,请发布一个新版本的流程后重试。
您接收到的内容
每当用户打开某个流程中的屏幕时,该流程就会上报 flow_screen_showed 事件。Adapty 会在其自身的流程分析中统计这些事件,同时也会将其传递给您的应用,以便您在自己的分析系统中构建相同的漏斗。
| 参数 | 说明 |
|---|---|
instanceId | 用户打开的屏幕 ID。 |
screen_order | 该屏幕在流程中的位置顺序。 |
is_last_screen | 当该屏幕没有后续跳转时为 true。分支流程可能有多个结束屏幕,每个结束屏幕都会上报 true。 |
此事件的 isBackendEvent 和 isCustomerEvent 均为 true:Adapty 会持续统计该事件,同时您的应用也会收到它。
默认情况下,这些 ID 是自动生成的,因此你的应用收到的是 scr_oAPBHPa7 而非 welcome。如果你的分析功能依赖于读取这些 ID,请自行设置:在付费墙编辑工具中为输入框和可选分组命名,并使用 flow-generator 技能重命名屏幕。详见为分析功能设置自定义 ID。
Kotlin Multiplatform 以原始 JSON 字符串的形式传递这些参数,因此在读取任何参数之前,请先对 paramsJsonString 进行解码。
屏幕浏览事件会通过与其他所有流程事件相同的分析回调传递。有关注册方式,请参阅处理流程与付费墙事件。
将每个屏幕浏览事件转发到您的分析系统
在读取其他内容之前,请先匹配事件名称,因为流程会通过同一回调上报其他事件。
override fun flowViewDidReceiveAnalyticEvent(
view: AdaptyUIFlowView,
name: String,
paramsJsonString: String,
) {
if (name != "flow_screen_showed") return
val params = Json.parseToJsonElement(paramsJsonString).jsonObject
val screenId = params["instanceId"]?.jsonPrimitive?.contentOrNull
val screenOrder = params["screen_order"]?.jsonPrimitive?.intOrNull
// Send screenId and screenOrder to your analytics provider here.
}
当用户到达末尾时执行代码
is_last_screen 在流程无法继续前进的屏幕上为 true。你可以利用它来解锁内容、标记用户引导已完成,或发送自定义的完成事件,无需在编辑工具中为此添加按钮动作。
override fun flowViewDidReceiveAnalyticEvent(
view: AdaptyUIFlowView,
name: String,
paramsJsonString: String,
) {
if (name != "flow_screen_showed") return
val params = Json.parseToJsonElement(paramsJsonString).jsonObject
if (params["is_last_screen"]?.jsonPrimitive?.booleanOrNull != true) return
// The user reached the end of the flow.
}
到达最后一屏并不等同于关闭流程。用户可能看到最后一屏后直接关闭流程而不采取任何操作,而且分支流程可能在多个不同的屏幕上结束。如需知道流程本身何时消失,请改用 flowViewDidDisappear。