在react-native-zoom-us中如何获取用户离开会议时的会议时长?
实现方案
核心逻辑是记录会议加入成功的时间点,监听用户离开会议的系统事件,最后计算两个时间点的差值即可得到会议持续时长,具体实现步骤如下:
- 提前声明两个变量:存储会议开始时间的
meetingStartTime、存储事件监听实例的meetingLeftListener - 调用
joinMeeting成功后,立即记录当前时间戳为会议开始时间 - 通过
ZoomEmitter监听meeting-left事件,事件触发时用当前时间减去开始时间,即可得到会议持续时长 - 组件卸载时记得移除事件监听器,避免内存泄漏
完整实现代码示例:
import ZoomUs, { ZoomEmitter } from 'react-native-zoom-us'; import { useEffect, useRef } from 'react'; // 存储会议开始时间戳 let meetingStartTime = null; // 存储事件监听实例 let meetingLeftListener = null; // 初始化Zoom const initZoom = async () => { await ZoomUs.initialize({ clientKey: 'Your client key', clientSecret: 'your client secret', domain: 'zoom.us', }); }; // 加入会议逻辑 const handleJoinMeeting = async () => { const joinMeetingResult = await ZoomUs.joinMeeting({ autoConnectAudio: true, userName: 'Wick', meetingNumber: "87606544441" , password: "123456", }); // 加入成功后记录开始时间 if(joinMeetingResult) { meetingStartTime = Date.now(); } }; // 组件挂载时绑定监听 useEffect(() => { initZoom(); // 监听会议离开事件,用户主动退出、被踢出、会议结束自动退出都会触发该事件 meetingLeftListener = ZoomEmitter.addListener('meeting-left', () => { if(meetingStartTime) { // 计算时间差 单位为毫秒 const durationMs = Date.now() - meetingStartTime; // 转换为分钟+秒的格式,可根据需求自行调整 const durationMin = Math.floor(durationMs / 1000 / 60); const durationSec = Math.floor((durationMs / 1000) % 60); console.log(`本次会议持续时长:${durationMin}分${durationSec}秒`); // 重置开始时间避免下次计算出错 meetingStartTime = null; } }); // 组件卸载时移除监听 return () => { if(meetingLeftListener) { meetingLeftListener.remove(); } } }, []);
内容的提问来源于stack exchange,提问作者Shaikh Wasimhaque
相关产品推荐
相关产品推荐

