IM - 直播间在线人数、人气值等场景方案

2022-04-14 15:36:57 浏览数 (1)

场景

在电商直播、在线K歌、语音电台等应用场景中,实时统计及展示直播间在线人数、人气值等数据。

实现逻辑

在线人数统计及下发逻辑在线人数统计及下发逻辑
人气值上报及下发逻辑人气值上报及下发逻辑

1)IM 群组

1.1)选择群组类型为 直播群(AVChatRoom) 。在进行直播活动时,人数会达到十万、百万、千万等量级,直播群是专门为这种直播活动设计的,故在进行直播活动时,推荐使用该群组类型,下一步的群属性,也是仅仅为直播群支持的。

1.2)定义 群属性key,设置在线人数属性、人气值属性,如 online_member_num 为在线人数。

2)客户业务后端

2.1)通过 IM 服务端 RESTAPI 接口(直播群在线人数接口)获取直播间的人数,根据业务逻辑,对在线人数等数据进行处理

2.2)通过 IM 服务端 RESTAPI 接口(修改群自定义属性接口)为指定的群属性key传入value,IM 服务端会下发给 App 端进行展示

3)App端

3.1)App端代码逻辑中,当观众进入直播间,进行上报相关的数据到客户后端,在客户后端服务中做相应的逻辑处理生成人气值,再通过 IM 通道下发给 App端展示

3.2)在 IM 的 onGroupAttributeChanged 回调群属性的变更中,获取传入的直播间在线人数、人气值等数据

3.3)获取到群属性中的key-value即在线人数、人气值等数据后,去更新对应的 UI 即可

服务端 RESTAPI 接口调用示例

1)获取在线人数:

接口文档:即时通信 IM 获取直播群在线人数 - 服务端 API - 文档中心 - 腾讯云

注意:

a)仅仅支持 直播群AVChatRoom 才可以使用

b)在线人数总体更新粒度为 10s

这里以 postman 发起请求为例,来获取直播群的在线人数:

获取在线人数获取在线人数

2)修改群属性:

接口文档:即时通信 IM 修改群自定义属性 - 服务端 API - 文档中心 - 腾讯云

注:该接口,仅仅支持 直播群 才可以使用!

这里以 postman 发起请求为例,指定群属性key,传入对应的在线人数:

修改群属性修改群属性

客户端 App 中接收属性变更回调

onGroupAttributeChanged回调:地址

通过该回调获取到群属性,可以获取到在线人数对应的 key-value,然后去展示到 UI 上:

代码语言:javascript复制
@Override
public void onGroupAttributeChanged(String groupID, Map<String, String> groupAttributeMap) {
    for(String key : groupAttributeMap.keySet()){
        Log.d(TAG, "群属性更新 - key: "   key   ", value: "   groupAttributeMap.get(key));
    }
}

相关文档链接

群组系统介绍:地址

服务端 RESTAPI 接口 - 修改群自定义属性: 地址

服务端 RESTAPI 接口 - 获取直播群在线人数:地址

终端 SDK 群属性介绍:地址

0 人点赞