// // MobileRTCMeetingService.h // MobileRTC // // Created by Zoom Video Communications on 8/7/14. // Copyright (c) 2019 Zoom Video Communications, Inc. All rights reserved. // #import <Foundation/Foundation.h> #import "MobileRTCConstants.h" #import "MobileRTCMeetingDelegate.h" /** * @brief Provides settings for starting a meeting, such as enabling screen sharing, microphone, and camera. */ @interface MobileRTCMeetingStartParam : NSObject /** * @brief Start meeting with screen sharing immediately enabled. */ @property (nonatomic, assign, readwrite) BOOL isAppShare; /** * @brief Start meeting with microphone disabled. */ @property (nonatomic, assign, readwrite) BOOL noAudio; /** * @brief Start meeting with camera disabled. */ @property (nonatomic, assign, readwrite) BOOL noVideo; /** * @brief Developer-specified string to track end user. * @note Provided in webhook event, not used internally by SDK. */ @property (nullable, nonatomic, retain, readwrite) NSString * customerKey; /** *@brief Special ID for the personal link name in organization URL, like "yourcompany" in yourcompany.zoom.us. */ @property (nullable, nonatomic, retain, readwrite) NSString * vanityID; /** * @brief Meeting number, in format like 123456789. */ @property (nullable, nonatomic, retain, readwrite) NSString * meetingNumber; @end /** * @brief Provides settings for a logged-in user to start a meeting. */ @interface MobileRTCMeetingStartParam4LoginlUser : MobileRTCMeetingStartParam @end /** * @brief Provides parameters for a non-logged-in user (an anonymous user) to start a meeting. * @warning The ZAK cannot be null. */ @interface MobileRTCMeetingStartParam4WithoutLoginUser : MobileRTCMeetingStartParam /** * @brief User type enum defined in {@link MobileRTCUserType}. */ @property (nonatomic, assign, readwrite) MobileRTCUserType userType; /** * @brief The user's display name in the meeting. */ @property (nullable, nonatomic, retain, readwrite) NSString * userName; /** * @brief The user's Zoom Access Key (ZAK) token. * @warning The ZAK cannot be null. */ @property (nonnull, nonatomic, retain, readwrite) NSString * zak; @end /** * @brief Provides settings for joining a meeting, such as start meeting with microphone or camera disabled. */ @interface MobileRTCMeetingJoinParam : NSObject /** * @brief Start meeting with microphone disabled. */ @property (nonatomic, assign, readwrite) BOOL noAudio; /** * @brief Start meeting with camera disabled. */ @property (nonatomic, assign, readwrite) BOOL noVideo; /** * @brief Developer-specified string to track end user. * @note Provided in webhook event, not used internally by SDK. */ @property (nullable, nonatomic, retain, readwrite) NSString * customerKey; /** * @brief Special ID for the personal link name in the organization URL, like "yourcompany" in yourcompany.zoom.us. */ @property (nullable, nonatomic, retain, readwrite) NSString * vanityID; /** * @brief Meeting number, in format like 123456789. */ @property (nullable, nonatomic, retain, readwrite) NSString * meetingNumber; /** * @brief User name. */ @property (nullable, nonatomic, retain, readwrite) NSString * userName; /** * @brief Password. */ @property (nullable, nonatomic, retain, readwrite) NSString * password; /** * @brief WebinarToken. */ @property (nullable, nonatomic, retain, readwrite) NSString * webinarToken; /** * @brief The user's Zoom Access Key (ZAK) token. */ @property (nullable, nonatomic, retain, readwrite) NSString * zak; /** * @brief Token that provides privileges when a user joins a meeting, for example, local recording permissions, streaming to raw, or archiving to raw. */ @property(nullable, nonatomic, retain, readwrite) NSString *appPrivilegeToken; /** * @brief Token to join a meeting. */ @property (nullable, nonatomic, retain, readwrite) NSString * join_token; @end /** * @brief Interface that provides settings for legal notice content for Webinar registration. */ @interface MobileRTCWebinarRegistLegalNoticeContent : NSObject /** * @brief Formatted HTML content string. * @note Formatting parameters in order are account owner URL, terms URL, and privacy policy URL. */ @property (nullable, nonatomic, retain, readwrite) NSString * formattedHtmlContent; /** * @brief Account owner URL in formatted HTML content. */ @property (nullable, nonatomic, retain, readwrite) NSString * accountOwnerUrl; /** *@brief Terms URL in formatted HTML content. */ @property (nullable, nonatomic, retain, readwrite) NSString * termsUrl; /** * @brief Privacy policy URL in formatted HTML content. */ @property (nullable, nonatomic, retain, readwrite) NSString * privacyPolicyUrl; @end /** * @brief Provides settings for meetings. */ @interface MobileRTCMeetingParameter : NSObject /** * @brief Meeting type. {@link MobileRTCMeetingType} */ @property (nonatomic, assign) MobileRTCMeetingType meetingType; /** * @brief View only or not. YES indicates to view only. */ @property (nonatomic, assign) BOOL isViewOnly; /** * @brief Auto local recording enabled or not. YES indicates to enable auto local recording. */ @property (nonatomic, assign) BOOL isAutoRecordingLocal; /** * @brief Auto cloud recording enabled or not. YES indicates to enable auto cloud recording. */ @property (nonatomic, assign) BOOL isAutoRecordingCloud; /** * @brief Meeting number. */ @property (nonatomic, assign) unsigned long long meetingNumber; /** * @brief Meeting topic. */ @property (nonatomic, retain) NSString * _Nullable meetingTopic; /** * @brief Meeting host. */ @property (nonatomic, retain) NSString * _Nullable meetingHost; @end @protocol MobileRTCMeetingServiceDelegate; /** * @brief Enables the client to start or join a meeting. * @warning The meeting service allows only one concurrent operation at a time. Only one API call is in progress at any given time. */ @interface MobileRTCMeetingService : NSObject /** * @brief Callback to receive meeting events. */ @property (nullable, assign, nonatomic) id<MobileRTCMeetingServiceDelegate> delegate; /** * @brief Callback for custom UI meeting events. Custom UI features enable you to customize the user interface instead of using the default client view. */ @property (nullable, assign, nonatomic) id<MobileRTCCustomizedUIMeetingDelegate> customizedUImeetingDelegate; /** * @brief Start a meeting with MobileRTCMeetingStartParam parameter. * @note For a non-logged-in user, create an instance via MobileRTCMeetingStartParam4WithoutLoginUser to pass the parameters. For a logged-in user, create an instance via MobileRTCMeetingStartParam4LoginlUser to pass the parameters. * @param param Create an instance with settings via MobileRTCMeetingStartParam. * @return The state of the meeting: started or failed. * @warning A meeting started with wrong parameters will return MobileRTCMeetError_InvalidArguments. */ - (MobileRTCMeetError)startMeetingWithStartParam:(nonnull MobileRTCMeetingStartParam*)param; /** * @brief Join a meeting with MobileRTCMeetingJoinParam parameter. * @param param Create an instance with settings via MobileRTCMeetingJoinParam. * @return The state of the meeting: started or failed. * @note If the app is in CallKit mode, set parameter:userName to empty. CallKit lets you integrate your calling services with other call-related apps on the system. */ - (MobileRTCMeetError)joinMeetingWithJoinParam:(nonnull MobileRTCMeetingJoinParam*)param; /** * @brief Start or join a Zoom meeting with zoom web URL. * @param meetingUrl Zoom web meeting URL. * @return The state of the meeting: started or failed. */ - (MobileRTCMeetError)handZoomWebUrl:(nonnull NSString*)meetingUrl; /** * @brief Get the current meeting state. * @return Current meeting state. {@link MobileRTCMeetingState} */ - (MobileRTCMeetingState)getMeetingState; /** * @brief End or leave the current meeting. * @param cmd The command for leaving the current meeting. Only a host can end the meeting. {@link LeaveMeetingCmd} */ - (void)leaveMeetingWithCmd:(LeaveMeetingCmd)cmd; /** * @brief This method will return the view of meeting UI, which enables customers to add their own view in the meeting UI. * @return The view of the current meeting. If there is no ongoing meeting, it will return nil. * @warning Only valid in non-custom UI (only valid in Zoom meeting UI). */ - (UIView * _Nullable)meetingView; /** * @brief Set the customized invitation domain. * @param invitationDomain: Specify the customized invitation domain. For example, https://example.com. * @return YES means success, otherwise it's not successful. * @warning This method can only be called after auth ready and before join or start meeting. */ - (BOOL)setCustomizedInvitationDomain:(NSString *_Nonnull)invitationDomain; /** * @brief Get annotation over share legal notices prompt. * @return annotation over share legal notices prompt. */ - (NSString *_Nullable)getWebinarRegistrationLegalNoticesPrompt; /** * @brief Get annotation over share legal notices explained. * @return annotation over share legal notices explained. */ - (MobileRTCWebinarRegistLegalNoticeContent *_Nullable)getWebinarRegistrationLegalNoticesExplained; @end