通知
本站点除 Legacy 产品与方案外,已迁移至 声网新文档中心 ,当前页面不再维护
文档中心
全部产品
Console 官网 社区 技术支持

如何获取用户的通话时长?

分类: 集成类    平台: Android / iOS / macOS / Web / Windows / Unity / Cocos Creator / Electron / React Native / Flutter   最后更新时间: 2020/11/12 00:01:39

介绍

在一个通话中,某个用户可能多次加入和离开 RTC 频道,该用户累计在频道内的时间为该用户的通话时长,你可以将用户的通话时长作为计费等业务的计量标准之一。通过 Agora RTC SDK 或水晶球,你可以获取用户的通话时长。

实现方法

使用 Agora RTC SDK

正常情况下,用户成功加入 RTC 频道后会触发 onRtcStats 回调,用户离开频道前收到的最后一次 onRtcStats 回调中的 totalDuration 参数即为该用户的通话时长。如果用户在通话中多次进出频道,你需要累计多个 totalDuration 值算出用户的通话时长。

上述示例为 Java 语言,其他语言可通过如下参数获取用户单次在频道内的时间:
  • C++: onRtcStats 回调中的 duration 参数
  • Objective-C: reportRtcStats 回调中的 duration 参数
  • Javascript: Client.getSessionStats 方法中的 Duration 参数
  • 如果遇到断线等异常情况,通过 Agora RTC SDK 获取的通话时长可能不准确。你需要通过 Agora RTM SDK 或自己的信令系统开启心跳检测机制,从而获取客户端和服务端断开连接的时长。在 Agora RTC SDK 获取的通话时长中减去客户端断开连接的时长,即为该用户准确的通话时长。

    使用水晶球

    你可以通过水晶球通话调查界面,查看用户在频道内时间,即该用户的通话时长。详见通话调查