智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > Android Native SDK > 会议 网络变化时恢复会议

入门使用

网络变化时恢复会议

更新时间:2019-11-20

网络变化时恢复会议

描述

用户正在会议中,用户设备的网络发生变化时,应用程序可以自动恢复会议连接。

前提条件

用户正在会议中,应用程序检测到IP地址变化。

业务流程

图1 网络变化恢复会议流程

  1. 应用程序检查到IP地址变化,并获取到有效IP,UI通过调用TsdkManager对象中的setConfigParam()方法设置最新的本地IP,配置本地ip地址的参数信息对象为TsdkLocalAddress。
    说明: 

    若应用程序期望SDK尝试以最大能力自动恢复,需要将参数TsdkLocalAddress对象中的属性isTryResume设置为1。

    代码示例:

    //java code
    public int resetConfig(boolean isVpn)
    {
    	int ret;
    	String ipAddress = DeviceManager.getLocalIpAddress(isVpn);
    	if ("".equals(ipAddress) || localIpAddress.equals(ipAddress))
    	{
    		localIpAddress = ipAddress;
    		return -1;
    	}
    	localIpAddress = ipAddress;
    
    	TsdkLocalAddress localAddress = new TsdkLocalAddress();
    	localAddress.setIpAddress(localIpAddress);
    	localAddress.setIsTryResume(1);
    	ret = TsdkManager.getInstance().setConfigParam(localAddress);
    	if (ret != 0)
    	{
    		LogUtil.e(TAG, "resetConfig local ip is failed, return " + ret);
    	}
    	return ret;
    }
     
  2. 如果在当前正在会议中,SDK自动启动恢复处理,通过TsdkNotify类onEvtConfResumingInd()接口向UI上报会议恢复中通知,应用程序UI应记录当前状态,并提示用户。
    说明: 

    若不在会议中,则仅进行尝试恢复登录处理。

    代码示例:

    //java code
    @Override
    public void onEvtConfResumingInd(TsdkConference conference) {
    	LogUtil.i(TAG, "onEvtConfResumingInd notify.");
    	MeetingMgr.getInstance().handleConfResumingInd();
    }
     
  3. SDK通过TsdkNotify类的onEvtLoginResumingInd()接口向UI上报登录恢复中通知,应用程序UI应记录当前状态,并提示用户。
    说明: 

    若在会议中,建议应用程序仅提示“会议正在恢复中”。

    代码示例:

    //java code
    @Override
    public void onEvtLoginResumingInd(long userId) {
    	LogUtil.i(TAG, "onEvtLoginResumingInd notify.");
    	LoginMgr.getInstance().handLoginResumingInd((int)userId);
    }
     
  4. SDK完成登录恢复处理,通过TsdkNotify类的onEvtLoginResumeResult()接口向UI上报登录恢复结果通知。
    说明: 

    登录状态恢复过程中,SDK上报的过程事件通知与普通登录处理相同。恢复过程若出现异常,则通过onEvtLoginResumeResult()方法上报原因。只有登录恢复成功,SDK才会进行会议恢复处理。

    代码示例:

    //java code
    @Override
    public void onEvtLoginResumeResult(long userId, TsdkCommonResult result) {
    	LogUtil.i(TAG, "onEvtLoginResumeResult notify.");
    	LoginMgr.getInstance().handLoginResumeResult(result);
    }
     
  5. SDK完成会议恢复处理,通过TsdkNotify类的onEvtConfResumeResult()接口向UI上报会议恢复结果通知,应用程序刷新信息并提示用户。
    说明: 
    • 若会议恢复成功,onEvtConfResumeResult()事件携带的信息中,"TsdkConference"中的呼叫call对象以及与会者列表attendeeList会更新,应用程序应对应更新信息;TsdkResumeConfIndInfo中携带的"join_conf_ind_info"为重新加入会议的通知信息,与普通加入会议时携带的“加入会议通知信息”相同,应用程序应更新记录相应信息,若当前为一个视频会议,则需要重新绑定窗口信息。后继过程与普通加入会议过程相同。
    • 若会议恢复失败,onEvtConfResumeResult()事件携带会议对象信息和结果信息中,应用程序UI应该从会议界面退出,并清除应用层记录的相关会议信息。

    代码示例:

    //java code
    @Override
    public void onEvtConfResumeResult(TsdkConference conference, TsdkCommonResult result, TsdkResumeConfIndInfo info) {
    	LogUtil.i(TAG, "onEvtConfResumeResult notify.");
    	MeetingMgr.getInstance().handleConfResumeResult(conference, result, info);
    }
     

注意事项

若SDK在首次上报的onEvtConfResumingInd事件60秒内,未正常恢复会议,SDK会自动放弃恢复。