# Tutorial: SDK 升级指引

## 从 3.x 升级到 4.x

​ WebRTC SDP 标准格式原先只有Plan B一种协议，后随着WebRTC 1.0 版本正式发布， Unified Plan协议成为 W3C 推荐协议。其中Chrome浏览器一直兼容Plan B协议。

​ RTC Web SDK 3.x 采用Plan B 协议开发， Web SDK 4.x 采用Unified Plan协议开发。

​ 现Chrome浏览器最近发布了公告：

> - M93（2021年8月稳定）：Plan B 被移除，可以选择加入 Reverse Origin Trial 来延长这个截止日期。
> - M96（2022年1月稳定）：延长的最后期限结束，Plan B 被移除。

​ 为不影响客户使用，现要求所有使用web SDK 3.x的客户近快升级到web SDK 4.x版本。现关于SDK升级涉及到的全部接口明细罗列如下，如客户代码中有涉及到接口调整或删除部分，请参照SDK接口文档说明做修改。

​ SDK 升级涉及到的全部接口明细：

- 有调整变化的接口：

  - avdEngine.setDefaultVideoParams(width,height,resolutionSetType,frameRate,minBandwidth,maxBandwidth)

    改成

    avdEngine.setDefaultVideoParams(width,height,resolutionSetType,frameRate)

  - video.setBandwidth(minBandwidth,maxBandwidth)

    改成

    video.setBandwidth(maxBandwidth)

  - user.remotecmdUnpublishCamera(cameraId)

    改成

    user.remotecmdUnpublishCamera(userId,cameraId)

  - room.addCallback(RoomCallback.connection_indicator,onConnectionIndicator)，返回的网络状态，如房间中总的上下行码流，各个音视频的码流等统计参数微调

  - 检测设备接口有调整,不再提供单独接口，统一通过avdEngine.initDevice()操作后，根据获取到的值来处理

    - avdEngine.checkDevice().then(checkResult)变成内部函数，直接取avdEngine.hasCamera,avdEngine.hasMicrophone
    - avdEngine.getDeviceObject().then(showDevices)取消，直接取avdEngine.cameraMap,avdEngine.microphoneMap

- 已经接口的删除：

  - room.composePDUDeviceId(prefix，deviceId)

  - room.splitPDUDeviceId(PDUDeviceId)

  - room.splitUserId(PDUDeviceId)

- 新增的接口：

  - 设置带宽 screen.setBandwidth(maxBandwidth)

  - 白板更新 user.updateBoard(board)

    应用层回调

    ​ user.addCallback(UserCallback.board_update_result, onBoardUpateResult);

    ​ function onBoardUpateResult(boardId,backgroundColor,backgroundImage) { }

  - 移动端H5打开前置摄像头 user.openMobileFrontVideo(element)

  - 移动端H5关闭前置摄像头 user.closeMobileFrontVideo()

  - 移动端H5打开后置摄像头 user.openMobileBackVideo(element)

  - 移动端H5关闭后置摄像头 user.closeMobileBackVideo()

  - 命令远端用户麦克风静音 user.remotecmdMuteMicrophone(userId)

  - 命令远端用户麦克风取消静音 user.remotecmdUnmuteMicrophone(userId)

  - 媒体播放开始通知 room.addCallback(RoomCallback.mediaplay_started_notify, onMediaPlayStartedNotify)

  - 媒体播放结束通知 room.addCallback(RoomCallback.mediaplay_stoped_notify, onMediaPlayStopedNotify)

  - 媒体播放进度通知 room.addCallback(RoomCallback.mediaplay_progress_notify, onMediaPlayProgressNotify)

  - 设备检测时麦克风音量的检测回调 avdEngine.checkAudioLevel(1000,showAudioLevel);

    function showAudioLevelm(audioLevel) {}

- 其它：

  - 支持移动端浏览器中白板批注的手势操作

  - 分辨率设置类型默认值从强制即ResolutionSetType.exact 改为 期望即ResolutionSetType.ideal。