Added

  • New interface to the control waiting room configuration for the customized user interface.

    • New interface in MobileRTCWaitingRoomService.h

      - (void)onCustomWaitingRoomDataUpdated:(MobileRTCCustomWaitingRoomData *_Nullable)data;
      - (MobileRTCSDKError)requestCustomWaitingRoomData;
    •  New enum in MobileRTCWaitingRoomService.h

      typedef NS_ENUM(NSUInteger, MobileRTCWaitingRoomLayoutType) {
      MobileRTCWaitingRoomLayoutType_Default = 0,
      MobileRTCWaitingRoomLayoutType_Logo,
      MobileRTCWaitingRoomLayoutType_Video,  
      };
    • New enum in MobileRTCWaitingRoomService.h

      typedef NS_ENUM(NSUInteger, MobileRTCCustomWaitingRoomDataStatus) {
      MobileRTCCustomWaitingRoomDataStatus_Init,
      MobileRTCCustomWaitingRoomDataStatus_Downloading,
      MobileRTCCustomWaitingRoomDataStatus_Download_OK,
      MobileRTCCustomWaitingRoomDataStatus_Download_Fail,
      };
    • New interface in MobileRTCWaitingRoomService.h

      @interface MobileRTCCustomWaitingRoomData : NSObject
      @property (nonatomic, retain) NSString * _Nullable title;
      @property (nonatomic, retain) NSString * _Nullable descriptionString;
      @property (nonatomic, retain) NSString * _Nullable logoPath;
      @property (nonatomic, retain) NSString * _Nullable videoPath;
      @property (nonatomic, assign) MobileRTCWaitingRoomLayoutType type;
      @property (nonatomic, assign) MobileRTCCustomWaitingRoomDataStatus status;
      @end
  • New interface to allow non-host SDK participants to manage (start or stop) live streaming.

    • New interface in MobileRTCMeetingService+InMeeting.h

      - (BOOL)isRawLiveStreamSupported;
      - (MobileRTCSDKError)canStartRawLiveStream;
      - (MobileRTCSDKError)requestRawLiveStream:(nonnull NSString *)broadcastURL;
      - (MobileRTCSDKError)removeRawLiveStreamPrivilege:(NSUInteger)userId;
      - (NSArray<MobileRTCRawLiveStreamInfo*> * _Nullable)getRawLiveStreamingInfoList;
      - (NSArray <NSNumber*> * _Nullable)getRawLiveStreamPrivilegeUserList;
    • New callback in MobileRTCMeetingDelegate.h

      - (void)onRawLiveStreamPrivilegeChanged:(BOOL)hasPrivilege;
      - (void)onRawLiveStreamPrivilegeRequestTimeout;
      - (void)onUserRawLiveStreamPrivilegeChanged:(NSUInteger)userId hasPrivilege:(bool)hasPrivilege;
      - (void)onRawLiveStreamPrivilegeRequested:(MobileRTCRequestRawLiveStreamPrivilegeHandler*_Nullable)handler;
      - (void)onUserRawLiveStreamingStatusChanged:(NSArray<MobileRTCRawLiveStreamInfo*>*_Nullable)liveStreamList;
    • New callback in MobileRTCRequestRawLiveStreamPrivilegeHandler.h

      - (NSString *)getRequestId;
      - (NSUInteger)getRequesterId;
      - (NSString *)getRequesterName;
      - (NSString *)getBroadcastUrl;
      - (BOOL)grantRawLiveStreamPrivilege;
      - (BOOL)denyRawLiveStreamPrivilege;
    • New interface in MobileRTCRawLiveStreamInfo.h

      @property(nonatomic, assign, readonly) NSUInteger userId;
      @property(nonatomic, copy, readonly) NSString * _Nullable broadcastUrl;
    • New interface in MobileRTCMeetingService+User.h

      - (BOOL)isRawLiveStreaming:(NSUInteger)userID;
      - (BOOL)hasRawLiveStreamPrivilege:(NSUInteger)userID;

  • New error codes.

    • New enum in MobileRTCConstants.h

      typedef NS_ENUM(NSUInteger, MobileRTCSDKError) {
      MobileRTCSDKError_Success = 0,///<success.
      MobileRTCSDKError_NoImpl,///<this feature is currently invalid.
      MobileRTCSDKError_WrongUsage,///<incorrect usage of the feature.
      MobileRTCSDKError_InvalidParameter,///<wrong parameter.
      MobileRTCSDKError_ModuleLoadFailed,///<loading module failed.
      MobileRTCSDKError_MemoryFailed,///<no memory is allocated.
      MobileRTCSDKError_ServiceFailed,///<internal service error.
      MobileRTCSDKError_Uninitialize,///<not initialized before the usage.
      MobileRTCSDKError_Unauthentication,///<not authorized before the usage.
      MobileRTCSDKError_NoRecordingInprocess,///<no recording in process.
      MobileRTCSDKError_TranscoderNoFound,///<transcoder module is not found.
      MobileRTCSDKError_VideoNotReady,///<the video service is not ready.
      MobileRTCSDKError_NoPermission,///<no permission.
      MobileRTCSDKError_Unknown,///<unknown error.
      MobileRTCSDKError_OtherSdkInstanceRunning,///<the other instance of the SDK is in process.
      MobileRTCSDKError_InternalError,///<SDK internal error.
      MobileRTCSDKError_NoAudiodeviceIsFound,///<no audio device found.
      MobileRTCSDKError_NoVideoDeviceIsFound,///<no video device found.
      MobileRTCSDKError_TooFrequentCall,///<API calls too frequently.
      MobileRTCSDKError_FailAssignUserPrivilege, ///<user can't be assigned with new privilege.
      MobileRTCSDKError_MeetingDontSupportFeature,///<the current meeting doesn't support the feature.
      MobileRTCSDKError_MeetingNotShareSender,///<the current user is not the presenter.
      MobileRTCSDKError_MeetingYouHaveNoShare,///<there is no sharing.
      MobileRTCSDKError_MeetingViewtypeParameterIsWrong, ///<incorrect viewtype parameters.
      MobileRTCSDKError_MeetingAnnotationIsOff, ///<annotation is disabled.
      MobileRTCSDKError_SettingOsDontSupport, ///<current OS doesn't support the setting.
      MobileRTCSDKError_EmailLoginIsDisabled, ///<email login is disable
      MobileRTCSDKError_HardwareNotMeetForVb, ///<computer doesn't meet the minimum requirements to use virtual background feature.
      MobileRTCSDKError_NeedUserConfirmRecordDisclaimer,  ///<need process disclaimer.
      MobileRTCSDKError_NoShareData,///<there is no raw data of sharing.
      MobileRTCSDKError_ShareCannotSubscribeMyself,
      MobileRTCSDKError_NotInMeeting,
      };

  • New interface to support 3D avatars in the Meeting SDK.

    • New interface in MobileRTCMeetingService+Avatar.

      @interface MobileRTC3DAvatarImageInfo : NSObject
      @property (nonatomic, assign) BOOL isSelected;
      @property (nonatomic, copy) NSString *imagePath;
      @property (nonatomic, copy) NSString *imageName;
      @property (nonatomic, assign) NSInteger index;
      @end
    • New interface in MobileRTCMeetingService+Avatar.h

      - (BOOL)is3DAvatarSupportedByDevice;
      - (BOOL)is3DAvatarEnabled;
      - (NSArray <MobileRTC3DAvatarImageInfo* >*)get3DAvatarImageList;
      - (MobileRTCSDKError)set3DAvatarImage:(MobileRTC3DAvatarImageInfo*)imageInfo;
    • New callback in MobileRTCMeetingDelegate.h

      - (void)on3DAvatarItemThumbnailsDownloaded;
      - (void)on3DAvatarItemDataDownloading:(int)index;
      - (void)on3DAvatarItemDataDownloaded:(bool)success andIndex:(int)index;
  • New interface to support features which allow for American Sign Language (ASL) interpreters to be defined by the host and pinned to a certain predictable location for all meeting participants.

    • New interface in MobileRTCMeetingService+Interpretation.h

      @interface  MobileRTCSignInterpreterLanguage : NSObject
      @property (copy, nonatomic, nullable) NSString *  languageName;
      @property (copy, nonatomic, nullable) NSString *  languageID;
      @end
      @interface  MobileRTCSignInterpreter : NSObject
      @property (assign, nonatomic)           NSUInteger userID;
      @property (assign, nonatomic)           BOOL available;
      @property (copy, nonatomic, nullable)    NSString *  userName;
      @property (copy, nonatomic, nullable)    NSString *  email;
      @property (copy, nonatomic, nullable)    NSString *  languageName;
      @property (copy, nonatomic, nullable)    NSString *  languageID;
      @end 
      - (BOOL)isSignInterpretationEnabled;
      - (MobileRTCSignInterpretationStatus)getSignInterpretationStatus;
      - (BOOL)isSignInterpreter;
      - (MobileRTCSignInterpreterLanguage*_Nullable)getSignInterpretationLanguageInfoByID:(NSString *_Nullable)signLanguageID;
      - (NSArray<MobileRTCSignInterpreterLanguage*> *_Nullable)getAvailableSignLanguageInfoList;
      - (NSArray<MobileRTCSignInterpreterLanguage*> *_Nullable)getAllSupportedSignLanguageInfoList;
      - (NSArray<MobileRTCSignInterpreter*> *_Nullable)getSignInterpreterList;
      - (MobileRTCSDKError)addSignInterpreter:(NSUInteger)userID signLanId:(NSString *_Nullable)signLanID;
      - (MobileRTCSDKError)removeSignInterpreter:(NSUInteger)userID;
      - (MobileRTCSDKError)modifySignInterpreter:(NSUInteger)userID signLanId:(NSString *_Nullable)signLanID;
      - (BOOL)canStartSignInterpretation;
      - (MobileRTCSDKError)startSignInterpretation;
      - (MobileRTCSDKError)stopSignInterpretation;
      - (MobileRTCSDKError)requestSignLanuageInterpreterToTalk:(NSUInteger)userID allowToTalk:(BOOL)allowToTalk;
      - (BOOL)isAllowSignLanuageInterpreterToTalk:(NSUInteger)userID;
      - (NSString *_Nullable)getSignInterpreterAssignedLanID;
      - (MobileRTCSDKError)joinSignLanguageChannel:(NSString *_Nullable)signLanID;
      - (MobileRTCSDKError)leaveSignLanguageChannel;
    • New enum in MobileRTCConstants.h

      typedef NS_ENUM(NSInteger,MobileRTCSignInterpretationStatus)
      {
      MobileRTCSignInterpretationStatus_Initial, //<The initial status
      MobileRTCSignInterpretationStatus_Started, //<sign interpretation started.
      MobileRTCSignInterpretationStatus_Stopped,  //<sign interpretation stopped.
      };
    • New callback in MobileRTCMeetingDelegate.h

      - (void)onSignInterpretationStatusChange:(MobileRTCSignInterpretationStatus)status;
      - (void)onSignInterpreterListChanged;
      - (void)onSignInterpreterRoleChanged;
      - (void)onSignInterpreterLanguageChanged;
      - (void)onAvailableSignLanguageListUpdated:(NSArray<MobileRTCSignInterpreterLanguage*> *_Nonnull)availableSignLanguageList;
      - (void)onRequestSignInterpreterToTalk;
      - (void)onDisallowSignInterpreterToTalk;
  • New callback for switching breakout rooms (BO).

    • New callback in MobileRTCMeetingDelegate.h

      - (void)onBOSwitchRequestReceived:(NSString*_Nullable)newBOName newBOID:(NSString *_Nullable)newBOID;
  • New interface to share audio.

    • New interface in MobileRTCMeetingService+AppShare.h

      - (void)setShareAudio:(BOOL)enableAudio;
      - (BOOL)isShareAudio;
      - (BOOL)isDeviceSharing;

 Changed

  • The return type of interface muteMyVideo from MobileRTCVideoError to MobileRTCSDKError.

Fixed

  • Issue where the emoji list was empty in the Zoom default user interface.

  • Issue where the meetingType should be webinar instead of breakout room when starting a webinar meeting and receiving the callback onMeetingParameterNotification.

  • Issue where meeting participants did not receive the callback onInterpreterActiveLanguageChanged in customized user interface mode when host added themself as an interpreter and started interpreting.

  • Issue where the callback onSinkMeetingAudioRequestUnmuteByHost couldn't be received in the Zoom default user interface.

Deprecated

  • Delete property in MobileRTCMeetingUserInfo.h

    @property (nonatomic, assign) NSInteger        unread;
  • Remove interface in MobileRTCMeetingService+User

    - (int)getUnreadChatCountByUserId:(int)userId
  • Delete enum in MobileRTCConstants.h

    typedef NS_ENUM(NSUInteger, MobileRTCVideoError) {
    MobileRTCVideoError_Success                                   = 0,
    MobileRTCVideoError_CameraPermissionDenied                    = 1,
    MobileRTCVideoError_CannotUnmuteMyVideo                       = 3,
    };