Added

New interfaces and callbacks to support cloud recording:

New interfaces in ZMVideoSDKRecordingHelper.h:

-(ZMVideoSDKErrors)canStartRecording;
-(ZMVideoSDKErrors)startCloudRecording;
-(ZMVideoSDKErrors)stopCloudRecording;
-(ZMVideoSDKErrors)pauseCloudRecording;
-(ZMVideoSDKErrors)resumeCloudRecording;
-(ZMVideoSDKErrors)getCloudRecordingStatus:(ZMRecordingStatus*)recordStatus;

New callback in ZMVideoSDKDelegate:

- (void)onCloudRecordingStatus:(ZMRecordingStatus)status;

New status in ZMRecordingStatus:

ZMRecording_Start
ZMRecording_Stop
ZMRecording_DiskFull
ZMRecording_Pause

New interface in ZMVideoSDK:

- (ZMVideoSDKRecordingHelper*)getRecordingHelper;

New interfaces and callbacks to support the command channel:

New interface in ZMVideoSDKCmdChannel.h:

- (ZMVideoSDKErrors)sendCommand:(NSString*)commandContent receiveUser:(nullable ZMVideoSDKUser *)user

New callbacks in ZMVideoSDKDelegate:

- (void)onCommandReceived:(NSString*)commandContent senderUser:(ZMVideoSDKUser*)user;
- (void)onCommandChannelConnectResult:(BOOL)isSuccess;

New interface in ZMVideoSDK:

- (ZMVideoSDKCmdChannel*)getCmdChannel;

New interface to support sharing a second camera:

New interface in ZMVideoSDKShareHelper:

- (ZMVideoSDKErrors)startShare2ndCamera:(NSString*)cameraID;
- (ZMVideoSDKErrors)subscribeMyShareCamera:(id<ZMVideoSDKRawDataPipeDelegate>)dataHandler;
- (ZMVideoSDKErrors)unSubscribeMyShareCamera;

New interfaces and callbacks to support remote control camera:

New interface in ZMVideoSDKCameraControlRequestHandler:

-(ZMVideoSDKErrors)approve;
-(ZMVideoSDKErrors)decline;

New interface in ZMVideoSDKRemoteCameraControlHelper:

-(ZMVideoSDKErrors)requestControlRemoteCamera
-(ZMVideoSDKErrors)giveUpControlRemoteCamera;
-(ZMVideoSDKErrors)turnLeft:(unsigned int)range;
-(ZMVideoSDKErrors)turnRight:(unsigned int)range;
-(ZMVideoSDKErrors)turnUp:(unsigned int)range;
-(ZMVideoSDKErrors)turnDown:(unsigned int)range;
-(ZMVideoSDKErrors)zoomIn:(unsigned int)range;
-(ZMVideoSDKErrors)zoomOut:(unsigned int)range;

New interface in ZMVideoSDKUser:

- (ZMVideoSDKRemoteCameraControlHelper *)getRemoteCameraControlHelper;

New interface in ZMVideoSDKVideoHelper.h:

-(ZMVideoSDKErrors)canControlCamera:(BOOL *)canControl;
-(ZMVideoSDKErrors)turnCameraLeft:(unsigned int)range;
-(ZMVideoSDKErrors)turnCameraRight:(unsigned int)range;
-(ZMVideoSDKErrors)turnCameraUp:(unsigned int)range;
-(ZMVideoSDKErrors)turnCameraDown:(unsigned int)range;
-(ZMVideoSDKErrors)zoomCameraIn:(unsigned int)range;
-(ZMVideoSDKErrors)zoomCameraOut:(unsigned int)range;

New callbacks in ZMVideoSDKDelegate:

- (void)onCameraControlRequestResult:(ZMVideoSDKUser*)user approved:(BOOL)isApproved;
- (void)onCameraControlRequestReceived:(ZMVideoSDKUser*)user cameraControlRequestType:(ZMVideoSDKCameraControlRequestType)requestType requestHandler:(ZMVideoSDKCameraControlRequestHandler*)cameraControlRequestHandler;

New status in ZMVideoSDKCameraControlRequestType:

ZMVideoSDKCameraControlRequestType_RequestControl
ZMVideoSDKCameraControlRequestType_GiveUpControl

New interface to support customized close times when a session is idle:

New interface in ZMVideoSDKSessionContext:

@property (nonatomic, assign, readwrite) unsigned int sessionIdleTimeoutMins;

New callbacks when the host asks you to unmute in ZMVideoSDKDelegate:

- (void)onHostAskUnmute;

Enhancements

  • Improved role management. All users now require a defined role_type:

    • role_type=1 — The user is the host. Only one user should have this role. If they leave the session and rejoin, they will regain host privileges.

    • role_type=0 — The user is an attendee. Other users should be assigned to this role.

  • The user_identity field is now optional.

  • Updated API documentation.

Fixed

  • Issue where you cannot automatically “Page Up” when the last page only displays one participant and the participant leaves in the demo.

  • Typo in the sample app.

  • Bug when joining a livestream session and cannot start video.

  • Issue where live streaming failed to start.