更新时间:2019-11-20
描述
用户正在会议中,用户设备的网络发生变化时,应用程序可以自动恢复会议连接。
前提条件
用户正在会议中,应用程序检测到IP地址变化。
业务流程
若应用程序期望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; }
若不在会议中,则仅进行尝试恢复登录处理。
代码示例:
//java code @Override public void onEvtConfResumingInd(TsdkConference conference) { LogUtil.i(TAG, "onEvtConfResumingInd notify."); MeetingMgr.getInstance().handleConfResumingInd(); }
若在会议中,建议应用程序仅提示“会议正在恢复中”。
代码示例:
//java code @Override public void onEvtLoginResumingInd(long userId) { LogUtil.i(TAG, "onEvtLoginResumingInd notify."); LoginMgr.getInstance().handLoginResumingInd((int)userId); }
登录状态恢复过程中,SDK上报的过程事件通知与普通登录处理相同。恢复过程若出现异常,则通过onEvtLoginResumeResult()方法上报原因。只有登录恢复成功,SDK才会进行会议恢复处理。
代码示例:
//java code @Override public void onEvtLoginResumeResult(long userId, TsdkCommonResult result) { LogUtil.i(TAG, "onEvtLoginResumeResult notify."); LoginMgr.getInstance().handLoginResumeResult(result); }
代码示例:
//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会自动放弃恢复。