You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 13:51:04