多人音视频的主动加入功能

微信的群组通话时,会在群组的顶部显示正在通话中,这样没有加入通话的用户点击就可以主动加入通话。这么做有着明显的优点和缺点,优点就是群内相关人员随时可以主动加入,更方便沟通;缺点就是隐私性问题,有些人认为不能让人主动加入,还是通过邀请加入更合理。这个功能没有绝对的对错,只能看客户更看中那个方面了。野火的多人音视频和音视频高级版默认是保护隐私,不显示群中通话,只有收到邀请才可以加入。当然如果需要像微信那样主动加入,也可以自己二开来完成。最近很多客户想做但又不知道如何下手,我们就在demo上实现了,打开开关就开启了这个功能。由于是UI层的功能,我们需要把做法讲一下,这样也更便于大家的二开和维护。

1. 通话的发现

要想在群的顶部显示正在通话的提示,那么就必须知道群中有通话。可以是参与通话的用户通过周期性的在群中广播消息,这样群中的其他人就能知道群中在通话。如果通话中的所有人都发送广播消息,则会浪费资源。解决办法是通话中有个initiator发起人的角色,只有他来发起广播。当发起人退出时,会通过计算,计算出一个新的发起人,这就需要通话中的成员监听状态,如果自己变成了发起人,就需要开始周期性的发送“我们正在通话中”的消息。

这个正在通话中的自定义下消息是MultiCallOngoingMessageContent,消息中带有足够使用的信息,在demo中发起人是以每秒一条的频率发送。消息是透传消息,透传消息不会在服务器存储,只发给在线用户,比较适合这个场景。

由于这些逻辑是在UI层实现的,多人通话的UI有两个,一个是通话界面,另外就是最小化到小窗口,这两个地方都需要实现这个逻辑。

2. 正在通话中的显示

群中的其它成员收到消息以后,就能判断出群中有通话的存在,就可以在会话的顶部显示正在通话中,如果有产品的要求,可以显示更多一些的信息,比如发起人,参与人员等。由于是1秒周期广播,所以需要定时检查是否收到了消息,比如2秒钟查一次,2秒钟之后没有收到广播消息就认为已经结束。

3. 加入的处理

当用户点击正在通话中的小条后,展示加入按钮,用户点击加入,就发送一个申请加入的消息给发起人。发起人收到这个消息后,调用添加参与者的方法把申请人加入通话中。这个添加参与者的方法最近多加了一个参数:对方是否自动加入。这种情况下就选对方自动加入,这样申请人这边的音视频引擎会收到发起人的加入要求,会自动加入通话中。

申请加入通话的自定义消息是JoinCallRequestMessageContent,同样也是透传消息。

4. 后期的维护

这个功能其实不涉及到任何野火SDK的功能(唯一的地方就是音视频引擎的添加成员的方法多了个自动接听的参数),全都是在UI层实现的,所以以后可以自己来维护这个功能。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2022-08-29 09:42:41

results matching ""

    No results matching ""