react-native-app-tour事件回调实战:如何用3个DeviceEventEmitter事件追踪用户引导完成情况
react-native-app-tour事件回调实战如何用3个DeviceEventEmitter事件追踪用户引导完成情况【免费下载链接】react-native-app-tourReact Native: Native App Tour Library项目地址: https://gitcode.com/gh_mirrors/re/react-native-app-tourreact-native-app-tour是一款跨平台的 React Native 原生用户引导App Tour库内置 3 个基于 DeviceEventEmitter 的事件回调onShowSequenceStepEvent、onFinishSequenceEvent和onCancelStepEvent。本文用一个最小示例带你快速掌握如何监听这 3 个事件追踪用户引导完成情况实现新手引导进度记录与埋点上报。react-native-app-tour 是什么1分钟看懂原生用户引导库react-native-app-tour 是原生引导库之上的 React Native 桥接层让高亮圆圈 气泡文案的新手引导直接运行在原生层动画流畅且样式统一Android基于 TapTargetView支持外圈遮罩、目标圆圈高亮iOS基于 MaterialShowcase支持涟漪动画与背景提示色核心 APIAppTourView.for(view, props)把一个组件引用封装成引导目标AppTour.ShowFor(target)显示单个引导AppTour.ShowSequence(sequence)按order顺序显示一组引导⚠️ 两个硬性要求每个引导组件必须带keyprop序列引导中每个目标必须指定order。快速上手安装 react-native-app-tour 引导库npm install react-native-app-tour --saveiOS 需要在ios/Podfile中加入pod RNAppTour, :path ../node_modules/react-native-app-tour/ios并执行pod update。仓库内 Example/ 目录提供了完整可运行的示例工程克隆后即可直接跑起来git clone https://gitcode.com/gh_mirrors/re/react-native-app-tour3 个 DeviceEventEmitter 事件一眼看懂触发时机引导过程中原生端会在关键节点向 JS 层抛出事件。核心 3 个如下事件名触发时机事件载荷平台onShowSequenceStepEvent用户完成当前步骤进入下一步{ next_step: true }Android / iOSonFinishSequenceEvent整个引导序列全部完成{ finish: true }Android / iOSonCancelStepEvent用户取消引导点击外圈{ cancel_step: true }Android 隐藏彩蛋iOS 端在单步引导动画展示完成后还会发出onStartShowCaseEvent载荷{ start_step: true }可用于某一步已曝光的统计。实战用事件回调记录用户引导完成情况下面是一个可直接套用的追踪模式在组件挂载时注册 3 个监听引导结束或取消时落库/上报卸载时记得移除监听防止内存泄漏。import { DeviceEventEmitter } from react-native import { AppTour, AppTourSequence, AppTourView } from react-native-app-tour class OnboardingScreen extends Component { state { tourDone: false, lastStep: 0 } registerListeners() { this.listeners [ DeviceEventEmitter.addListener(onShowSequenceStepEvent, (e) { this.setState({ lastStep: this.state.lastStep 1 }) }), DeviceEventEmitter.addListener(onFinishSequenceEvent, (e) { this.setState({ tourDone: true }) // 上报埋点引导完成 track(app_tour_finish, { steps: this.state.lastStep 1 }) }), DeviceEventEmitter.addListener(onCancelStepEvent, (e) { // 上报埋点引导中断在第几步 track(app_tour_cancel, { step: this.state.lastStep }) }) ] } componentWillUnmount() { this.listeners.forEach(l l.remove()) // 关键移除监听 } // ... }示例工程 Example/App.js 中就演示了registerSequenceStepEvent与registerFinishSequenceEvent两个注册函数配合 Example/components/Top.js 里带key和order的按钮即可看到完整引导流。这些事件能落地哪些场景完成度埋点onFinishSequenceEvent上报完成onCancelStepEvent 步骤数上报放弃在第几步算出引导流失率功能解锁完成引导后置tourDone状态不再重复打扰用户⏪断点续导记录lastStep下次进入时从用户中断的位置继续事件从哪里来原生端实现一览想深入排查事件问题可以看这两处源码 Android 模块android/src/main/java/ui/apptour/RNAppTourModule.java通过DeviceEventManagerModule的sendEvent发事件分别对应序列完成onSequenceFinish、进入下一步onSequenceStep、用户取消onSequenceCanceled iOS 模块ios/RNAppTour.m通过bridge.eventDispatcher派发onFinishSequenceEvent/onShowSequenceStepEvent/onStartShowCaseEvent JS 封装入口RNAppTour.jsAppTour、AppTourSequence、AppTourView三个类都在此定义常见问题速查引导事件不触发怎么办❓事件完全没触发先检查组件是否写了keyprop、序列目标是否给了order二者缺一 JS 侧会直接抛错❓Android 报 Trying to resolve view with tag which doesnt exist给容器 View 加上collapsable: false❓iOS 收不到onCancelStepEvent这是 Android 专属事件iOS 上建议用cancelable: false让用户必须点目标才能继续或依靠onFinishSequenceEvent兜底❓监听被注册了多次注册前先remove()旧监听示例 App.js 的做法并在componentWillUnmount中统一清理掌握这 3 个 DeviceEventEmitter 事件后你的 React Native 应用就能精确知道每个用户走到了引导的哪一步——无论是埋点、A/B 实验还是个性化推荐用户引导数据都握在了自己手里 【免费下载链接】react-native-app-tourReact Native: Native App Tour Library项目地址: https://gitcode.com/gh_mirrors/re/react-native-app-tour创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考