wildfirechat / android-chat

即时通讯,聊天,野火IMAndroid客户端,支持Android 4.x —— 最新
http://docs.wildfirechat.cn
Other
2.54k stars 889 forks source link

用户主动加入群音视频通话,不需要 接听 流程 就可以 正常通话 #649

Closed chenlin4653 closed 2 years ago

chenlin4653 commented 2 years ago

微信的群音视频通话中,在会话界面会有提示,用户可以点击主动加入。野火没有实现这个原因是在办公环境中,有些通话可能并不能开放用户随便加入。如果您需要这个功能的话可以二次开发来实现,只需要通话中的某个成员把当前用户拉入进去即可。具体实现方法如下:

音视频通话的Session中有个发起人(Initiator)的角色,他负责以3秒每条的频率向群里发送广播消息,这个广播消息是自定义消息。进入群会话的用户收到此广播后就在上面显示正在通话的提示,用户点击加入之后,再给发起人发送一条要加入的消息,发起人端收到消息后弹出提示是否允许加入,当用户点击允许后邀请申请用户加入,或者直接邀请申请用户加入。当通话结束时,发送一条结束的自定义消息通知到群里。需要注意几点: 自定义消息flag要设置为透传。这样只有在线用户能收到,服务器不存储此类消息。减少消息量。 发起人可能会变动,当发起人退出群通话时,会自动选举出下一个发起人,会有通知回调到上层,上层需要处理这种变化。

谢谢提供宝贵的思路;

目前 Api 层面 提供 方式 inviteNewParticipants(), 被邀请的群成员 状态 AVEngineKit.CallState.Incoming 会触发 接收 或者 拒绝通话; 可以 提供 新 Api 适用于 这种场景,避免用户 主动 加入通话 又 需要 接听 才会 正常连接 。

目前使用高级版 多人音视频,请帮你看看能不能提供,谢谢。

imndx commented 2 years ago
   public interface AVEngineCallback {
        // 是不是这个回调里面,能区别开是 startCall 触发的,还是inviteNewParticipants 触发的,就能实现你们的需求?
        void onReceiveCall(CallSession session);

        void shouldStartRing(boolean isIncomming);

        void shouldSopRing();
    }
heavyrain2012 commented 2 years ago

这个我们稍后会提供一个邀请函数,这个邀请会让被邀请人收到邀请后自动加入

chenlin4653 commented 2 years ago

好的,谢谢

heavyrain2012 commented 2 years ago

我们demo中已经添加了这个功能,可以更新到最新代码,打开开关测试这个功能,打开方法可以看一下我们最近的提交。另外参考 https://docs.wildfirechat.cn/blogs/多人音视频的主动加入功能.html 了解详细情况