在一个通话中,某个用户可能多次加入和离开 RTC 频道,该用户累计在频道内的时间为该用户的通话时长,你可以将用户的通话时长作为计费等业务的计量标准之一。通过 anyRTC RTC SDK 或监控中心,你可以获取用户的通话时长。
实现方法
使用 anyRTC RTC SDK 获取用户的通话时长
根据不同的语言调用相关方法回调获取用户的通话时长:
语言 | 方法回调 | 代表用户单次在频道内的时间的参数 |
---|---|---|
Java | onRtcStats 回调 | totalDuration 参数 |
C++ | onRtcStats 回调 | duration 参数 |
Objective-C | reportRtcStats 回调 | duration 参数 |
Javascript | ArRTCClient.getRTCStats 方法 | Duration 参数 |
以 Java 语言为例:
正常情况下,用户成功加入 RTC 频道后会触发 onRtcStats 回调,用户离开频道前收到的最后一次 onRtcStats 回调中的 totalDuration 参数即为该用户的通话时长。如果用户在通话中多次进出频道,你需要累计多个 totalDuration 值算出用户的通话时长。
如果遇到断线等异常情况,通过 anyRTC RTC SDK 获取的通话时长可能不准确。你需要通过 anyRTC RTM SDK 或自己的信令系统开启心跳检测机制,从而获取客户端和服务端断开连接的时长。在 anyRTC RTC SDK 获取的通话时长中减去客户端断开连接的时长,即为该用户准确的通话时长。
使用监控大厅
你可以通过监控大厅通话详情界面,查看用户在频道内时间,即该用户的通话时长。详见通话详情。