From 6342e5054594c1c142ff657972166953bfd25bc9 Mon Sep 17 00:00:00 2001 From: Sudhir Kumar Date: Mon, 6 May 2024 13:33:33 +0530 Subject: [PATCH 1/2] ifix: add individuals public class documentation --- docs/ios-core/reference/DyteChat.md | 212 ++++++ docs/ios-core/reference/DyteClient.md | 151 ++++ docs/ios-core/reference/DyteLivestream.md | 30 + .../ios-core/reference/DyteMediaPermission.md | 44 ++ .../reference/DyteMeetingJoinedParticipant.md | 112 +++ .../reference/DyteMeetingParticipant.md | 122 ++++ .../reference/DyteMeetingType copy 2.md | 44 ++ docs/ios-core/reference/DyteMeetingType.md | 44 ++ docs/ios-core/reference/DyteMeta.md | 102 +++ docs/ios-core/reference/DyteParticipant.md | 14 + .../reference/DytePermissionsPreset.md | 291 ++++++++ docs/ios-core/reference/DytePlugin.md | 95 +++ docs/ios-core/reference/DytePlugins.md | 37 + docs/ios-core/reference/DytePolls.md | 56 ++ docs/ios-core/reference/DyteRecording.md | 44 ++ docs/ios-core/reference/DyteRemote.md | 49 ++ .../reference/DyteRoomParticipants.md | 673 ++++++++++++++++++ docs/ios-core/reference/DyteSelf.md | 262 +++++++ docs/ios-core/reference/DyteSelfMedia.md | 177 +++++ .../ios-core/reference/DyteSelfParticipant.md | 14 + docs/ios-core/reference/DyteStage.md | 156 ++++ docs/ios-core/reference/DyteThemePreset.md | 85 +++ .../reference/DyteWaitlistedParticipant.md | 41 ++ docs/ios-core/reference/StageStatus.md | 44 ++ docs/ios-core/reference/WaitListStatus.md | 44 ++ docs/ios-core/reference/_category_.json | 5 + 26 files changed, 2948 insertions(+) create mode 100644 docs/ios-core/reference/DyteChat.md create mode 100644 docs/ios-core/reference/DyteClient.md create mode 100644 docs/ios-core/reference/DyteLivestream.md create mode 100644 docs/ios-core/reference/DyteMediaPermission.md create mode 100644 docs/ios-core/reference/DyteMeetingJoinedParticipant.md create mode 100644 docs/ios-core/reference/DyteMeetingParticipant.md create mode 100644 docs/ios-core/reference/DyteMeetingType copy 2.md create mode 100644 docs/ios-core/reference/DyteMeetingType.md create mode 100644 docs/ios-core/reference/DyteMeta.md create mode 100644 docs/ios-core/reference/DyteParticipant.md create mode 100644 docs/ios-core/reference/DytePermissionsPreset.md create mode 100644 docs/ios-core/reference/DytePlugin.md create mode 100644 docs/ios-core/reference/DytePlugins.md create mode 100644 docs/ios-core/reference/DytePolls.md create mode 100644 docs/ios-core/reference/DyteRecording.md create mode 100644 docs/ios-core/reference/DyteRemote.md create mode 100644 docs/ios-core/reference/DyteRoomParticipants.md create mode 100644 docs/ios-core/reference/DyteSelf.md create mode 100644 docs/ios-core/reference/DyteSelfMedia.md create mode 100644 docs/ios-core/reference/DyteSelfParticipant.md create mode 100644 docs/ios-core/reference/DyteStage.md create mode 100644 docs/ios-core/reference/DyteThemePreset.md create mode 100644 docs/ios-core/reference/DyteWaitlistedParticipant.md create mode 100644 docs/ios-core/reference/StageStatus.md create mode 100644 docs/ios-core/reference/WaitListStatus.md create mode 100644 docs/ios-core/reference/_category_.json diff --git a/docs/ios-core/reference/DyteChat.md b/docs/ios-core/reference/DyteChat.md new file mode 100644 index 0000000000..d4f998c626 --- /dev/null +++ b/docs/ios-core/reference/DyteChat.md @@ -0,0 +1,212 @@ +--- +sidebar_position: 7 +web_core_version: 1.20.0 +--- + + + + + +This is the chat module, which can be used to send and receive messages from the meeting. + +- [DyteChat](#module_DyteChat) + - [.messages](#module_DyteChat+messages) + - [.channels](#module_DyteChat+channels) + - [.roomJoined](#module_DyteChat+roomJoined) + - [.pinned](#module_DyteChat+pinned) + - [.sendTextMessage(message)](#module_DyteChat+sendTextMessage) + - [.sendImageMessage(image)](#module_DyteChat+sendImageMessage) + - [.sendFileMessage(file)](#module_DyteChat+sendFileMessage) + - [.sendMessage(message, participantIds)](#module_DyteChat+sendMessage) + - [.getMessagesByUser(userId)](#module_DyteChat+getMessagesByUser) + - [.getMessagesByType(type)](#module_DyteChat+getMessagesByType) + - [.pin(id)](#module_DyteChat+pin) + - [.unpin(id)](#module_DyteChat+unpin) + - [.getMessages()](#module_DyteChat+getMessages) + - [.createChannel()](#module_DyteChat+createChannel) + - [.updateChannel()](#module_DyteChat+updateChannel) + - [.sendMessageToChannel(message, channelId)](#module_DyteChat+sendMessageToChannel) + - [.getChannelMembers()](#module_DyteChat+getChannelMembers) + - [.searchMessages()](#module_DyteChat+searchMessages) + - [.markLastReadMessage()](#module_DyteChat+markLastReadMessage) + + + +### meeting.chat.messages + +An array of chat messages. + + + +### meeting.chat.channels + +An Array of all available channels. + + + +### meeting.chat.roomJoined + +Returns true if the local participant has joined the meeting. + + + +### meeting.chat.pinned + +Returns an array of pinned messages. + + + +### meeting.chat.sendTextMessage(message) + +Sends a chat text message to the room. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ------- | ------------------------------------------ | +| message | The message that must be sent to the room. | + + + +### meeting.chat.sendImageMessage(image) + +Sends an image message to the meeting. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ----- | ----------------------------- | +| image | The image that is to be sent. | + + + +### meeting.chat.sendFileMessage(file) + +Sends a file to the meeting. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ----- | -------------- | +| file | A File object. | + + + +### meeting.chat.sendMessage(message, participantIds) + +Sends a message to the meeting. This method can be used to send text, image, +or file messages. The message type is determined by the key 'type' in `message` +object. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| -------------- | -------------------------------------------------------- | +| message | An object including the type and content of the message. | +| participantIds | An array including the userIds of the participants. | + + + +### meeting.chat.getMessagesByUser(userId) + +Returns an array of messages sent by a specific userId. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ------ | ---------------------------------------------- | +| userId | The user id of the user that sent the message. | + + + +### meeting.chat.getMessagesByType(type) + +Returns an array of 'text', 'image' or 'file' messages. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ----- | --------------------------- | +| type | 'text', 'image', or 'file'. | + + + +### meeting.chat.pin(id) + +Pins a chat message + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ----- | ------------------------------ | +| id | ID of the message to be pinned | + + + +### meeting.chat.unpin(id) + +Unpins a chat message + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| ----- | -------------------------------- | +| id | ID of the message to be unpinned | + + + +### meeting.chat.getMessages() + +Gets chat messages in a paginated manner + +**Kind**: instance method of [DyteChat](#module_DyteChat) + + +### meeting.chat.createChannel() + +Creates a channel with specified name and userIds as members + +**Kind**: instance method of [DyteChat](#module_DyteChat) + + +### meeting.chat.updateChannel() + +Updates the channel + +**Kind**: instance method of [DyteChat](#module_DyteChat) + + +### meeting.chat.sendMessageToChannel(message, channelId) + +Sends a message to a channel. This method can be used to send text, image, +or file messages. The message type is determined by the key 'type' in `message` +object. + +**Kind**: instance method of [DyteChat](#module_DyteChat) + +| Param | Description | +| --------- | -------------------------------------------------------- | +| message | An object including the type and content of the message. | +| channelId | Id of the channel where you want to send the message. | + + + +### meeting.chat.getChannelMembers() + +returns a list of members added to the channel + +**Kind**: instance method of [DyteChat](#module_DyteChat) + + +### meeting.chat.searchMessages() + +search messages + +**Kind**: instance method of [DyteChat](#module_DyteChat) + + +### meeting.chat.markLastReadMessage() + +marks last read message in a channel + +**Kind**: instance method of [DyteChat](#module_DyteChat) diff --git a/docs/ios-core/reference/DyteClient.md b/docs/ios-core/reference/DyteClient.md new file mode 100644 index 0000000000..1d33747290 --- /dev/null +++ b/docs/ios-core/reference/DyteClient.md @@ -0,0 +1,151 @@ +--- +sidebar_position: 1 +web_core_version: 1.20.0 +--- + + + + + +The DyteClient class is the main class of the web core library. +An object of the DyteClient class can be created using +`await DyteClient.init({ ... })`. Typically, an object of `DyteClient` is +named `meeting`. + +- [DyteClient](#module_DyteClient) + - _instance_ + - [.participants](#module_DyteClient+participants) + - [.self](#module_DyteClient+self) + - [.meta](#module_DyteClient+meta) + - [.ai](#module_DyteClient+ai) + - [.plugins](#module_DyteClient+plugins) + - [.chat](#module_DyteClient+chat) + - [.polls](#module_DyteClient+polls) + - [.remote](#module_DyteClient+remote) + - [.connectedMeetings](#module_DyteClient+connectedMeetings) + - ~~[.joinRoom()](#module_DyteClient+joinRoom)~~ + - ~~[.leaveRoom()](#module_DyteClient+leaveRoom)~~ + - [.join()](#module_DyteClient+join) + - [.leave()](#module_DyteClient+leave) + - _static_ + - [.init(options)](#module_DyteClient.init) + - _inner_ + - [~networkCall](#module_DyteClient..networkCall) + + + +### meeting.participants + +The `participants` object consists of 4 maps of participants, +`waitlisted`, `joined`, `active`, `pinned`. The maps are indexed by +`peerId`s, and the values are the corresponding participant objects. + + + +### meeting.self + +The `self` object can be used to manipulate audio and video settings, +and other configurations for the local participant. This exposes methods +to enable and disable media tracks, share the user's screen, etc. + + + +### meeting.meta + +The `room` object stores information about the current meeting, such +as chat messages, polls, room name, etc. + + + +### meeting.ai + +The `ai` object is used to interface with Dyte's AI features. +You can obtain the live meeting transcript and use other meeting AI +features such as summary, and agenda using this object. + + + +### meeting.plugins + +The `plugins` object stores information about the plugins available in +the current meeting. It exposes methods to activate and deactivate them. + + + +### meeting.chat + +The chat object stores the chat messages that were sent in the meeting. +This includes text messages, images, and files. + + + +### meeting.polls + +The polls object stores the polls that were initiated in the meeting. +It exposes methods to create and vote on polls. + + + +### meeting.remote + +The remote object stores the remote control requests for the meeting. +It exposes methods to request, accept and end the remote control. + + + +### meeting.connectedMeetings + +The connectedMeetings object stores the connected meetings states. +It exposes methods to create/read/update/delete methods for connected meetings. + + + +### ~~meeting.joinRoom()~~ + +**_Deprecated_** + +The `joinRoom()` method can be used to join the meeting. A `roomJoined` event +is emitted on `self` when the room is joined successfully. + +**Kind**: instance method of [DyteClient](#module_DyteClient) + + +### ~~meeting.leaveRoom()~~ + +**_Deprecated_** + +The `leaveRoom()` method can be used to leave a meeting. + +**Kind**: instance method of [DyteClient](#module_DyteClient) + + +### meeting.join() + +The `join()` method can be used to join the meeting. A `roomJoined` event +is emitted on `self` when the room is joined successfully. + +**Kind**: instance method of [DyteClient](#module_DyteClient) + + +### meeting.leave() + +The `leave()` method can be used to leave a meeting. + +**Kind**: instance method of [DyteClient](#module_DyteClient) + + +### meeting.init(options) + +The `init` method can be used to instantiate the DyteClient class. +This returns an instance of DyteClient, which can be used to perform +actions on the meeting. + +**Kind**: static method of [DyteClient](#module_DyteClient) + +| Param | Description | +| ----------------- | ----------------------------------------------------------------------------- | +| options | The options object. | +| options.roomName | The name of the room. (If you are using V2 Api's you don't need to send this) | +| options.authToken | The authorization token received using the API. | +| options.apiBase | The base URL of the API. | +| options.defaults | The default audio and video settings. | diff --git a/docs/ios-core/reference/DyteLivestream.md b/docs/ios-core/reference/DyteLivestream.md new file mode 100644 index 0000000000..7f21110f26 --- /dev/null +++ b/docs/ios-core/reference/DyteLivestream.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 11 +web_core_version: 1.20.0 +--- + + + + + +The DyteLivestream module represents the state of the current livestream, and allows +to start/stop live streams. + +- [DyteLivestream](#module_DyteLivestream) + - [.start()](#module_DyteLivestream+start) + - [.stop()](#module_DyteLivestream+stop) + + + +### meeting.livestream.start() + +Starts livestreaming the meeting. + +**Kind**: instance method of [DyteLivestream](#module_DyteLivestream) + + +### meeting.livestream.stop() + +Stops livestreaming the meeting. + +**Kind**: instance method of [DyteLivestream](#module_DyteLivestream) diff --git a/docs/ios-core/reference/DyteMediaPermission.md b/docs/ios-core/reference/DyteMediaPermission.md new file mode 100644 index 0000000000..a772523414 --- /dev/null +++ b/docs/ios-core/reference/DyteMediaPermission.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +```swift +enum StageStatus { + case OFF_STAGE + case REQUESTED_TO_JOIN_STAGE + case ACCEPTED_TO_JOIN_STAGE + case REJECTED_TO_JOIN_STAGE + case ON_STAGE +} +``` + +The DyteStageStatus represent an enum to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage. Below are the specificed status of the stage. + +### case OFF_STAGE + +when the participant is not on the Stage ie He/She is a viewer and can't produce media + +### case REQUESTED_TO_JOIN_STAGE + +When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` + +### case ACCEPTED_TO_JOIN_STAGE + +When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or +When request to join stage raised by the viewer is accepted by the host. + +### case REJECTED_TO_JOIN_STAGE + +When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` + +### case ON_STAGE + +when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeetingJoinedParticipant.md b/docs/ios-core/reference/DyteMeetingJoinedParticipant.md new file mode 100644 index 0000000000..5e00bb3dfe --- /dev/null +++ b/docs/ios-core/reference/DyteMeetingJoinedParticipant.md @@ -0,0 +1,112 @@ +--- +sidebar_position: 4 +web_core_version: 1.20.0 +--- + + + + +**Subclass** of [DyteMeetingParticipant](/ios-core-new/reference/DyteMeetingParticipant) +This class represents a single participant in the meeting. +The participant object can be accessed from one of the participant lists +present in the `meeting.participants` object. For example, + +```swift +let participant1 = meeting.participants.active[0]; +let participant2 = meeting.participants.joined[0]; +``` + +- [DyteParticipant](#module_DyteParticipant) + - [.isPinned](#module_DyteParticipant--this.+isPinned) + - [.pin()](#module_DyteParticipant--this.+pin) + - [.unpin()](#module_DyteParticipant--this.+unpin) + - [.kick()](#module_DyteParticipant--this.+kick) + - [.disableAudio()](#module_DyteParticipant--this.+disableAudio) + - [.disableVideo()](#module_DyteParticipant--this.+disableVideo) + - [.getVideoView()](#module_DyteParticipant--this.+getVideoView) + - [.getScreenShareVideoView()](#module_DyteParticipant--this.+getScreenShareVideoView) + + + +#### Check is pinned + +```swift +let isPinned: Bool +``` + +Returns true if the participant is pinned. + + + +#### Pinned participant + +```swift +func pin() +``` + +Returns `participant.id` if user has permission +to pin participants. + + + +#### Unpinned participant + +```swift +func unpin() +``` + +Returns `participant.id` if user has permission +to unpin participants. + + + +#### Kick participant + +```swift +func kick() +``` + +Kicks this participant from the meeting. +Requires the permission to kick a participant. + + + +#### Disable Audio + +```swift +func disableAudio() +``` + +Disables audio for this participant. +Requires the permission to disable participant audio. + + + +#### Disable Video + +```swift +func disableVideo() +``` + +Disables video for this participant. +Requires the permission to disable video for a participant. + + + +#### Get video view + +```swift +fun getVideoView(): VideoView? +``` + +Return a view which is used to render participant camera streams. + + + +#### Get ScreenShare video view + +```swift +fun getScreenShareVideoView(): VideoView +``` + +Return a view which is used to render participant screen streams. diff --git a/docs/ios-core/reference/DyteMeetingParticipant.md b/docs/ios-core/reference/DyteMeetingParticipant.md new file mode 100644 index 0000000000..e53d24c06b --- /dev/null +++ b/docs/ios-core/reference/DyteMeetingParticipant.md @@ -0,0 +1,122 @@ +--- +sidebar_position: 4 +web_core_version: 1.20.0 +--- + + + + + +This class is a parent class of [DyteMeetingJoinedParticipant](/ios-core-new/reference/DyteMeetingJoinedParticipant). + +```swift +let participant1 = meeting.participants.active[0]; +let participant2 = meeting.participants.joined[0]; +``` + +open val id: String, +open val userId: String, +open val name: String, +open val picture: String?, +open val isHost: Boolean, +open val clientSpecificId: String?, +open val flags: ParticipantFlags, +open val presetName: String, + +- [DyteParticipant](#module_DyteParticipant) + - [.id](#module_DyteParticipant--this.+id) + - [.userId](#module_DyteParticipant--this.+userId) + - [.name](#module_DyteParticipant--this.+name) + - [.picture](#module_DyteParticipant--this.+picture) + - [.clientSpecificId](#module_DyteParticipant--this.+clientSpecificId) + - [.videoEnabled](#module_DyteParticipant--this.+videoEnabled) + - [.audioEnabled](#module_DyteParticipant--this.+audioEnabled) + - [.presetName](#module_DyteParticipant--this.+presetName) + - [.stageStatus](#module_DyteParticipant--this.+stageStatus) + +### self.id + +```swift +let id: String +``` + +The peer ID of the participant. +The participants are indexed by this ID in the participant class. + + + +### self.userId + +```swift +let userId: String +``` + +The user ID of the participant. + + + +### self.name + +```swift +let name: String +``` + +The name of the participant. + + + +### self.picture + +```swift +let picture: String? +``` + +The picture of the participant and is optional. + + + +### self.clientSpecificId + +```swift +let clientSpecificId: String? +``` + +The clientSpecificId of the participant. Which is optional. + +### self.videoEnabled + +```swift +let videoEnabled: Bool +``` + +This is true if the participant's video is enabled. + + + +### self.audioEnabled + +```swift +let audioEnabled: Bool +``` + +This is true if the participant's audio is enabled. + + + +### self.presetName + +```swift +let presetName: String +``` + +The preset of the participant. + + + +### self.stageStatus + +```swift +let stageStatus: StageStatus? +``` + +Denotes the participant's current stage status. For different states please check [StageStatus](/ios-core-new/reference/StageStatus) diff --git a/docs/ios-core/reference/DyteMeetingType copy 2.md b/docs/ios-core/reference/DyteMeetingType copy 2.md new file mode 100644 index 0000000000..a772523414 --- /dev/null +++ b/docs/ios-core/reference/DyteMeetingType copy 2.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +```swift +enum StageStatus { + case OFF_STAGE + case REQUESTED_TO_JOIN_STAGE + case ACCEPTED_TO_JOIN_STAGE + case REJECTED_TO_JOIN_STAGE + case ON_STAGE +} +``` + +The DyteStageStatus represent an enum to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage. Below are the specificed status of the stage. + +### case OFF_STAGE + +when the participant is not on the Stage ie He/She is a viewer and can't produce media + +### case REQUESTED_TO_JOIN_STAGE + +When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` + +### case ACCEPTED_TO_JOIN_STAGE + +When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or +When request to join stage raised by the viewer is accepted by the host. + +### case REJECTED_TO_JOIN_STAGE + +When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` + +### case ON_STAGE + +when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeetingType.md b/docs/ios-core/reference/DyteMeetingType.md new file mode 100644 index 0000000000..a772523414 --- /dev/null +++ b/docs/ios-core/reference/DyteMeetingType.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +```swift +enum StageStatus { + case OFF_STAGE + case REQUESTED_TO_JOIN_STAGE + case ACCEPTED_TO_JOIN_STAGE + case REJECTED_TO_JOIN_STAGE + case ON_STAGE +} +``` + +The DyteStageStatus represent an enum to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage. Below are the specificed status of the stage. + +### case OFF_STAGE + +when the participant is not on the Stage ie He/She is a viewer and can't produce media + +### case REQUESTED_TO_JOIN_STAGE + +When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` + +### case ACCEPTED_TO_JOIN_STAGE + +When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or +When request to join stage raised by the viewer is accepted by the host. + +### case REJECTED_TO_JOIN_STAGE + +When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` + +### case ON_STAGE + +when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeta.md b/docs/ios-core/reference/DyteMeta.md new file mode 100644 index 0000000000..0e1693c290 --- /dev/null +++ b/docs/ios-core/reference/DyteMeta.md @@ -0,0 +1,102 @@ +--- +sidebar_position: 6 +web_core_version: 1.20.0 +--- + + + + + +This consists of the metadata of the meeting, such as the room name and the title. + +- [DyteMeta](#module_DyteMeta) + - [.selfActiveTab](#module_DyteMeta+selfActiveTab) + - [.broadcastTabChanges](#module_DyteMeta+broadcastTabChanges) + - [.viewType](#module_DyteMeta+viewType) + - [.meetingStartedTimestamp](#module_DyteMeta+meetingStartedTimestamp) + - [.meetingTitle](#module_DyteMeta+meetingTitle) + - ~~[.joined](#module_DyteMeta+joined)~~ + - [.roomName](#module_DyteMeta+roomName) + - [.mediaConnected](#module_DyteMeta+mediaConnected) + - [.socketConnected](#module_DyteMeta+socketConnected) + - [.setBroadcastTabChanges(broadcastTabChanges)](#module_DyteMeta+setBroadcastTabChanges) + - [.setSelfActiveTab(spotlightTab)](#module_DyteMeta+setSelfActiveTab) + + + +### meeting.meta.selfActiveTab + +Represents the current active tab + + + +### meeting.meta.broadcastTabChanges + +Represents whether current user is spotlighted + + + +### meeting.meta.viewType + +The `viewType` tells the type of the meeting +possible values are WEBINAR, GROUP_CALL + + + +### meeting.meta.meetingStartedTimestamp + +The timestamp of the time when the meeting started. + + + +### meeting.meta.meetingTitle + +The title of the meeting. + + + +### ~~meeting.meta.joined~~ + +**_Deprecated_** + + + +### meeting.meta.roomName + +The room name of the meeting. + + + +### meeting.meta.mediaConnected + +Has room-node connection been made. + + + +### meeting.meta.socketConnected + +This is set to true if user has successfully connected to the socket. + + + +### meeting.meta.setBroadcastTabChanges(broadcastTabChanges) + +Sets current user as broadcasting tab changes + +**Kind**: instance method of [DyteMeta](#module_DyteMeta) + +| Param | +| ------------------- | +| broadcastTabChanges | + + + +### meeting.meta.setSelfActiveTab(spotlightTab) + +Sets current active tab for user + +**Kind**: instance method of [DyteMeta](#module_DyteMeta) + +| Param | +| ------------ | +| spotlightTab | diff --git a/docs/ios-core/reference/DyteParticipant.md b/docs/ios-core/reference/DyteParticipant.md new file mode 100644 index 0000000000..e2e12b6453 --- /dev/null +++ b/docs/ios-core/reference/DyteParticipant.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 4 +web_core_version: 1.20.0 +--- + + + + + +This is a map of participants, indexed by `participant.id` (a participant's peer ID). +This map emits an event whenever a participant present in the map emits an event. +For example, when a participant is added to this map, a `participantJoined` event is +emitted from the map. When a participant object emits an event `videoUpdate`, the map +re-emits that event (provided the participant is present in the map). diff --git a/docs/ios-core/reference/DytePermissionsPreset.md b/docs/ios-core/reference/DytePermissionsPreset.md new file mode 100644 index 0000000000..d27fcff3db --- /dev/null +++ b/docs/ios-core/reference/DytePermissionsPreset.md @@ -0,0 +1,291 @@ +--- +sidebar_position: 5 +web_core_version: 1.20.0 +--- + + + + + +The DytePermissionsPreset class represents the meeting permissions for the current participant + +- [DytePermissionsPreset](#module_DytePermissionsPreset) + - [.stageEnabled](#module_DytePermissionsPreset+stageEnabled) + - [.stageAccess](#module_DytePermissionsPreset+stageAccess) + - [.acceptWaitingRequests](#module_DytePermissionsPreset+acceptWaitingRequests) + - [.requestProduceVideo](#module_DytePermissionsPreset+requestProduceVideo) + - [.requestProduceAudio](#module_DytePermissionsPreset+requestProduceAudio) + - [.requestProduceScreenshare](#module_DytePermissionsPreset+requestProduceScreenshare) + - [.canAllowParticipantAudio](#module_DytePermissionsPreset+canAllowParticipantAudio) + - [.canAllowParticipantScreensharing](#module_DytePermissionsPreset+canAllowParticipantScreensharing) + - [.canAllowParticipantVideo](#module_DytePermissionsPreset+canAllowParticipantVideo) + - [.canDisableParticipantAudio](#module_DytePermissionsPreset+canDisableParticipantAudio) + - [.canDisableParticipantVideo](#module_DytePermissionsPreset+canDisableParticipantVideo) + - [.kickParticipant](#module_DytePermissionsPreset+kickParticipant) + - [.pinParticipant](#module_DytePermissionsPreset+pinParticipant) + - [.canRecord](#module_DytePermissionsPreset+canRecord) + - ~~[.waitingRoomType](#module_DytePermissionsPreset+waitingRoomType)~~ + - [.waitingRoomBehaviour](#module_DytePermissionsPreset+waitingRoomBehaviour) + - [.plugins](#module_DytePermissionsPreset+plugins) + - [.polls](#module_DytePermissionsPreset+polls) + - ~~[.produceVideo](#module_DytePermissionsPreset+produceVideo)~~ + - ~~[.requestProduce](#module_DytePermissionsPreset+requestProduce)~~ + - [.canProduceVideo](#module_DytePermissionsPreset+canProduceVideo) + - ~~[.produceScreenshare](#module_DytePermissionsPreset+produceScreenshare)~~ + - [.canProduceScreenshare](#module_DytePermissionsPreset+canProduceScreenshare) + - ~~[.produceAudio](#module_DytePermissionsPreset+produceAudio)~~ + - [.canProduceAudio](#module_DytePermissionsPreset+canProduceAudio) + - [.chatPublic](#module_DytePermissionsPreset+chatPublic) + - [.chatPrivate](#module_DytePermissionsPreset+chatPrivate) + - [.hiddenParticipant](#module_DytePermissionsPreset+hiddenParticipant) + - [.showParticipantList](#module_DytePermissionsPreset+showParticipantList) + - ~~[.canChangeParticipantRole](#module_DytePermissionsPreset+canChangeParticipantRole)~~ + - [.canChangeParticipantPermissions](#module_DytePermissionsPreset+canChangeParticipantPermissions) + - ~~[.canChangeTheme](#module_DytePermissionsPreset+canChangeTheme)~~ + - ~~[.canPresent](#module_DytePermissionsPreset+canPresent)~~ + - ~~[.maxScreenShareCount](#module_DytePermissionsPreset+maxScreenShareCount)~~ + - [.canLivestream](#module_DytePermissionsPreset+canLivestream) + + + +### meeting.self.permissions.stageEnabled + +The `stageEnabled` property returns a boolean value. +If `true`, stage management is available for the participant. + + + +### meeting.self.permissions.stageAccess + +The `stageAccess` property dictactes how a user interacts with the stage. +There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`; + + + +### meeting.self.permissions.acceptWaitingRequests + +The `acceptWaitingRequests` returns boolean value. +If `true`, participant can accept the request of waiting participant. + + + +### meeting.self.permissions.requestProduceVideo + +The `requestProduceVideo` returns boolean value. +If `true`, participant can send request to participants +about producing video. + + + +### meeting.self.permissions.requestProduceAudio + +The `requestProduceAudio` returns boolean value. +If `true`, participant can send request to participants +about producing audio. + + + +### meeting.self.permissions.requestProduceScreenshare + +The `requestProduceScreenshare` returns boolean value. +If `true`, participant can send request to participants +about sharing screen. + + + +### meeting.self.permissions.canAllowParticipantAudio + +The `canAllowParticipantAudio` returns boolean value. +If `true`, participant can enable other participants` audio. + + + +### meeting.self.permissions.canAllowParticipantScreensharing + +The `canAllowParticipantScreensharing` returns boolean value. +If `true`, participant can enable other participants` screen share. + + + +### meeting.self.permissions.canAllowParticipantVideo + +The `canAllowParticipantVideo` returns boolean value. +If `true`, participant can enable other participants` video. + + + +### meeting.self.permissions.canDisableParticipantAudio + +If `true`, a participant can disable other participants` audio. + + + +### meeting.self.permissions.canDisableParticipantVideo + +If `true`, a participant can disable other participants` video. + + + +### meeting.self.permissions.kickParticipant + +The `kickParticipant` returns boolean value. +If `true`, participant can remove other participants from the meeting. + + + +### meeting.self.permissions.pinParticipant + +The `pinParticipant` returns boolean value. +If `true`, participant can pin a participant in the meeting. + + + +### meeting.self.permissions.canRecord + +The `canRecord` returns boolean value. +If `true`, participant can record the meeting. + + + +### ~~meeting.self.permissions.waitingRoomType~~ + +**_Deprecated_** + + + +### meeting.self.permissions.waitingRoomBehaviour + +The `waitingRoomType` returns string value. +type of waiting room behavior +possible values are `SKIP`, `ON_PRIVILEGED_USER_ENTRY`, `SKIP_ON_ACCEPT` + + + +### meeting.self.permissions.plugins + +The `plugins` tells if the participant can act on plugins +there are 2 permissions with boolean values, `canStart` and `canClose`. + + + +### meeting.self.permissions.polls + +The `polls` tells if the participant can use polls. +There are 3 permissions with boolean values, `canCreate`, `canVote`, `canViewResults` + + + +### ~~meeting.self.permissions.produceVideo~~ + +**_Deprecated_** + + + +### ~~meeting.self.permissions.requestProduce~~ + +**_Deprecated_** + + + +### meeting.self.permissions.canProduceVideo + +The `canProduceVideo` shows permissions for enabling video. +There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` + + + +### ~~meeting.self.permissions.produceScreenshare~~ + +**_Deprecated_** + + + +### meeting.self.permissions.canProduceScreenshare + +The `canProduceScreenshare` shows permissions for sharing screen. +There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` + + + +### ~~meeting.self.permissions.produceAudio~~ + +**_Deprecated_** + + + +### meeting.self.permissions.canProduceAudio + +The `canProduceAudio` shows permissions for enabling audio. +There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` + + + +### meeting.self.permissions.chatPublic + +The `chatPublic` shows permissions for public chat +there are 4 permissions +`canSend` - if true, the participant can send chat +`text` - if true, the participant can send text +`files` - if true, the participant can send files + + + +### meeting.self.permissions.chatPrivate + +The `chatPrivate` shows permissions for public chat +there are 4 permissions +`canSend` - if true, the participant can send private chat +`text` - if true, the participant can send text as private chat +`files` - if true, the participant can send files as private chat +`canReceive` - (optional) if true, the participant can receive private chat + + + +### meeting.self.permissions.hiddenParticipant + +The `hiddenParticipant` returns boolean value. +If `true`, participant is hidden. + + + +### meeting.self.permissions.showParticipantList + +The `showParticipantList` returns boolean value. +If `true`, participant list can be shown to the participant. + + + +### ~~meeting.self.permissions.canChangeParticipantRole~~ + +**_Deprecated_** + + + +### meeting.self.permissions.canChangeParticipantPermissions + +The `canChangeParticipantPermissions` returns boolean value. +If `true`, allow changing the participants' permissions. + + + +### ~~meeting.self.permissions.canChangeTheme~~ + +**_Deprecated_** + + + +### ~~meeting.self.permissions.canPresent~~ + +**_Deprecated_** + + + +### ~~meeting.self.permissions.maxScreenShareCount~~ + +**_Deprecated_** + + + +### meeting.self.permissions.canLivestream + +Livestream diff --git a/docs/ios-core/reference/DytePlugin.md b/docs/ios-core/reference/DytePlugin.md new file mode 100644 index 0000000000..0383516154 --- /dev/null +++ b/docs/ios-core/reference/DytePlugin.md @@ -0,0 +1,95 @@ +--- +sidebar_position: 14 +web_core_version: 1.20.0 +--- + + + + + +The DytePlugin class represents a single plugin in the meeting. +A plugin can be obtained from one of the plugin arrays in `meeting.plugins`. +For example, + +```swift +let plugin1 = meeting.plugins.active[0]; +let plugin2 = meeting.plugins.all[0]]; +``` + +- [DytePlugin](#module_DytePlugin) + - [.name](#module_DytePlugin+getName) + - [.picture](#module_DytePlugin+getthumbnail) + - [.isActive](#module_DytePlugin+isActive) + - [.getPluginView()](#module_DytePlugin+getPluginView) + - [.activate()](#module_DytePlugin+activate) + - [.deactivate()](#module_DytePlugin+deactivate) + - [.sendData(eventName: String, data: Any?)()](#module_DytePlugin+sendData) + + + +### get Plugin Name + +```swift +let name: String +``` + +This property tells the name of plugin. + + +### get plugin thumbnail + +```swift +let picture: String +``` + +This property stores the string url of the thumbnail of the plugin. + + + +### check plugin is active or not + +```swift +let isActive: Bool +``` + +This property tells that this plugin is active or not. All active plugins would be part of active array of [DytePlugins](/ios-core-new/reference/DytePlugins). + + + +### get plugin view + +```swift +func getPluginView(): WKWebView +``` + +Returns instance of WKWebView. Which is used to show plugin current state and behavior + + + +### activate + +```swift + func activate() +``` + +Activate this plugin for all participants. + + + +### deactivate + +```swift + func deactivate() +``` + +Deactivate this plugin for all participants. + + + +### plugin.sendData(payload) + +```siwft +func sendData(eventName: String, data: Any?) +``` + +This method is used to send arbitrary data to the plugin corresponding to eventName. diff --git a/docs/ios-core/reference/DytePlugins.md b/docs/ios-core/reference/DytePlugins.md new file mode 100644 index 0000000000..75012bed89 --- /dev/null +++ b/docs/ios-core/reference/DytePlugins.md @@ -0,0 +1,37 @@ +--- +sidebar_position: 9 +web_core_version: 1.20.0 +--- + + + + + +The DytePlugins class consists of all the plugins in the meeting. It uses instances of [DytePlugin](/ios-core-new/reference/DytePlugin) class to represent plugins + +- `all`: Consists of all the plugins in the meeting. +- `active`: Consists of the plugins that are currently in use. + +* [DytePlugins](#module_DytePlugins) + - [.all](#module_DytePlugins+all) + - [.active](#module_DytePlugins+active) + + + +### Get all plugins + +```swift +let all: [DytePlugin] +``` + +All plugins of type [DytePlugin](/ios/components/dyte-active-tab-selector-view) accessible by the current user. + + + +### Get all active plugins + +```swift +let active: [DytePlugin] +``` + +All plugins of type [DytePlugin](/ios/components/dyte-active-tab-selector-view) that are currently enabled in the room. diff --git a/docs/ios-core/reference/DytePolls.md b/docs/ios-core/reference/DytePolls.md new file mode 100644 index 0000000000..cc9be6d172 --- /dev/null +++ b/docs/ios-core/reference/DytePolls.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 8 +web_core_version: 1.20.0 +--- + + + + + +The DytePolls module consists of the polls that have been created in the meeting. + +- [DytePolls](#module_DytePolls) + - [.items](#module_DytePolls+items) + - [.roomJoined](#module_DytePolls+roomJoined) + - [.create(question, options, anonymous, hideVotes)](#module_DytePolls+create) + - [.vote(pollId, index)](#module_DytePolls+vote) + + + +### meeting.polls.items + +An array of poll items. + + + +### meeting.polls.roomJoined + +Returns true if the local participant has joined the meeting. + + + +### meeting.polls.create(question, options, anonymous, hideVotes) + +Creates a poll in the meeting. + +**Kind**: instance method of [DytePolls](#module_DytePolls) + +| Param | Default | Description | +| --------- | ------------------ | ------------------------------------------ | +| question | | The question that is to be voted for. | +| options | | The options of the poll. | +| anonymous | false | If true, the poll votes are anonymous. | +| hideVotes | false | If true, the votes on the poll are hidden. | + + + +### meeting.polls.vote(pollId, index) + +Casts a vote on an existing poll. + +**Kind**: instance method of [DytePolls](#module_DytePolls) + +| Param | Description | +| ------ | ------------------------------------------ | +| pollId | The ID of the poll that is to be voted on. | +| index | The index of the option. | diff --git a/docs/ios-core/reference/DyteRecording.md b/docs/ios-core/reference/DyteRecording.md new file mode 100644 index 0000000000..1d658c0266 --- /dev/null +++ b/docs/ios-core/reference/DyteRecording.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 17 +web_core_version: 1.20.0 +--- + + + + + +The DyteRecording module represents the state of the current recording, and allows +to start/stop recordings and check if there's a recording in progress. + +- [DyteRecording](#module_DyteRecording) + - [.recordingId](#module_DyteRecording+recordingId) + - [.start()](#module_DyteRecording+start) + - [.stop()](#module_DyteRecording+stop) + - [.getRecordingId()](#module_DyteRecording+getRecordingId) + + + +### meeting.recording.recordingId + + + +### meeting.recording.start() + +Starts recording the meeting. + +**Kind**: instance method of [DyteRecording](#module_DyteRecording) + + +### meeting.recording.stop() + +Stops recording the meeting assuming there +is a recording in progress. + +**Kind**: instance method of [DyteRecording](#module_DyteRecording) + + +### meeting.recording.getRecordingId() + +Refreshes current recording state. + +**Kind**: instance method of [DyteRecording](#module_DyteRecording) diff --git a/docs/ios-core/reference/DyteRemote.md b/docs/ios-core/reference/DyteRemote.md new file mode 100644 index 0000000000..2e2b5f3ba9 --- /dev/null +++ b/docs/ios-core/reference/DyteRemote.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 16 +web_core_version: 1.20.0 +--- + + + + + +This module provides the ability to control a remotely shared screen using mouse and keyboard. +Methods are available to request, accept and end control of shared screen. + +- [DyteRemote](#module_DyteRemote) + - [.requestControl(peerId)](#module_DyteRemote+requestControl) ⇒ + - [.acceptControl(requestId)](#module_DyteRemote+acceptControl) + - [.endControl()](#module_DyteRemote+endControl) + + + +### meeting.remote.requestControl(peerId) ⇒ + +Sends a request to a peer for remote control. + +**Kind**: instance method of [DyteRemote](#module_DyteRemote) +**Returns**: request identifier for the control request. + +| Param | Description | +| ------ | --------------------------------------------------------- | +| peerId | The peer that needs to receive the remote control request | + + + +### meeting.remote.acceptControl(requestId) + +Accepts a remote control request from a peer. + +**Kind**: instance method of [DyteRemote](#module_DyteRemote) + +| Param | Description | +| --------- | ------------------------------------------------ | +| requestId | The request identifier that needs to be accepted | + + + +### meeting.remote.endControl() + +End an active remote control. + +**Kind**: instance method of [DyteRemote](#module_DyteRemote) diff --git a/docs/ios-core/reference/DyteRoomParticipants.md b/docs/ios-core/reference/DyteRoomParticipants.md new file mode 100644 index 0000000000..463a85e0ed --- /dev/null +++ b/docs/ios-core/reference/DyteRoomParticipants.md @@ -0,0 +1,673 @@ +--- +sidebar_position: 3 +web_core_version: 1.20.0 +--- + + + + + +This class represents all the participants in the meeting (except the local user). +It consists of 4 arrays: + +- `joined`: An of all participants that have joined the meeting. +- `waitlisted`: An array of all participants that have been added to the waitlist. +- `active`: An array of active participants who should be displayed in the meeting grid. +- `screenShares`: An array of participants. + +```swift +let maxNumberOnScreen: Int + +``` + +```swift +let pageCount: Int32 + +``` + +### check whether previous page can be loaded + +```swift +let canGoPreviousPage: Bool +``` + +### check whether next page can be loaded + +```swift +let canGoNextPage: Bool + +``` + +### get current page number + +```swift +let currentPageNumber: Int + +``` + +### get pinned participant + +```swift +let pinned: DyteJoinedMeetingParticipant? + +``` + +### load page number + +```swift +func setPage(pageNumber: Int) + +``` + +### kick out all participants + +```swift +func kickAll() + +``` + +### mute videos for all participants + +```swift +func disableAllVideo() +``` + +### mute audio for all participants + +```swift +func disableAllAudio() +``` + +### enable participant video view cache + +```swift +func enableCache() +``` + +### disable participant video view cache + +```swift +func disableCache() + +``` + +### accept all waiting requests + +```swift +func acceptAllWaitingRequests() + +``` + +### send message to all participants + +```swift +func broadcastMessage(type: String, payload: [String : Any]) + +``` + + + +### module.exports ⏏ + +**Kind**: Exported class + + +#### new module.exports(self) + +This constructs a new DyteParticipant object and maintains +the maps of active/joined/waitlisted/pinned/selectedPeers maps. + +| Param | Description | +| ----- | ----------- | +| self | : DyteSelf | + + + +#### module.exports.waitlisted + +Returns a list of participants waiting to join the meeting. + + + +#### module.exports.joined + +Returns a list of all participants in the meeting. + + + +#### module.exports.active + +Returns a list of participants whose streams are currently consumed. + + + +#### module.exports.pinned + +Returns a list of participants who have been pinned. + + + +#### module.exports.all + +Returns all added participants irrespective of whether they are currently +in the meeting or not + + + +#### module.exports.pip + +Return the controls for Picture-in-Picture + + + +#### module.exports.roomJoined + +Returns true if the local participant has joined the meeting. + + + +#### module.exports.viewMode + +Indicates whether the meeting is in 'ACTIVE_GRID' mode or 'PAGINATED' mode. + +In 'ACTIVE_GRID' mode, participants are populated in the participants.active map +dynamically. The participants present in the map will keep changing when other +participants unmute their audio or turn on their videos. + +In 'PAGINATED' mode, participants are populated in the participants.active map +just once, and the participants in the map will only change if the page number is +changed by the user using setPage(page). + + + +#### module.exports.currentPage + +This indicates the current page that has been set by the user in PAGINATED mode. +If the meeting is in ACTIVE_GRID mode, this value will be 0. + + + +#### module.exports.lastActiveSpeaker + +This stores the `participantId` of the last participant who spoke in the meeting. + + + +#### module.exports.selectedPeers + +Keeps a list of all participants who have been present in the selected peers list. + + + +#### module.exports.count + +Returns the number of participants who are joined in the meeting. + + + +#### module.exports.maxActiveParticipantsCount + +Returns the maximum number of participants that can be present in +the active map. + + + +#### module.exports.pageCount + +Returns the number of pages that are available in the meeting in PAGINATED mode. +If the meeting is in ACTIVE_GRID mode, this value will be 0. + + + +#### module.exports.acceptWaitingRoomRequest(id) + +Accepts requests from waitlisted participants if user +has appropriate permissions. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | ----------------------------------------------- | +| id | peerId or userId of the waitlisted participant. | + + + +#### module.exports.acceptAllWaitingRoomRequest() + +We need a new event for socket service events +since if we send them all together, sequence of events +can be unreliable + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.rejectWaitingRoomRequest(id) + +Rejects requests from waitlisted participants if user +has appropriate permissions. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | -------------------------------------------- | +| id | participantId of the waitlisted participant. | + + + +#### module.exports.setViewMode(viewMode) + +Sets the view mode of the meeting to either ACTIVE_GRID or PAGINATED. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| -------- | ---------------------------------------------------- | +| viewMode | The mode in which the active map should be populated | + + + +#### module.exports.setPage(page) + +Populates the active map with participants present in the page number +indicated by the parameter `page` in PAGINATED mode. +Does not do anything in ACTIVE_GRID mode. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | -------------------------- | +| page | The page number to be set. | + + + +#### module.exports.disableAllAudio(allowUnmute) + +Disables audio for all participants in the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----------- | -------------------------------------------------- | +| allowUnmute | Allow participants to unmute after they are muted. | + + + +#### module.exports.disableAllVideo() + +Disables video for all participants in the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### ~~module.exports.disableAudio(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------ | +| participantId | ID of participant to be muted. | + + + +#### ~~module.exports.disableVideo(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------ | +| participantId | ID of participant to be muted. | + + + +#### ~~module.exports.kick(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------- | +| participantId | ID of participant to be kicked. | + + + +#### module.exports.kickAll() + +Kicks all participants from the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.broadcastMessage() + +Broadcasts the message to all participants including `self`. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### ~~module.exports.acceptAllRequestToJoinStageRequests()~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.getAllJoinedPeers() + +Returns all peers currently present in the room +If you are in a group call or webinar use `meeting.participants.joined` +instead + +## **Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +sidebar_position: ((sidebar_position)) +web_core_version: ((web_core_version)) + +--- + + + + + +This module represents all the participants in the meeting (except the local user). +It consists of 4 maps: + +- `joined`: A map of all participants that have joined the meeting. +- `waitlisted`: A map of all participants that have been added to the waitlist. +- `active`: A map of active participants who should be displayed in the meeting grid. +- `pinned`: A map of pinned participants. + +* [DyteParticipants](#module_DyteParticipants) + - [module.exports](#exp_module_DyteParticipants--module.exports) ⏏ + - [new module.exports(self)](#new_module_DyteParticipants--module.exports_new) + - [.waitlisted](#module_DyteParticipants--module.exports+waitlisted) + - [.joined](#module_DyteParticipants--module.exports+joined) + - [.active](#module_DyteParticipants--module.exports+active) + - [.pinned](#module_DyteParticipants--module.exports+pinned) + - [.all](#module_DyteParticipants--module.exports+all) + - [.pip](#module_DyteParticipants--module.exports+pip) + - [.roomJoined](#module_DyteParticipants--module.exports+roomJoined) + - [.viewMode](#module_DyteParticipants--module.exports+viewMode) + - [.currentPage](#module_DyteParticipants--module.exports+currentPage) + - [.lastActiveSpeaker](#module_DyteParticipants--module.exports+lastActiveSpeaker) + - [.selectedPeers](#module_DyteParticipants--module.exports+selectedPeers) + - [.count](#module_DyteParticipants--module.exports+count) + - [.maxActiveParticipantsCount](#module_DyteParticipants--module.exports+maxActiveParticipantsCount) + - [.pageCount](#module_DyteParticipants--module.exports+pageCount) + - [.acceptWaitingRoomRequest(id)](#module_DyteParticipants--module.exports+acceptWaitingRoomRequest) + - [.acceptAllWaitingRoomRequest()](#module_DyteParticipants--module.exports+acceptAllWaitingRoomRequest) + - [.rejectWaitingRoomRequest(id)](#module_DyteParticipants--module.exports+rejectWaitingRoomRequest) + - [.setViewMode(viewMode)](#module_DyteParticipants--module.exports+setViewMode) + - [.setPage(page)](#module_DyteParticipants--module.exports+setPage) + - [.disableAllAudio(allowUnmute)](#module_DyteParticipants--module.exports+disableAllAudio) + - [.disableAllVideo()](#module_DyteParticipants--module.exports+disableAllVideo) + - ~~[.disableAudio(participantId)](#module_DyteParticipants--module.exports+disableAudio)~~ + - ~~[.disableVideo(participantId)](#module_DyteParticipants--module.exports+disableVideo)~~ + - ~~[.kick(participantId)](#module_DyteParticipants--module.exports+kick)~~ + - [.kickAll()](#module_DyteParticipants--module.exports+kickAll) + - [.broadcastMessage()](#module_DyteParticipants--module.exports+broadcastMessage) + - ~~[.acceptAllRequestToJoinStageRequests()](#module_DyteParticipants--module.exports+acceptAllRequestToJoinStageRequests)~~ + - [.getAllJoinedPeers()](#module_DyteParticipants--module.exports+getAllJoinedPeers) + + + +### module.exports ⏏ + +**Kind**: Exported class + + +#### new module.exports(self) + +This constructs a new DyteParticipant object and maintains +the maps of active/joined/waitlisted/pinned/selectedPeers maps. + +| Param | Description | +| ----- | ----------- | +| self | : DyteSelf | + + + +#### module.exports.waitlisted + +Returns a list of participants waiting to join the meeting. + + + +#### module.exports.joined + +Returns a list of all participants in the meeting. + + + +#### module.exports.active + +Returns a list of participants whose streams are currently consumed. + + + +#### module.exports.pinned + +Returns a list of participants who have been pinned. + + + +#### module.exports.all + +Returns all added participants irrespective of whether they are currently +in the meeting or not + + + +#### module.exports.pip + +Return the controls for Picture-in-Picture + + + +#### module.exports.roomJoined + +Returns true if the local participant has joined the meeting. + + + +#### module.exports.viewMode + +Indicates whether the meeting is in 'ACTIVE_GRID' mode or 'PAGINATED' mode. + +In 'ACTIVE_GRID' mode, participants are populated in the participants.active map +dynamically. The participants present in the map will keep changing when other +participants unmute their audio or turn on their videos. + +In 'PAGINATED' mode, participants are populated in the participants.active map +just once, and the participants in the map will only change if the page number is +changed by the user using setPage(page). + + + +#### module.exports.currentPage + +This indicates the current page that has been set by the user in PAGINATED mode. +If the meeting is in ACTIVE_GRID mode, this value will be 0. + + + +#### module.exports.lastActiveSpeaker + +This stores the `participantId` of the last participant who spoke in the meeting. + + + +#### module.exports.selectedPeers + +Keeps a list of all participants who have been present in the selected peers list. + + + +#### module.exports.count + +Returns the number of participants who are joined in the meeting. + + + +#### module.exports.maxActiveParticipantsCount + +Returns the maximum number of participants that can be present in +the active map. + + + +#### module.exports.pageCount + +Returns the number of pages that are available in the meeting in PAGINATED mode. +If the meeting is in ACTIVE_GRID mode, this value will be 0. + + + +#### module.exports.acceptWaitingRoomRequest(id) + +Accepts requests from waitlisted participants if user +has appropriate permissions. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | ----------------------------------------------- | +| id | peerId or userId of the waitlisted participant. | + + + +#### module.exports.acceptAllWaitingRoomRequest() + +We need a new event for socket service events +since if we send them all together, sequence of events +can be unreliable + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.rejectWaitingRoomRequest(id) + +Rejects requests from waitlisted participants if user +has appropriate permissions. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | -------------------------------------------- | +| id | participantId of the waitlisted participant. | + + + +#### module.exports.setViewMode(viewMode) + +Sets the view mode of the meeting to either ACTIVE_GRID or PAGINATED. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| -------- | ---------------------------------------------------- | +| viewMode | The mode in which the active map should be populated | + + + +#### module.exports.setPage(page) + +Populates the active map with participants present in the page number +indicated by the parameter `page` in PAGINATED mode. +Does not do anything in ACTIVE_GRID mode. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----- | -------------------------- | +| page | The page number to be set. | + + + +#### module.exports.disableAllAudio(allowUnmute) + +Disables audio for all participants in the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ----------- | -------------------------------------------------- | +| allowUnmute | Allow participants to unmute after they are muted. | + + + +#### module.exports.disableAllVideo() + +Disables video for all participants in the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### ~~module.exports.disableAudio(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------ | +| participantId | ID of participant to be muted. | + + + +#### ~~module.exports.disableVideo(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------ | +| participantId | ID of participant to be muted. | + + + +#### ~~module.exports.kick(participantId)~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + +| Param | Description | +| ------------- | ------------------------------- | +| participantId | ID of participant to be kicked. | + + + +#### module.exports.kickAll() + +Kicks all participants from the meeting. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.broadcastMessage() + +Broadcasts the message to all participants including `self`. + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### ~~module.exports.acceptAllRequestToJoinStageRequests()~~ + +**_Deprecated_** + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) + + +#### module.exports.getAllJoinedPeers() + +Returns all peers currently present in the room +If you are in a group call or webinar use `meeting.participants.joined` +instead + +**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) diff --git a/docs/ios-core/reference/DyteSelf.md b/docs/ios-core/reference/DyteSelf.md new file mode 100644 index 0000000000..de0b2fdfad --- /dev/null +++ b/docs/ios-core/reference/DyteSelf.md @@ -0,0 +1,262 @@ +--- +sidebar_position: 2 +web_core_version: 1.20.0 +--- + + + + + +The DyteSelf module represents the current user, and allows to modify the state +of the user in the meeting. The audio and video streams of the user can be retrieved from +this module. + +- [DyteSelf](#module_DyteSelf) + - [.roomState](#module_DyteSelf+roomState) + - [.permissions](#module_DyteSelf+permissions) + - ~~[.suggestedTheme](#module_DyteSelf+suggestedTheme)~~ + - [.config](#module_DyteSelf+config) + - [.roomJoined](#module_DyteSelf+roomJoined) + - [.isPinned](#module_DyteSelf+isPinned) + - ~~[.webinarStageStatus](#module_DyteSelf+webinarStageStatus)~~ + - [.setName(name)](#module_DyteSelf+setName) + - [.setupTracks(options)](#module_DyteSelf+setupTracks) + - [.enableAudio()](#module_DyteSelf+enableAudio) + - [.enableVideo()](#module_DyteSelf+enableVideo) + - [.updateVideoConstraints()](#module_DyteSelf+updateVideoConstraints) + - [.enableScreenShare()](#module_DyteSelf+enableScreenShare) + - [.updateScreenshareConstraints()](#module_DyteSelf+updateScreenshareConstraints) + - [.disableAudio()](#module_DyteSelf+disableAudio) + - [.disableVideo()](#module_DyteSelf+disableVideo) + - [.disableScreenShare()](#module_DyteSelf+disableScreenShare) + - [.getAllDevices()](#module_DyteSelf+getAllDevices) + - [.setIsPinned()](#module_DyteSelf+setIsPinned) + - [.pin()](#module_DyteSelf+pin) + - [.unpin()](#module_DyteSelf+unpin) + - [.setDevice(device)](#module_DyteSelf+setDevice) + - ~~[.requestToJoinStage()](#module_DyteSelf+requestToJoinStage)~~ + - ~~[.withdrawRequestToJoinStage()](#module_DyteSelf+withdrawRequestToJoinStage)~~ + - ~~[.leaveStage()](#module_DyteSelf+leaveStage)~~ + - ~~[.joinStage()](#module_DyteSelf+joinStage)~~ + - ~~[.setWebinarStageStatus()](#module_DyteSelf+setWebinarStageStatus)~~ + - ~~[.disablePreview()](#module_DyteSelf+disablePreview)~~ + + + +### meeting.self.roomState + +Returns the current state of room +init - Inital State +joined - User is in the meeting +waitlisted - User is in the waitlist state +rejected - User's was in the waiting room, but the entry was rejected +kicked - A priveleged user removed the user from the meeting +left - User left the meeting +ended - The meeting was ended + + + +### meeting.self.permissions + +Returns the current permission given to the user for the meeting. + + + +### ~~meeting.self.suggestedTheme~~ + +**_Deprecated_** + + + +### meeting.self.config + +Returns configuration for the meeting. + + + +### meeting.self.roomJoined + +Returns true if the local participant has joined the meeting. + + + +### meeting.self.isPinned + +Returns true if the current user is pinned. + + + +### ~~meeting.self.webinarStageStatus~~ + +**_Deprecated_** + + + +### meeting.self.setName(name) + +The name of the user can be set by calling this method. +This will get reflected to other participants ONLY if +this method is called before the room is joined. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + +| Param | Description | +| ----- | ----------------- | +| name | Name of the user. | + + + +### meeting.self.setupTracks(options) + +Sets up the local media tracks. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + +| Param | Description | +| ------------- | ------------------------------------- | +| options | The audio and video options. | +| options.video | If true, the video stream is fetched. | +| options.audio | If true, the audio stream is fetched. | + + + +### meeting.self.enableAudio() + +This method is used to unmute the local participant's audio. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.enableVideo() + +This method is used to start streaming the local participant's video +to the meeting. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.updateVideoConstraints() + +This method is used to apply constraints to the current video +stream. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.enableScreenShare() + +This method is used to start sharing the local participant's screen +to the meeting. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.updateScreenshareConstraints() + +This method is used to apply constraints to the current screenshare +stream. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.disableAudio() + +This method is used to mute the local participant's audio. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.disableVideo() + +This participant is used to disable the local participant's video. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.disableScreenShare() + +This method is used to stop sharing the local participant's screen. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.getAllDevices() + +Returns all media devices accessible by the local participant. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.setIsPinned() + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.pin() + +Returns `self.id` if user has permission +to pin participants. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.unpin() + +Returns `self.id` if user has permission +to unpin participants. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### meeting.self.setDevice(device) + +Change the current media device that is being used by the local participant. + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + +| Param | Description | +| ------ | ------------------------------------------------------------------------------------------------ | +| device | The device that is to be used. A device of the same `kind` will be replaced. the primary stream. | + + + +### ~~meeting.self.requestToJoinStage()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### ~~meeting.self.withdrawRequestToJoinStage()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### ~~meeting.self.leaveStage()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### ~~meeting.self.joinStage()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### ~~meeting.self.setWebinarStageStatus()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) + + +### ~~meeting.self.disablePreview()~~ + +**_Deprecated_** + +**Kind**: instance method of [DyteSelf](#module_DyteSelf) diff --git a/docs/ios-core/reference/DyteSelfMedia.md b/docs/ios-core/reference/DyteSelfMedia.md new file mode 100644 index 0000000000..4e452529cb --- /dev/null +++ b/docs/ios-core/reference/DyteSelfMedia.md @@ -0,0 +1,177 @@ +--- +sidebar_position: 13 +web_core_version: 1.20.0 +--- + + + + + +This module allows users to initialize media before initializing the root DyteClient.init object + +- [DyteSelfMedia](#module_DyteSelfMedia) + - [.audioTrack](#module_DyteSelfMedia+audioTrack) + - [.rawAudioTrack](#module_DyteSelfMedia+rawAudioTrack) + - [.mediaPermissions](#module_DyteSelfMedia+mediaPermissions) + - [.videoTrack](#module_DyteSelfMedia+videoTrack) + - [.rawVideoTrack](#module_DyteSelfMedia+rawVideoTrack) + - [.screenShareTracks](#module_DyteSelfMedia+screenShareTracks) + - [.audioEnabled](#module_DyteSelfMedia+audioEnabled) + - [.videoEnabled](#module_DyteSelfMedia+videoEnabled) + - [.screenShareEnabled](#module_DyteSelfMedia+screenShareEnabled) + - [.addAudioMiddleware()](#module_DyteSelfMedia+addAudioMiddleware) + - [.removeAudioMiddleware()](#module_DyteSelfMedia+removeAudioMiddleware) + - [.addVideoMiddleware()](#module_DyteSelfMedia+addVideoMiddleware) + - [.removeVideoMiddleware()](#module_DyteSelfMedia+removeVideoMiddleware) + - [.getCurrentDevices()](#module_DyteSelfMedia+getCurrentDevices) + - [.getAudioDevices()](#module_DyteSelfMedia+getAudioDevices) + - [.getVideoDevices()](#module_DyteSelfMedia+getVideoDevices) + - [.getSpeakerDevices()](#module_DyteSelfMedia+getSpeakerDevices) + - [.getDeviceById(deviceId, kind)](#module_DyteSelfMedia+getDeviceById) + - [.setDevice(device)](#module_DyteSelfMedia+setDevice) + + + +### dyteSelfMedia.audioTrack + +Returns the `audioTrack`. + + + +### dyteSelfMedia.rawAudioTrack + +Returns the `rawAudioTrack` having no middleware executed on it. + + + +### dyteSelfMedia.mediaPermissions + +Returns the current audio and video permissions given by the user. +'ACCEPTED' if the user has given permission to use the media. +'CANCELED' if the user has canceled the screenshare. +'DENIED' if the user has denied permission to use the media. +'SYS_DENIED' if the user's system has denied permission to use the media. +'UNAVAILABLE' if the media is not available (or being used by a different application). + + + +### dyteSelfMedia.videoTrack + +Returns the `videoTrack`. + + + +### dyteSelfMedia.rawVideoTrack + +Returns the `videoTrack` having no middleware executed on it. + + + +### dyteSelfMedia.screenShareTracks + +Returns the screen share tracks. + + + +### dyteSelfMedia.audioEnabled + +Returns true if audio is enabled. + + + +### dyteSelfMedia.videoEnabled + +Returns true if video is enabled. + + + +### dyteSelfMedia.screenShareEnabled + +Returns true if screen share is enabled. + + + +### dyteSelfMedia.addAudioMiddleware() + +Adds the audio middleware to be executed on the raw audio stream. +If there are more than 1 audio middlewares, +they will be executed in the sequence they were added in. +If you want the sequence to be altered, please remove all previous middlewares and re-add. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.removeAudioMiddleware() + +Removes the audio middleware, if it is there. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.addVideoMiddleware() + +Adds the video middleware to be executed on the raw video stream. +If there are more than 1 video middlewares, +they will be executed in the sequence they were added in. +If you want the sequence to be altered, please remove all previous middlewares and re-add. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.removeVideoMiddleware() + +Removes the video middleware, if it is there. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.getCurrentDevices() + +Returns the media devices currently being used. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.getAudioDevices() + +Returns the local participant's audio devices. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.getVideoDevices() + +Returns the local participant's video devices. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.getSpeakerDevices() + +Returns the local participant's speaker devices. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + + +### dyteSelfMedia.getDeviceById(deviceId, kind) + +Returns the local participant's device, indexed by ID and kind. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + +| Param | Description | +| -------- | ------------------------------------------------- | +| deviceId | The ID of the device. | +| kind | The kind of the device: audio, video, or speaker. | + + + +### dyteSelfMedia.setDevice(device) + +Change the current media device that is being used by the local participant. + +**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) + +| Param | Description | +| ------ | ------------------------------------------------------------------------------------------------ | +| device | The device that is to be used. A device of the same `kind` will be replaced. the primary stream. | diff --git a/docs/ios-core/reference/DyteSelfParticipant.md b/docs/ios-core/reference/DyteSelfParticipant.md new file mode 100644 index 0000000000..e2e12b6453 --- /dev/null +++ b/docs/ios-core/reference/DyteSelfParticipant.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 4 +web_core_version: 1.20.0 +--- + + + + + +This is a map of participants, indexed by `participant.id` (a participant's peer ID). +This map emits an event whenever a participant present in the map emits an event. +For example, when a participant is added to this map, a `participantJoined` event is +emitted from the map. When a participant object emits an event `videoUpdate`, the map +re-emits that event (provided the participant is present in the map). diff --git a/docs/ios-core/reference/DyteStage.md b/docs/ios-core/reference/DyteStage.md new file mode 100644 index 0000000000..a0d16da713 --- /dev/null +++ b/docs/ios-core/reference/DyteStage.md @@ -0,0 +1,156 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +The DyteStage class represents functionality to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage + +- [DyteStage](#module_DyteStage) + - [.stageStatus](#module_DyteStage+StageSatus) + - [.accessRequests](#module_DyteStage+getAccessRequests) + - [.requestAccess()](#module_DyteStage+requestAccess) + - [.cancelRequestAccess()](#module_DyteStage+cancelRequestAccess) + - [.grantAccess()](#module_DyteStage+grantAccess) + - [.denyAccess()](#module_DyteStage+denyAccess) + - [.join()](#module_DyteStage+join) + - [.leave()](#module_DyteStage+leave) + - [.kick()](#module_DyteStage+kick) + + + +### get stage status + +```swift +let stageStatus: StageStatus +``` + +Tell the current status of stage for the local user (`meeting.localUser`). To know about possible values check [StageStatus](/ios-core-new/reference/StageStatus) + + + +### get Access Request + +```swift +let accessRequests: [DyteJoinedMeetingParticipant] +``` + +Property to fetch all the participants who raised request to join stage. + + + +### meeting.stage.requestAccess() + +```swift +func requestAccess() +``` + +Method to send a request to privileged users to join the stage. This request is always raised by you(`meeting.localUser`) +for eg. + +```swift +meeting.stage.requestAccess() +``` + + + +### Cancel request to join stage + +```swift +func cancelRequestAccess() +``` + +Method to cancel a previous Stage join request raised by you(`meeting.localUser`) +for eg. + +```swift +meeting.stage.cancelRequestAccess() +``` + + + +### Grant access request + +```swift +func grantAccess(id: String) +``` + +Method to grant access to Stage for the participant id passed. +This can be in response to a Stage Join request, but it can be called on other users as well +for eg. + +```swift +meeting.stage.grantAccess(id: participant.id) +``` + + + +### Deny access request + +```swift +func denyAccess(id: String) +``` + +Method to deny access to Stage for the participant id passed. +This should be called in response to a Stage Join request. +for eg. + +```swift +meeting.stage.denyAccess(id: participant.id) +``` + + + +### Join stage + +```swift +func join() +``` + +Method to join the stage +Users either need to have the permission in the preset or must be accepted by a privileged +user to call this method +for eg. + +```swift +meeting.stage.join() +``` + + + +### Leave stage + +```swift +func leave() +``` + +Method to leave the stage +Users must either be on the stage already or be accepted to join the stage +to call this method +for eg. + +```swift +meeting.stage.leave() +``` + + + +### Kick participant + +```swift +func kick(id: String) +``` + +Method to kick a participant off the stage for the participant id passed. + +for eg. + +```swift +meeting.stage.kick(id: participant.id) +``` diff --git a/docs/ios-core/reference/DyteThemePreset.md b/docs/ios-core/reference/DyteThemePreset.md new file mode 100644 index 0000000000..6cc529818a --- /dev/null +++ b/docs/ios-core/reference/DyteThemePreset.md @@ -0,0 +1,85 @@ +--- +sidebar_position: 15 +web_core_version: 1.20.0 +--- + + + + + +The DyteThemePreset class represents the meeting theme for the current participant + +- [DyteThemePreset](#module_DyteThemePreset) + - ~~[.setupScreen](#module_DyteThemePreset+setupScreen)~~ + - ~~[.waitingRoom](#module_DyteThemePreset+waitingRoom)~~ + - ~~[.controlBar](#module_DyteThemePreset+controlBar)~~ + - ~~[.header](#module_DyteThemePreset+header)~~ + - ~~[.pipMode](#module_DyteThemePreset+pipMode)~~ + - [.viewType](#module_DyteThemePreset+viewType) + - [.maxVideoStreams](#module_DyteThemePreset+maxVideoStreams) + - [.maxScreenShareCount](#module_DyteThemePreset+maxScreenShareCount) + - ~~[.plugins](#module_DyteThemePreset+plugins)~~ + - [.disabledPlugins](#module_DyteThemePreset+disabledPlugins) + + + +### ~~dyteThemePreset.setupScreen~~ + +**_Deprecated_** + + + +### ~~dyteThemePreset.waitingRoom~~ + +**_Deprecated_** + + + +### ~~dyteThemePreset.controlBar~~ + +**_Deprecated_** + + + +### ~~dyteThemePreset.header~~ + +**_Deprecated_** + + + +### ~~dyteThemePreset.pipMode~~ + +**_Deprecated_** + + + +### dyteThemePreset.viewType + +The `viewType` tells the type of the meeting +possible values are WEBINAR, GROUP_CALL + + + +### dyteThemePreset.maxVideoStreams + +The `maxVideoStreams` contains the maximum video +streams for mobile and desktop + + + +### dyteThemePreset.maxScreenShareCount + +The `maxScreenShareCount` contains the maximum +possible concurrent screen shares + + + +### ~~dyteThemePreset.plugins~~ + +**_Deprecated_** + + + +### dyteThemePreset.disabledPlugins + +The `disabledPlugins` property returns id of all disabled plugins diff --git a/docs/ios-core/reference/DyteWaitlistedParticipant.md b/docs/ios-core/reference/DyteWaitlistedParticipant.md new file mode 100644 index 0000000000..8a39d2e169 --- /dev/null +++ b/docs/ios-core/reference/DyteWaitlistedParticipant.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 4 +web_core_version: 1.20.0 +--- + + + + +**Subclass** of [DyteMeetingParticipant](/ios-core-new/reference/DyteMeetingParticipant) +This class represents a single participant in the meeting. +The participant object can be accessed from one of the participant lists +present in the `meeting.participants` object. For example, + +```swift +let participant1 = meeting.participants.active[0]; +let participant2 = meeting.participants.joined[0]; +``` + +- [DyteWaitlistedParticipant](#module_DyteParticipant) + - [.acceptWaitListedRequest()](#module_DyteParticipant--this.+acceptWaitListedRequest) + - [.rejectWaitListedRequest()](#module_DyteParticipant--this.+rejectWaitListedRequest) + + + +#### Accept Waiting room request + +```swift +fun acceptWaitListedRequest() +``` + +Return a view which is used to render participant camera streams. + + + +#### Reject Waiting room request + +```swift +fun rejectWaitListedRequest() +``` + +Return a view which is used to render participant screen streams. diff --git a/docs/ios-core/reference/StageStatus.md b/docs/ios-core/reference/StageStatus.md new file mode 100644 index 0000000000..a772523414 --- /dev/null +++ b/docs/ios-core/reference/StageStatus.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +```swift +enum StageStatus { + case OFF_STAGE + case REQUESTED_TO_JOIN_STAGE + case ACCEPTED_TO_JOIN_STAGE + case REJECTED_TO_JOIN_STAGE + case ON_STAGE +} +``` + +The DyteStageStatus represent an enum to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage. Below are the specificed status of the stage. + +### case OFF_STAGE + +when the participant is not on the Stage ie He/She is a viewer and can't produce media + +### case REQUESTED_TO_JOIN_STAGE + +When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` + +### case ACCEPTED_TO_JOIN_STAGE + +When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or +When request to join stage raised by the viewer is accepted by the host. + +### case REJECTED_TO_JOIN_STAGE + +When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` + +### case ON_STAGE + +when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/WaitListStatus.md b/docs/ios-core/reference/WaitListStatus.md new file mode 100644 index 0000000000..a772523414 --- /dev/null +++ b/docs/ios-core/reference/WaitListStatus.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 10 +web_core_version: 1.20.0 +--- + + + + + +```swift +enum StageStatus { + case OFF_STAGE + case REQUESTED_TO_JOIN_STAGE + case ACCEPTED_TO_JOIN_STAGE + case REJECTED_TO_JOIN_STAGE + case ON_STAGE +} +``` + +The DyteStageStatus represent an enum to manage the Stage of the meeting +Stage refers to a virtual area, where participants stream are visible to other participants. +When a participant is off-stage, they are not producing media +but only consuming media from participants who are on Stage. Below are the specificed status of the stage. + +### case OFF_STAGE + +when the participant is not on the Stage ie He/She is a viewer and can't produce media + +### case REQUESTED_TO_JOIN_STAGE + +When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` + +### case ACCEPTED_TO_JOIN_STAGE + +When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or +When request to join stage raised by the viewer is accepted by the host. + +### case REJECTED_TO_JOIN_STAGE + +When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` + +### case ON_STAGE + +when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/_category_.json b/docs/ios-core/reference/_category_.json new file mode 100644 index 0000000000..e7dd5551bd --- /dev/null +++ b/docs/ios-core/reference/_category_.json @@ -0,0 +1,5 @@ +{ + "position": 11, + "label": "Reference", + "collapsible": true +} From 23ba1fce40fca741362387a534e19a3a37378db4 Mon Sep 17 00:00:00 2001 From: Maumau123098 Date: Wed, 10 Sep 2025 21:17:46 -0500 Subject: [PATCH 2/2] Delete docs/ios-core directory --- docs/ios-core/Introduction.mdx | 42 -- docs/ios-core/chat/_category_.json | 5 - docs/ios-core/chat/introduction.mdx | 67 -- .../ios-core/chat/receiving-chat-messages.mdx | 33 - docs/ios-core/chat/sending-a-chat-message.mdx | 44 -- docs/ios-core/error-codes.mdx | 39 - docs/ios-core/livestreaming.mdx | 191 ----- docs/ios-core/local-user/_category_.json | 5 - docs/ios-core/local-user/events.mdx | 151 ---- docs/ios-core/local-user/introduction.mdx | 150 ---- .../local-user/manage-media-devices.mdx | 43 -- .../local-user/manage-permissions.mdx | 46 -- .../local-user/screen-share-guide.mdx | 110 --- docs/ios-core/participants/_category_.json | 5 - docs/ios-core/participants/events.mdx | 226 ------ .../participants/participant-object.mdx | 135 ---- .../participants/remote-participants.mdx | 41 -- docs/ios-core/plugins/_category_.json | 5 - docs/ios-core/plugins/disable-plugin.mdx | 28 - docs/ios-core/plugins/enable-plugin.mdx | 62 -- docs/ios-core/plugins/extra.mdx | 49 -- docs/ios-core/plugins/introduction.mdx | 53 -- docs/ios-core/polls/_category_.json | 5 - docs/ios-core/polls/creating-a-poll.mdx | 43 -- docs/ios-core/polls/introduction.mdx | 69 -- docs/ios-core/polls/voting-on-a-poll.mdx | 31 - docs/ios-core/pre-call/1-media-preview.mdx | 119 ---- .../pre-call/2-handling-permissions.mdx | 43 -- docs/ios-core/pre-call/3-meeting-meta.mdx | 11 - docs/ios-core/pre-call/4-waiting-room.mdx | 88 --- docs/ios-core/pre-call/_category_.json | 6 - docs/ios-core/quickstart.mdx | 256 ------- docs/ios-core/recording.mdx | 95 --- docs/ios-core/reference/DyteChat.md | 212 ------ docs/ios-core/reference/DyteClient.md | 151 ---- docs/ios-core/reference/DyteLivestream.md | 30 - .../ios-core/reference/DyteMediaPermission.md | 44 -- .../reference/DyteMeetingJoinedParticipant.md | 112 --- .../reference/DyteMeetingParticipant.md | 122 ---- .../reference/DyteMeetingType copy 2.md | 44 -- docs/ios-core/reference/DyteMeetingType.md | 44 -- docs/ios-core/reference/DyteMeta.md | 102 --- docs/ios-core/reference/DyteParticipant.md | 14 - .../reference/DytePermissionsPreset.md | 291 -------- docs/ios-core/reference/DytePlugin.md | 95 --- docs/ios-core/reference/DytePlugins.md | 37 - docs/ios-core/reference/DytePolls.md | 56 -- docs/ios-core/reference/DyteRecording.md | 44 -- docs/ios-core/reference/DyteRemote.md | 49 -- .../reference/DyteRoomParticipants.md | 673 ------------------ docs/ios-core/reference/DyteSelf.md | 262 ------- docs/ios-core/reference/DyteSelfMedia.md | 177 ----- .../ios-core/reference/DyteSelfParticipant.md | 14 - docs/ios-core/reference/DyteStage.md | 156 ---- docs/ios-core/reference/DyteThemePreset.md | 85 --- .../reference/DyteWaitlistedParticipant.md | 41 -- docs/ios-core/reference/StageStatus.md | 44 -- docs/ios-core/reference/WaitListStatus.md | 44 -- docs/ios-core/reference/_category_.json | 5 - docs/ios-core/release-notes.mdx | 18 - docs/ios-core/room-metadata.mdx | 47 -- .../stage-management/1-introduction.mdx | 125 ---- .../stage-management/2-host-controls.mdx | 89 --- .../3-viewer-participants.mdx | 42 -- .../ios-core/stage-management/_category_.json | 5 - 65 files changed, 5570 deletions(-) delete mode 100644 docs/ios-core/Introduction.mdx delete mode 100644 docs/ios-core/chat/_category_.json delete mode 100644 docs/ios-core/chat/introduction.mdx delete mode 100644 docs/ios-core/chat/receiving-chat-messages.mdx delete mode 100644 docs/ios-core/chat/sending-a-chat-message.mdx delete mode 100644 docs/ios-core/error-codes.mdx delete mode 100644 docs/ios-core/livestreaming.mdx delete mode 100644 docs/ios-core/local-user/_category_.json delete mode 100644 docs/ios-core/local-user/events.mdx delete mode 100644 docs/ios-core/local-user/introduction.mdx delete mode 100644 docs/ios-core/local-user/manage-media-devices.mdx delete mode 100644 docs/ios-core/local-user/manage-permissions.mdx delete mode 100644 docs/ios-core/local-user/screen-share-guide.mdx delete mode 100644 docs/ios-core/participants/_category_.json delete mode 100644 docs/ios-core/participants/events.mdx delete mode 100644 docs/ios-core/participants/participant-object.mdx delete mode 100644 docs/ios-core/participants/remote-participants.mdx delete mode 100644 docs/ios-core/plugins/_category_.json delete mode 100644 docs/ios-core/plugins/disable-plugin.mdx delete mode 100644 docs/ios-core/plugins/enable-plugin.mdx delete mode 100644 docs/ios-core/plugins/extra.mdx delete mode 100644 docs/ios-core/plugins/introduction.mdx delete mode 100644 docs/ios-core/polls/_category_.json delete mode 100644 docs/ios-core/polls/creating-a-poll.mdx delete mode 100644 docs/ios-core/polls/introduction.mdx delete mode 100644 docs/ios-core/polls/voting-on-a-poll.mdx delete mode 100644 docs/ios-core/pre-call/1-media-preview.mdx delete mode 100644 docs/ios-core/pre-call/2-handling-permissions.mdx delete mode 100644 docs/ios-core/pre-call/3-meeting-meta.mdx delete mode 100644 docs/ios-core/pre-call/4-waiting-room.mdx delete mode 100644 docs/ios-core/pre-call/_category_.json delete mode 100644 docs/ios-core/quickstart.mdx delete mode 100644 docs/ios-core/recording.mdx delete mode 100644 docs/ios-core/reference/DyteChat.md delete mode 100644 docs/ios-core/reference/DyteClient.md delete mode 100644 docs/ios-core/reference/DyteLivestream.md delete mode 100644 docs/ios-core/reference/DyteMediaPermission.md delete mode 100644 docs/ios-core/reference/DyteMeetingJoinedParticipant.md delete mode 100644 docs/ios-core/reference/DyteMeetingParticipant.md delete mode 100644 docs/ios-core/reference/DyteMeetingType copy 2.md delete mode 100644 docs/ios-core/reference/DyteMeetingType.md delete mode 100644 docs/ios-core/reference/DyteMeta.md delete mode 100644 docs/ios-core/reference/DyteParticipant.md delete mode 100644 docs/ios-core/reference/DytePermissionsPreset.md delete mode 100644 docs/ios-core/reference/DytePlugin.md delete mode 100644 docs/ios-core/reference/DytePlugins.md delete mode 100644 docs/ios-core/reference/DytePolls.md delete mode 100644 docs/ios-core/reference/DyteRecording.md delete mode 100644 docs/ios-core/reference/DyteRemote.md delete mode 100644 docs/ios-core/reference/DyteRoomParticipants.md delete mode 100644 docs/ios-core/reference/DyteSelf.md delete mode 100644 docs/ios-core/reference/DyteSelfMedia.md delete mode 100644 docs/ios-core/reference/DyteSelfParticipant.md delete mode 100644 docs/ios-core/reference/DyteStage.md delete mode 100644 docs/ios-core/reference/DyteThemePreset.md delete mode 100644 docs/ios-core/reference/DyteWaitlistedParticipant.md delete mode 100644 docs/ios-core/reference/StageStatus.md delete mode 100644 docs/ios-core/reference/WaitListStatus.md delete mode 100644 docs/ios-core/reference/_category_.json delete mode 100644 docs/ios-core/release-notes.mdx delete mode 100644 docs/ios-core/room-metadata.mdx delete mode 100644 docs/ios-core/stage-management/1-introduction.mdx delete mode 100644 docs/ios-core/stage-management/2-host-controls.mdx delete mode 100644 docs/ios-core/stage-management/3-viewer-participants.mdx delete mode 100644 docs/ios-core/stage-management/_category_.json diff --git a/docs/ios-core/Introduction.mdx b/docs/ios-core/Introduction.mdx deleted file mode 100644 index f9ca8a560a..0000000000 --- a/docs/ios-core/Introduction.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Introduction -sidebar_position: 3 -sidebar_class_name: module-seperation ---- - -import ProductSection from '/docs/partials/_product-section.mdx'; - -# Introduction - -The Dyte Core SDK is designed to provide you with an easy way to incorporate live video, voice, livestream and chat capabilities -into your iOS apps. The Core SDK acts as a data-only layer. It provides simple APIs offering high-level primitives and -abstracting away complex media and networking optimizations. - -## Why Core SDK? - -The Core SDK was developed with a user-friendly approach to eliminate the complexity of managing streams. Unlike traditional -SDKs that require knowledge of WebRTC internals, Dyte's Core SDK provides a simple API that abstracts out the complexity, -making it easier for developers to use. For instance, enabling video with Dyte's Core SDK is as easy as calling -`meeting.localUser.enableVideo()`. - -## Utility Modules - -The Core SDK includes various modules for in-call utilities like chat, polls, and recording that enable building a UI on top of -it. The following are the core SDK modules: - -- **meeting.localUser**: This consists of properties and methods corresponding to the current (local) user, such as enabling or - disabling their audio and video, getting a list of media devices or changing the device, or sharing your mobile screen. -- **meeting.participants**: Use this module to get useful information about the other participants that are present in the - meeting. A host can use this module for access control. For example, the host can mute or kick a participant. -- **meeting.chat**: It provides the methods to integrate chat features such as sending/receiving text, images, and files. -- **meeting.polls**: Meetings can have polls. This module lets you perform actions related to polls, that is create and manage - a poll within a meeting. -- **meeting.recording**: When a meeting needs to be recorded, this module can be used. It lets you start or stop a recording, - and get the current status of an ongoing recording. -- **meeting.meta**: This object consists of all the metadata related to the current meeting, such as the title, the timestamp - of when it started, and more. -- **meeting.plugins**: Provides the list of available plugins and active plugins. Use this module to enable or disable plugins as needed. - - - iOS Core Introduction - diff --git a/docs/ios-core/chat/_category_.json b/docs/ios-core/chat/_category_.json deleted file mode 100644 index 175c0faaec..0000000000 --- a/docs/ios-core/chat/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 6, - "label": "Chat", - "collapsible": true -} \ No newline at end of file diff --git a/docs/ios-core/chat/introduction.mdx b/docs/ios-core/chat/introduction.mdx deleted file mode 100644 index e099c40e24..0000000000 --- a/docs/ios-core/chat/introduction.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Introducing chat -description: >- - Learn the basics of integrating Dyte's chat functionality into your iOS - application – a step towards immersive real-time communication. -sidebar_position: 1 -tags: - - ios-core - - chat ---- - -# Introducing chat - -The meeting chat object is stored in `meeting.chat`, which has methods for sending and receiving messages. There are 3 types of messages that can be sent in chat - text messages, images, and files. - -The `meeting.chat.messages` array contains all the messages that have been sent -in the chat. This is an array of objects, where each object is of type -`DyteChatMessage`. - -We support three types of chat messages, they are as follows - -- Text Message - -```swift -class DyteTextMessage { - let userId: String - let displayName: String - let read: Bool - let pluginId: String? - let message: String - let time: String - let channelId: String? = null -} -``` - -- Image Message - -```swift -class DyteImageMessage{ - let userId: String - let displayName: String - let read: Bool - let pluginId: String? - let link: String - let time: String - let channelId: String? = null -} -``` - -- File Message - -```swift -class DyteFileMessage{ - let userId: String - let displayName: String - let read: Bool - let pluginId: String? - let name: String - let time: String - let link: String - let size: Int64 - let channelId: String? = null -} -``` - -All above objects are of type `DyteChatMessage` along with their own class -variables. diff --git a/docs/ios-core/chat/receiving-chat-messages.mdx b/docs/ios-core/chat/receiving-chat-messages.mdx deleted file mode 100644 index 15f32866d3..0000000000 --- a/docs/ios-core/chat/receiving-chat-messages.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Receiving chat messages -description: >- - "Discover how to implement the functionality to receive chat messages in your - iOS app using Dyte -sidebar_position: 3 -tags: - - ios-core - - chat ---- - -# Receiving chat messages - -To be able to receive chat messages you need to implement a method -`onChatUpdates()` method from callback `DyteChatEventsListener`. You can -subscribe to this events by calling -`meeting.addChatEventsListener(dyteChatEventsListener)` - -```swift -extension MeetingViewModel: DyteChatEventsListener { - func onChatUpdates(messages: [DyteChatMessage]) { - // to load chat messages - } - - func onNewChatMessage(message: DyteChatMessage) { - // when a new chat message is shared in the meeting - } -} -``` - -The `onChatUpdates()` method will be called whenever there is a change in the chat messages. The `messages` parameter is a list of `DyteChatMessage` objects that have been sent in the chat. - -The `onNewChatMessage()` method will be called whenever a new chat message is shared in the meeting. The `message` parameter is a `DyteChatMessage` object that has been sent in the chat. diff --git a/docs/ios-core/chat/sending-a-chat-message.mdx b/docs/ios-core/chat/sending-a-chat-message.mdx deleted file mode 100644 index 7853d4ac88..0000000000 --- a/docs/ios-core/chat/sending-a-chat-message.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Sending a chat message -description: >- - "Master the process of sending chat messages within your iOS application - with Dyte -sidebar_position: 2 -tags: - - ios-core - - chat ---- - -# Sending a chat message - -As mentioned in [introduction](./introduction), there are 3 types of chat messages - text messages, images, and files. There is a method in `meeting.chat` to send a message of each type. - -## Send a text message - -To send a text message, the `meeting.chat.sendTextMessage()` method can be used. This accepts a string `message` and sends it to the room. - -```swift -var message = "Is this the real life?" -meeting.chat.sendTextMessage(message) -``` - -## Send an image - -You can send an image with the help of `meeting.chat.sendImageMessage()` and -sends it to the participants in the meeting. - -```swift -var filePath = "file_path_of_image" -var fileName = "file_name" -meeting.chat.sendImageMessage(filePath, fileName) -``` - -## Send a file - -Sending a file is quite similar to sending an image. The only difference is that when you send an image, a preview will be shown in the meeting chat, which is not the case for sending files. That being said, an image can be sent as a file too using `meeting.chat.sendFileMessage()`. - -```swift -var filePath = "file_path_of_image" -var fileName = "file_name" -meeting.chat.sendFileMessage(filePath, fileName) -``` diff --git a/docs/ios-core/error-codes.mdx b/docs/ios-core/error-codes.mdx deleted file mode 100644 index 6fedc0ab47..0000000000 --- a/docs/ios-core/error-codes.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: System Error Codes -sidebar_position: 11 ---- - -:::info Note - -This information is intended for developers debugging or troubleshooting Dyte's mobile core system errors. - -::: - -Error codes are a standardized method for developers to convey application errors and issues to users or other developers in a structured manner. Error codes typically consist of a numerical or alphanumeric code and a description that provides more information about the error. - -This document lists Dyte's iOS core error codes that you may encounter in various scenarios. System error codes can arise in different parts of the system, and their descriptions may not always provide exact details. To address these codes effectively, you must first understand the programmatic and runtime contexts in which these errors occurred. - -## Error codes and format - -Error codes consist of a number that are categorized by the type of error and a message that provides more information about the error. The error code format is as follows: - -```swift -class DyteError { - let code: Int - let message: String -} -``` - -### Meeting error codes - -Meeting error codes are used to indicate errors that occur during meeting operations. These errors are typically returned by the methods of the `meeting` object such as `init()`, `join()`. - -- 1000: Invalid auth token. -- 1002: Failed to initialize meeting. -- 1003: Invalid base URL. -- 1005: Failed to join room. -- 4000: Something went wrong. - - - iOS Core System Error Codes - diff --git a/docs/ios-core/livestreaming.mdx b/docs/ios-core/livestreaming.mdx deleted file mode 100644 index ac72254fc5..0000000000 --- a/docs/ios-core/livestreaming.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: Livestreaming -sidebar_position: 10 ---- - -- Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. -- Dyte uses LHLS to deliver low latency one way streams -- The Interactive Livestream product delivers interactivity via chat, polls, reactions etc -- Viewer can also be pulled in the livestream by the host using Stage Management APIs - -This topic talks about how you can use livestreaming properties, events, and functions. - -`DyteLivestream` object obtained by `meeting.livestream` method. The objects and methods it contains are defined below. - -## Objects - -### roomName [*String*] - -The name of the room.
- -### state [*LiveStreamState*] - -The current status of the livestream, possible values can be:
- -- `LiveStreamState.NONE` -- `LiveStreamState.STARTING` -- `LiveStreamState.STARTED` -- `LiveStreamState.STOPPING` -- `LiveStreamState.STOPPED` -- `LiveStreamState.ERRORED` - -### stage requests [*_List<DyteLiveStreamStageRequestPeer>_*] - -object accessed via `meeting.livestream.stageRequestPeers` contains the list of requests to join the stage. Each request contains 3 properties:
- -1. `peerId`: [*String*] The peerId of the user who requested to join the stage. -2. `userId`: [*String*] The userId of the user who requested to join the stage. -3. `displayName`: [*String*] The display name of the user who requested to join the stage.

- -### liveStreamUrl [*String*] - -List of URL which can be used to consume livestream. - -## **Host Controls Methods** - -Dyte's stage management APIs allow hosts to receive and manage stage requests as well as leave and join the stage. - -### Accept request - -This method lets the host accept a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be accepted. - -```swift -meeting.livestream.acceptRequest(peer: peer.id); -``` - -### Reject request - -This method lets the host reject a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be rejected. - -```swift -meeting.livestream.rejectRequest(peer: peer.id); -``` - -### Accept all requests - -This method lets the host accept all the requests to join the stage. - -```swift -meeting.livestream.acceptAll(); -``` - -### Reject all requests - -This method lets the host reject all the requests to join the stage. - -```swift -meeting.livestream.rejectAll(); -``` - -You can listen to livestream events by attaching a listener by calling `addLivestreamEventsListener` on `meeting` object where `meeting` is an instance of `DyteMobileClient()`. - -```swift -meeting.addLiveStreamEventsListener(liveStreamEventsListener: self) -``` - -```swift -extension LivestreamViewController: DyteLiveStreamEventsListener { - public func onJoinRequestAccepted(peer: LiveStreamStagePeer) { - // when localUser's join request is accepted by host - } - - public func onJoinRequestRejected(peer: LiveStreamStagePeer) { - // when localUser's join request is rejected by host - } - - public func onLiveStreamEnded() { - // when livestream is ended - } - - public func onLiveStreamEnding() { - // when livestream is ending - } - - public func onLiveStreamErrored() { - // errored livestream - } - - public func onLiveStreamStarted() { - // when livestream is started - } - - public func onLiveStreamStarting() { - // when livestream is starting - } - - public func onLiveStreamStateUpdate(data: DyteLivestreamData) { - // when there is an update in state of the livestream - } - - public func onStageCountUpdated(count: Int32) { - // when stage count updates in livestream - } - - public func onStageRequestsUpdated(requests: [LiveStreamStageRequestPeer]) { - // when there are updates in stage requests - } - - public func onViewerCountUpdated(count: Int32) { - // when viewer count updates in livestream - } - -} -``` - -## Livestream events - -- ### onLiveStreamStarting - - This event is triggered when the livestream is about to start. - -- ### onLiveStreamStarted - - This event is triggered when the livestream has started. - -- ### onLiveStreamStateUpdate - - This event is triggered when the livestream state is updated. - -- ### onViewerCountUpdated - - This event is triggered when the viewer count is updated. - -- ### onLiveStreamEnding - - This event is triggered when the livestream is about to end. - -- ### onLiveStreamEnded - - This event is triggered when the livestream has ended. - -- ### onLiveStreamErrored - - This event is triggered when their is an error while starting/stopping the livestream. - -- ### onStageCountUpdated - - This event is triggered when the number of users on stage is updated. The `count` object contains the updated stage count. - -- ### onStageRequestsUpdated - - This event is triggered when the stage requests are updated. The `requests` object contains the updated list of stage requests. - -- ### onJoinRequestAccepted - - This event is triggered when a stage request is accepted. The `peer` object contains the peer whose request is accepted. - - ```swift - public func onJoinRequestAccepted(peer: LiveStreamStagePeer) {} - ``` - -- ### onJoinRequestRejected - - This event is triggered when a stage request is rejected. The `peer` object contains the peer whose request is rejected. - - ```swift - public func onJoinRequestRejected(peer: LiveStreamStagePeer) {} - ``` - - - iOS Core Livestreaming - diff --git a/docs/ios-core/local-user/_category_.json b/docs/ios-core/local-user/_category_.json deleted file mode 100644 index 38f1722fd3..0000000000 --- a/docs/ios-core/local-user/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 5, - "label": "Local User", - "collapsible": true -} \ No newline at end of file diff --git a/docs/ios-core/local-user/events.mdx b/docs/ios-core/local-user/events.mdx deleted file mode 100644 index fd9a074c27..0000000000 --- a/docs/ios-core/local-user/events.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Events -description: >- - Explore local user events in iOS Core with Dyte Docs. Understand how to - leverage these events for enhanced user experiences within your app. -sidebar_position: 2 -tags: - - ios-core - - local-user - - self ---- - -# Local User - Events - -You can subscribe to various events on the local user by implementing -`DyteSelfEventsListener` and passing the object to -`meeting.addSelfEventsListener(dyteSelfEventsListener)`. - -### Video update - -Triggered when the user starts / stops the video using `enableVideo` or -`disableVideo` - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onVideoUpdate(videoEnabled: Bool) { - if (videoEnabled) { - // video is enabled, and other participants in room can see local user - } else { - // video is disabled, and other participants in room can not see local user. - } - } -} -``` - -### Audio update - -Triggered when the user starts / stops the audio using `enableAudio` or -`disableAudio` - -```swift - -extension MeetingViewModel: DyteSelfEventsListener { - func onAudioUpdate(audioEnabled: Bool) { - if (audioEnabled) { - // audio is enabled, and other participants in room can hear local user - } else { - // audio is disabled, and other participants in room can not hear local user. - } - } -} -``` - -### Room disconnected update - -Triggered when the user is disconnected due to media/network errors - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onMeetingRoomDisconnected() { - //disconnected - } -} -``` - -### Proximity changed - -Triggered when there is any change in proximity. Meaning if device is near ear -piece which triggers display on/off. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onProximityChanged(isNear: Bool) { - // isNear - // if true, display should be turned off, as user might be speaking through earpiece - // if false, display should be turned on, as user might be looking at display and listening through speaker/earphones. - } -} -``` - -### Waitlist status - -For meetings whose waiting room is enabled: - -To get status of localUser in waiting room we can use - -```swift -let waitListStatus = meeting.localUser.waitListStatus -``` - -Developers can listen to those changes in `onWaitListStatusUpdate()` callbacks - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onWaitListStatusUpdate(waitListStatus: WaitListStatus) { - - } -} -``` - -## Webinar Request - -The `onWebinarPresentRequestReceived()` callback is triggered when the local user receives a request to join the webinar, while the `onStoppedPresenting()` callback is triggered when the local user ends their presentation. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onWebinarPresentRequestReceived() { - // Display an alert to the user here, allowing them to accept or reject the request. - } - func onStoppedPresenting() { - //Display an alert to the user indicating that they are no longer presenting. - } -} -``` - -## LocalUser removed - -Whenever local user is removed from the meeting, `onRemovedFromMeeting()` callback is triggered. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onRemovedFromMeeting() { - // Display an alert here that user no longer in the meeting. - } -} -``` - -## Listen to Broadcast message within the room - -Get broadcast messages within the room using `onRoomMessage` callback. - -_Parameters_: - -`type`: A client-specific type to differentiate between custom messages like "emoji" or "greetings" - -`payload`: A dictionary containing the message payload, where keys are strings and values are of any type. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onRoomMessage(type: String, payload: [String : Any]) { - // triggered when a message is sent within the room. - } -``` - - - iOS Core Events - - diff --git a/docs/ios-core/local-user/introduction.mdx b/docs/ios-core/local-user/introduction.mdx deleted file mode 100644 index f82cd9fea9..0000000000 --- a/docs/ios-core/local-user/introduction.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Introduction -description: >- - Learn about local user management in iOS Core with Dyte Docs. Understand the - fundamentals for effective integration and app customization. -sidebar_position: 3 -tags: - - ios-core - - local-user - - self ---- - -# Introduction - Local User - -The local user has the methods and properties on the local user media controls. -Accessible via `localUser` within the `meeting` object. - -## Properties - -Here is a list of properties that `meeting.localUser` user provides: - -- `id`: The ID of the participant pertaining to local user. -- `name`: Contains Name of the local user. -- `clientSpecificId`: Identifier provided by the developer while adding the - participant. -- `permissions`: The permissions related to various capabilities within a - meeting context for the local user. -- `audioTrack`: The audio track for the local user. -- `videoTrack`: The video track for the local user. -- `screenShareTrack`: The screen share video tracks for the local user. -- `audioEnabled`: A boolean value indicating if the audio currently enabled. -- `videoEnabled`: A boolean value indicating if the video currently enabled. -- `isScreenShareParticipant`: A boolean value indicating if the participant is a - screen share participant in this meeting. - -## Change default audio / video settings - -By default as soon as you join the meeting the SDK will produce your video and -audio streams. To change this behaviour use the `audioEnabled` & `videoEnabled` -parameter - -```swift -let meetingInfo = DyteMeetingInfo( - roomName = MEETING_ROOM_NAME, - authToken = AUTH_TOKEN, - audioEnabled = false, - videoEnabled = true) -``` - -## Get local user video view - -To show localUser preview inside a view. Use `getSelfPreview()` method on -localUser. This method returns a View which can be added in any View. - -```swift -meeting.localUser.getSelfPreview() -``` - -## Turn audio/video tracks after joining the room - -If audio and video tracks are disabled during the `DyteMobileClient` -initialization process. You can setup the audio and video tracks by simply -calling `enableAudio()` and `enableVideo()` like below: - -```swift -meeting.localUser.enableAudio() -meeting.localUser.enableVideo() -``` - -## Change the name of the local user - -Change the user's name by calling `setDisplayName` method. The changed name will -reflect across all participants ONLY if the change happens before `joinRoom()` -the meeting and after `init()`. - -```swift -meeting.localUser.setDisplayName("New Name") -``` - -## Mute/Unmute microphone - -```swift -// Mute Audio -meeting.localUser.disableAudio() - -// Unmute Audio -meeting.localUser.enableAudio() - -// Get current status -meeting.localUser.audioEnabled -``` - -## Enable/Disable camera - -```swift -// Disable Video -meeting.localUser.disableVideo() - -// Enable Video -meeting.localUser.enableVideo() - -// Get current status -meeting.localUser.videoEnabled -``` - -## Pinning & unpinning - -You can pin or unpin yourself given you have the appropriate permissions. You -can check the pinned status of the local user using `meeting.localUser.isPinned`. - -```swift -meeting.localUser.pin(); -``` - -```swift -meeting.localUser.unpin(); -``` - -## Enable / Disable Screen share - -```swift -// Enable Screenshare -meeting.localUser.enableScreenshare(); - -// Disable Screenshare -meeting.localUser.disableScreenshare(); -``` - -## Switch camera between primary and secondary - -```swift -// switch camera -meeting.localUser.switchCamera() -``` - -OR - -If you want to set video device yourself: - -```swift -meeting.localUser.setVideoDevice(videoDevice: DyteVideoDevice) -``` - - - iOS Core Introduction - - diff --git a/docs/ios-core/local-user/manage-media-devices.mdx b/docs/ios-core/local-user/manage-media-devices.mdx deleted file mode 100644 index 338fb80813..0000000000 --- a/docs/ios-core/local-user/manage-media-devices.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Manage Media Devices -description: >- - Discover how to manage media devices for local users in iOS Core with Dyte - Docs. Optimize your app's media handling capabilities seamlessly. -sidebar_position: 3 -tags: - - ios-core - - local-user - - localUser - - localUser events ---- - -# Manage Media Devices - -Media devices represents the hardware for the camera, microphone and speaker -devices. To get the list of media devices that are currently being used, you can -use the following methods: - -```swift -// Get all audio devices -let audioDevices = meeting.localUser.getAudioDevices(); - -// Get all video devices -let videoDevices = meeting.localUser.getVideoDevices(); -``` - -## Set device - -To set a device as an active device, you can call `setDevice` method. This takes -a `MediaDeviceInfo` object, and replaces the same `kind` device. - -```swift -meeting.localUser.setDevice(device); -``` - - - iOS Core Manage Media Devices - - diff --git a/docs/ios-core/local-user/manage-permissions.mdx b/docs/ios-core/local-user/manage-permissions.mdx deleted file mode 100644 index 74085e6a3e..0000000000 --- a/docs/ios-core/local-user/manage-permissions.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Media Permissions -description: >- - Learn how to manage permissions for local users in iOS Core with Dyte Docs. - Ensure a smooth and secure user experience within your app. -sidebar_position: 4 -tags: - - ios-core - - local-user - - self - - self events ---- - -# Media Permissions - -To get media permissions (audio/video) for localUser we can do as follows - -```swift -let isCameraPermissionGranted - = meeting.localUser.isCameraPermissionGranted -let isMicrophonePermissionGranted - = meeting.localUser.isMicrophonePermissionGranted -``` - -Similarly to listen to callbacks regarding media permissions once user joins the -meeting - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onMeetingRoomJoinedWithoutCameraPermission() { - // when meeting room is joined without camera permission - } - - func onMeetingRoomJoinedWithoutMicPermission() { - // when meeting room is joined without microphone permission - } -} -``` - - - iOS Core Media Permissions - - diff --git a/docs/ios-core/local-user/screen-share-guide.mdx b/docs/ios-core/local-user/screen-share-guide.mdx deleted file mode 100644 index 1a48d55e06..0000000000 --- a/docs/ios-core/local-user/screen-share-guide.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Sharing screen on iOS -sidebar_position: 12 -tags: - - ios-core ---- - -This document explains how to setup screen sharing on a iOS App using Dyte SDK - -:::warning - -This guide is being updated, and might not work as expected in its current form - -::: - -## Overview - -1. Add a new Broadcast Upload Extension to your project. -2. Setup app groups -3. Have your SampleHandler class initialize DyteBroadcastHandler and proxy a few methods. -4. Update Info.plist - -### Add a new Broadcast Upload Extension to your project. - -Add a Broadcast Upload Extension through `File` -> `New` -> `Target`. -Choose `iOS` -> `Broadcast Upload Extension` and fill out the required information for your extension and click `Finish`. - -![meeting UI screenshot with labeled parts](/static/mobile/0.x.x/ios-setup-0.png) -![meeting UI screenshot with labeled parts](/static/mobile/0.x.x/ios-setup-01.png) - -### Setup app groups - -Add your extension to an app group by going to your extension's target in the project; in the Signings & Capabilities tab, click the + button in the top left and add App Groups. If you haven't done so already, add App Groups to your main app as well, ensuring that the App Group identifier is the same for both. - -![meeting UI screenshot with labeled parts](/static/mobile/0.x.x/ios-setup-03.png) -![meeting UI screenshot with labeled parts](/static/mobile/0.x.x/ios-setup-1.png) - -### Setup SampleHandler - -- Edit your SampleHandler class to look something like this. - -```swift -import ReplayKit -import DyteiOSCore - -class SampleHandler: RPBroadcastSampleHandler { - - let dyteBroadcast: DyteBroadcastHandler = DyteBroadcastHandler(); - - override init() { - super.init() - } - override func broadcastPaused() { - dyteBroadcast.broadcastPaused() - } - - override func broadcastResumed() { - dyteBroadcast.broadcastResumed() - } - - override func broadcastFinished() { - dyteBroadcast.broadcastFinished() - } - - override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) { - dyteBroadcast.broadcastStartedWithSetupInfo(setupInfo: setupInfo) - } - - override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) { - let rawPointer = Unmanaged.passUnretained(sampleBuffer).toOpaque() - dyteBroadcast.processSampleBuffer(sampleBuffer: rawPointer, withType: Int64(sampleBufferType.rawValue)) - - } - -} -``` - -### Modify Info.plist - -Make sure **both of them** (App and Extension Info.plist) contains these keys - -``` - RTCAppGroupIdentifier - (name of the group) - RTCScreenSharingExtension - (Bundle Identifier) -``` - -![Info.plist screenshot](/static/mobile/0.x.x/ios-setup-info.png) - -### Start the Screenshare - -Launch the broadcast extension and call the method `enableScreenshare()` - -```swift - -let screenShareExtensionId = Bundle.main.infoDictionary?["RTCScreenSharingExtension"] as? String; -let view = RPSystemBroadcastPickerView() -view.preferredExtension = screenShareExtensionId -view.showsMicrophoneButton = false -let selector = NSSelectorFromString("buttonPressed:") -if view.responds(to: selector) { - view.perform(selector, with: nil) -} - -dyteClient.localUser.enableScreenshare() -``` - -![screenshot](/static/mobile/0.x.x/ios-setup-app.png) -![screenshot](/static/mobile/0.x.x/ios-setup-demo.png) diff --git a/docs/ios-core/participants/_category_.json b/docs/ios-core/participants/_category_.json deleted file mode 100644 index 2599bb6c6c..0000000000 --- a/docs/ios-core/participants/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 5, - "label": "Remote Participants", - "collapsible": true -} \ No newline at end of file diff --git a/docs/ios-core/participants/events.mdx b/docs/ios-core/participants/events.mdx deleted file mode 100644 index 6ba4bdc887..0000000000 --- a/docs/ios-core/participants/events.mdx +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: Participant Events -description: >- - Dive into the details of handling participant events in your iOS - application using Dyte's comprehensive documentation. -sidebar_position: 3 -tags: - - ios-core - - participants - - self ---- - -# All Participant Events - -You can subscribe to events for all participants by implementing -`DyteParticipantEventsListener` protocol and then passing that object to -`meeting.addParticipantEventsListener(dyteParticipantEventsListener)` method. - -Here are the supported methods: - -## Participant joined - -Triggers an event when any participant joins the meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onParticipantJoin(participant: DyteMeetingParticipant) { - // your code here to handle new participant - } - } -``` - -## Participant left - -Triggers an event when any participant leaves the meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onParticipantLeave(participant: DyteMeetingParticipant) { - // your code here to handle participant left from meeting - } - } -``` - -## Participant update - -Triggers an event whenever there is any change in participant. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onUpdate(participants: DyteParticipants) { - // your code here to handle participant update - } - } -``` - -## Video update - -Trigger an event when any participant starts / stops video. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onVideoUpdate(videoEnabled: Bool, participant: DyteMeetingParticipant) { - // your code here to handle participant video toggle update - } - } -``` - -## Audio update - -Trigger an event when any participant starts / stops audio. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onAudioUpdate(audioEnabled: Bool, participant: DyteMeetingParticipant) { - // your code here to handle participant audio toggle update - } - } -``` - -## Screenshare updates - -Triggers an event when there is any change in screenshares in a meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onScreenSharesUpdated() { - // your code here to handle screenshares from meeting - // you can use `meeting.participants.screenshares` to get latest screenshare participants - } - - func onScreenShareStarted(participant: DyteJoinedMeetingParticipant) { - // participant stared presenting screen in the meeting - } - - func onScreenShareEnded(participant: DyteJoinedMeetingParticipant) { - // participant stopped presenting screen in the meeting - } - } -``` - -## Active speaker - -Triggers an event when any is change in active speaker in the meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onActiveSpeakerChanged(participant: DyteMeetingParticipant) { - // your code here to handle active speaker - } - - func onNoActiveSpeaker() { - // your code here to handle no active speaker - } - } -``` - -## Pinned participant - -Triggers an event when there is any change in pinned participant in the meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onParticipantPinned(participant: DyteMeetingParticipant) { - // your code here to show pinned participant - } - - func onParticipantUnpinned(participant: DyteJoinedMeetingParticipant) { - // your code here to remove pinned participant - } - } -``` - -## Active participants list change - -Triggers an event when any is change in active participants list in the meeting. - -```swift - extension MeetingViewModel: DyteParticipantEventsListener { - func onActiveParticipantsChanged(active: [DyteMeetingParticipant]) { - // your code here to refresh active participants - } - } -``` - -# Single Participant Events - -You can also subscribe to events for a single participant by implementing `DyteParticipantUpdateListener` protocol and then passing that object to `participant.addParticipantUpdateListener(dyteParticipantUpdateListener)` method. - -Here are the supported methods: - -### Participant update - -Triggers an event whenever there is any change in participant. - -```swift - extension MeetingViewModel: DyteParticipantUpdateListener { - func onUpdate() { - // your code here to handle participant update - } - } -``` - -### Video update - -Triggers an event when the participant starts / stops video. - -```swift - extension MeetingViewModel: DyteParticipantUpdateListener { - func onVideoUpdate(isEnabled: Bool) { - // your code here to handle participant video toggle update - } - } -``` - -### Audio update - -Triggers an event when the participant starts / stops audio. - -```swift - extension MeetingViewModel: DyteParticipantUpdateListener { - func onAudioUpdate(isEnabled: Bool) { - // your code here to handle participant audio toggle update - } - } -``` - -### Pinned & Unpinned participant - -Triggers an event when the participant is pinned / unpinned. - -```swift - extension MeetingViewModel: DyteParticipantUpdateListener { - func onPinned() { - // your code here to show pinned participant - } - - func onUnpinned() { - // your code here to remove pinned participant - } - } -``` - -### Screen share started & ended - -Triggers an event when the participant starts / stops screen sharing. - -```swift - extension MeetingViewModel: DyteParticipantUpdateListener { - func onScreenShareStarted() { - // your code here to handle screen share started - } - - func onScreenShareEnded() { - // your code here to handle screen share ended - } - } -``` - - - iOS Core The participant events - - diff --git a/docs/ios-core/participants/participant-object.mdx b/docs/ios-core/participants/participant-object.mdx deleted file mode 100644 index 91f34d37f9..0000000000 --- a/docs/ios-core/participants/participant-object.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Participant Object -description: The object corresponding to a particular participant. -sidebar_position: 2 -slug: /participants/participant-object -tags: - - ios-core - - participants ---- - -# The participant object - -The `participant` object consists of all the information related to a particular participant. For instance, it contains a participants video/audio/screenshare stream, and the participant's name. It also contains state variables that indicate whether a participant's camera is on or off, and whether they are muted or unmuted. - -The participant object has the following properties. - -- `id`: The `participantId` of the participant (aka `peerId`). -- `userId`: The `userId` of the participant. -- `name`: The participant's name. -- `picture`: The participant's picture (if any). -- `clientSpecificId`: An arbitrary ID that can be set to identify the - participant. -- `videoTrack`: The video track of the participant. -- `screenShareTrack`: The video and audio (if any) track of the participant's - screen share stream. -- `videoEnabled`: Set to true if the participant's camera is on. -- `audioEnabled`: Set to true if the participant is unmuted. -- `isPinned`: True if current user is pinned in the meeting room. -- `presetName`: Name of the preset associated with the participant. -- `stageStatus`: Status of stage for the participant - -## To get video view of a given participant - -You can call `participant.getVideoView()` which will return a View which further -can used to add in any view. - -Similarly one can use `participant.getScreenShareView()` which will return a -View which further can used to add in any view. - -## Host Controls - -If you are the host of the room, you can use the **host controls**. The host controls allow you to manage the participants in the room. - -The host controls include the following options: - -- **Mute/Unmute**: Mute or unmute a participant. -- **Kick**: Kick a participant from the room. -- **Pin**: Pin a participant's video. -- **Turn off video**: Turn off a participant's video. - -You can also use these methods from our participant object to -perform these actions programmatically. - -```swift -if let participant = meeting.participants.joined.first(where: { $0.id == participantId }) { - // To disable a participant's video stream - participant.disableVideo() - - // To disable a participant's audio stream - participant.disableAudio() - - // To kick a participant from the meeting - participant.kick() -} -``` - -## Waiting Room - -Host can use these waiting room methods from our participant object to -perform these actions programmatically. - -```swift -// Accept the request and let the participant in the meeting -participant.acceptWaitListedRequest() - -// Reject the request, do not permit the participant to join the meeting -participant.rejectWaitListedRequest() -``` - -## pin/unpin - -You can also `pin` or `unpin` a participant in the meeting. All "pinned" -participants are added to the `meeting.participants.pinned`. - -```swift -if let participant = meeting.participants.joined.first(where: { $0.id == participantId }) { - // To pin a participant - participant.pin() - - // To unpin a participant - participant.unpin() -} -``` - -## Move between pages in paginated mode - -The `setPage(pageNumber: Int)` method allows you to switch between pages of -participants present in the meeting. - -```swift -// switch to 1st page -meeting.participants.setPage(1) -``` - -## Broadcast message to all participants - -Send a broadcast message to all `joined` participants - -_Parameters_: - -`type`: A client-specific type to differentiate between custom messages like "emoji" or "greetings" - -`payload`: A dictionary containing the message payload, where keys are strings and values are of any type. - -```swift -// broadcast message -meeting.participants.broadcastMessage(type, payload) -``` - -# Receiving Broadcast messages - -To be able to receive broadcast messages you need to implement a method -`onRoomMessage` method from callback `DyteSelfEventsListener`. You can -subscribe to this events by calling -`meeting.addChatEventsListener(dyteSelfEventsListener)` - -[check this dyteSelfEventsListener broadcastMessage documentation](/ios-core/local-user/events#listen-to-broadcast-message-within-the-room) - - - iOS Core The participant object - - diff --git a/docs/ios-core/participants/remote-participants.mdx b/docs/ios-core/participants/remote-participants.mdx deleted file mode 100644 index dc5136fb56..0000000000 --- a/docs/ios-core/participants/remote-participants.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Participant Types -description: 'Events, methods and data pertaining to meeting participants.' -sidebar_position: 1 -slug: /participants/ -tags: - - ios-core - - participants ---- - -# Participant Types - -The data regarding all meeting participants is stored under `meeting.participants`. These **does not** include the local user. Use the methods and events to consume the participants data. For example, to get all the participants who joined the meeting: - -```swift -// get all joined participants -var joined: [DyteJoinedMeetingParticipant] = meeting.participants.joined - -// get all participants -var all: [DyteParticipant] = meeting.participants.all -``` - -The `meeting.participants` object has the following **lists** of participants - -- **all**: A list that contains all the participants who have joined the meeting except the local user -- **joined**: A list that contains all the participants who are currently in the meeting - except the local user -- **waitlisted**: A list that contains all the participants waiting to join the - meeting. -- **active**: A list that contains all the participants except the local user whose media is subscribed to i.e - participants are supposed to be on the screen at the moment except the local user -- **pinned**: A list that contains all the pinned participants of the meeting. -- **screenShares**: A list that contains all the participants who are sharing their screen. - -Therefore if you were to make a video / audio grid of participants, you'd use the `active` map, but to display the list of all participants in the meeting you'd use the `joined` map. - -Each participant in each of the `joined`, `active`, `pinned` and `screenShares` list are of type `DyteJoinedMeetingParticipant`, `waitlisted` list is of type `DyteWaitlistedParticipant` and `all` list is of type `DyteParticipant`. - - - iOS Core Participants - diff --git a/docs/ios-core/plugins/_category_.json b/docs/ios-core/plugins/_category_.json deleted file mode 100644 index 072077b2d4..0000000000 --- a/docs/ios-core/plugins/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 7, - "label": "Plugins", - "collapsible": true -} \ No newline at end of file diff --git a/docs/ios-core/plugins/disable-plugin.mdx b/docs/ios-core/plugins/disable-plugin.mdx deleted file mode 100644 index a56659b31d..0000000000 --- a/docs/ios-core/plugins/disable-plugin.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Functions to disable plugins -description: Methods on a plugin in a meeting. -sidebar_position: 3 -tags: - - ios-core - - plugins ---- - -# Functions to disable plugins - -Each plugin in `meeting.plugins` object is of type -[`DytePlugin`](./introduction) and exposes the following functions to disable -plugins. - -### Deactivate Plugin - -The `deactivate()` method deactivates the plugin for all users in the meeting. When you deactivate a plugin, it moves out of the active plugins list and can only be accessed from `meeting.plugins.all`. - -```swift -let plugin = meeting.plugins.active[0] - -plugin.deactivate() -``` - - - Mobile Core Function to disable plugins - diff --git a/docs/ios-core/plugins/enable-plugin.mdx b/docs/ios-core/plugins/enable-plugin.mdx deleted file mode 100644 index dc09e4233f..0000000000 --- a/docs/ios-core/plugins/enable-plugin.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Functions to enable plugins -description: Methods on a plugin in a meeting. -sidebar_position: 2 -tags: - - ios-core - - plugins ---- - -# Functions to enable plugins - -Each plugin in `meeting.plugins` object is of type -[`DytePlugin`](./introduction) and exposes the following functions to enable -plugins. - -### Get Plugin View - -This method adds the communication layer between the plugin inside the WebView and -the core SDK (meeting object) in your application. - -```swift -let plugin = meeting.plugins.active[0] - -plugin.getPluginView() // This will return a WebView -``` - -The `getPluginView()` method returns a WebView that can be added to a UIView. - -### Activate Plugins - -The `activate()` method activates a plugin for all users in the meeting. When -you activate a plugin, it moves into the active plugins map and can be accessed -from `meeting.plugins.active`. - -The snippet below retrieves the first plugin from the list and activates it. - -```swift -var plugin: DytePlugin = meeting.plugins.all[0] - -plugin.activate() -``` - -This directly activates the plugin without any user interaction. - -### Activate a plugin on click - -You can also show a list of all plugins and activate a plugin on click programmatically. - -```swift -func togglePlugin(index: Int) { - let plugin = plugins[index] - if plugin.isActive { - plugin.deactivate() - }else { - plugin.activate() - } -} -``` - - - Mobile Core Function to enable plugins - diff --git a/docs/ios-core/plugins/extra.mdx b/docs/ios-core/plugins/extra.mdx deleted file mode 100644 index b97dc638bb..0000000000 --- a/docs/ios-core/plugins/extra.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Other methods -description: Methods on a plugin in a meeting. -sidebar_position: 4 -tags: - - ios-core - - plugins ---- - -## Send data to the plugin - -You can send data (type `any`) to a plugin using the `sendData()` method. This method comes in handy when building your own plugin. - -```swift -let pluginId = "..." -if let plugin = meeting.plugins.active.first(where: { $0.id == pluginId }) { - plugin.sendData(eventName: "my-custom-event", data: "Hello world") -} -``` - -## Receive data from the plugin - -You can receive data from a plugin by implementing the methods defined in `DytePluginEventsListener` interface. -This method comes in handy when building your own plugin. Listen Plugin events -using `meeting.addPluginEventsListener(meetingViewModel)` - -```swift -extension MeetingViewModel: DytePluginEventsListener { - func onPluginActivated(plugin: DytePlugin) { - ... - } - - func onPluginDeactivated(plugin: DytePlugin) { - ... - } - - func onPluginMessage(plugin: DytePlugin, eventName: String, data: Any?) { - ... - } - - func onPluginFileRequest(plugin: DytePlugin) { - ... - } -} -``` - - - iOS Core extra plugins Function - diff --git a/docs/ios-core/plugins/introduction.mdx b/docs/ios-core/plugins/introduction.mdx deleted file mode 100644 index f027581493..0000000000 --- a/docs/ios-core/plugins/introduction.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Introduction -description: Manage plugins in a meeting. -sidebar_position: 1 -tags: - - ios-core - - plugins ---- - -# Introduction - -Plugins are one-click add-ons that can make your meetings more immersive and collaborative. Dyte provides a bunch of inbuilt plugins to choose from, you can also build your own plugins using the [Plugin SDK](../../plugin-sdk/). - -The meeting plugins can be accessed from the `meeting.plugins` object, it exposes the following. - -| Property | Type | Description | -| -------- | ---- | -------------------------------------- | -| active | List | All plugins that are currently in use. | -| all | List | All plugins the meeting has access to. | - -Each plugin in the list is of type `DytePlugin` which has the following public fields and methods: - -```swift -class DytePlugin { - let id: String - let name: String - let description: String - let picture: String - let isPrivate: Bool - let staggered: Bool - let baseURL: String - let config: PluginConfig - let isActive: Bool - let enabledBy: String? - - func activate() - func deactivate() - func getPluginView(): WebView - func sendData(eventName: String, data: Any?) -} -``` - -The `PluginConfig` type consists of the following fields: - -```swift -class PluginConfig { - let accessControl: String = "FULL_ACCESS" -} -``` - - - Mobile Core Introduction - diff --git a/docs/ios-core/polls/_category_.json b/docs/ios-core/polls/_category_.json deleted file mode 100644 index fe2eed0b04..0000000000 --- a/docs/ios-core/polls/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 10, - "label": "Polls", - "collapsible": true -} diff --git a/docs/ios-core/polls/creating-a-poll.mdx b/docs/ios-core/polls/creating-a-poll.mdx deleted file mode 100644 index f09921d8d7..0000000000 --- a/docs/ios-core/polls/creating-a-poll.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Creating a poll -description: >- - Create and manage polls in your iOS app using Dyte's documentation on - Polls Creation. -sidebar_position: 2 -tags: - - ios-core - - polls - - create ---- - -# Creating a poll - -A new poll can be created using the `create` method from the -[`meeting.polls`](./introduction) object. The `meeting.polls.create()` method -accepts the following params. - -| Param | Type | Default Value | Required | Description | -| --------- | -------- | ------------- | -------- | ------------------------------------------ | -| question | string | - | yes | The question that is to be voted for. | -| options | string[] | - | yes | The options of the poll. | -| anonymous | boolean | - | no | If true, the poll votes are anonymous. | -| hideVotes | boolean | - | no | If true, the votes on the poll are hidden. | - -The following snippet creates a poll where votes are anonymous. - -```swift -meeting.polls.create( - question: "Are you an early bird or a night owl?", - options: ["Early bird", "Night owl"], - anonymous: true, - hideVotes: false -) -``` - - - Mobile Core Creating a poll - - diff --git a/docs/ios-core/polls/introduction.mdx b/docs/ios-core/polls/introduction.mdx deleted file mode 100644 index 84667d670a..0000000000 --- a/docs/ios-core/polls/introduction.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Introduction -description: >- - Learn the fundamentals of integrating polls into your iOS application with - Dyte's Polls Introduction guide. -sidebar_position: 1 -tags: - - ios-core - - polls ---- - -# Introduction - -The meetings polls object can be accessed using `meeting.polls`. It provides -methods to create polls, vote, and more. - -`meeting.polls.polls` returns an array of all polls created in a meeting, where -each element is an object of type `DytePollMessage`. - -```swift -class DytePollMessage{ - let id: String - let question: String - let anonymous: Bool - let hideVotes: Bool - let createdBy: String - let options: [DytePollOption] -} -``` - -The type `DytePollMessage` is the main class for any poll in Dyte. It also -contains list of `DytePollOption` which are options for a given poll. And every -`DytePollOption` has list of votes inside of it. Votes are objects of class -`DytePollVote` which internally has id and name of the vote. - -```swift -class DytePollOption{ - let text: String - let votes: [DytePollVote] - let count: Int -} - -class DytePollVote{ - let id: String - let name: String -} -``` - -One can easily create, vote and view polls by listening to callbacks on -`meeting` object. - -## Listening to new polls in a meeting - -To be able to receive new poll messages you need to implement a method -`onPollUpdates()` method from callback `DyteMeetingRoomEventsListener`. You can -subscribe to this events by calling -`meeting.addMeetingEventsListener(meetingViewModel)` - -```swift -extension MeetingViewModel: DyteMeetingRoomEventsListener { - func onNewPoll(poll: DytePollMessage) { - // code to handle new poll - } - - func onPollUpdates(pollMessages: [DytePollMessage]) { - // code to handle polls and their vote updates. - } -} -``` diff --git a/docs/ios-core/polls/voting-on-a-poll.mdx b/docs/ios-core/polls/voting-on-a-poll.mdx deleted file mode 100644 index a424c5c05a..0000000000 --- a/docs/ios-core/polls/voting-on-a-poll.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Voting on a poll -description: >- - Understand the process of voting on polls within your iOS app using Dyte's - documentation on Polls Voting. -sidebar_position: 3 -tags: - - ios-core - - polls - - votes ---- - -# Voting on a poll - -The `meeting.polls.vote()` method can be used to register a vote on a poll. It -accepts the following params. - -| Param | Type | Default Value | Required | Description | -| ----------- | --------------- | ------------- | -------- | ---------------------------- | -| pollMessage | DytePollMessage | - | yes | The poll message to vote on. | -| pollOption | DytePollOption | - | yes | The option to vote for. | - -The following snippet votes for the 1st option on the 1st poll created in the -meeting. - -```swift -let poll: DytePollMessage = meeting.polls.items[0] -let selectedPollOption: DytePollOption = poll.options[0] - -meeting.poll.vote(poll, selectedPollOption) -``` diff --git a/docs/ios-core/pre-call/1-media-preview.mdx b/docs/ios-core/pre-call/1-media-preview.mdx deleted file mode 100644 index 88d2b6fb9f..0000000000 --- a/docs/ios-core/pre-call/1-media-preview.mdx +++ /dev/null @@ -1,119 +0,0 @@ -# Media Preview - -Before joining a meeting, users may want to preview and configure their media devices like camera, microphone, and audio output. -This section provides developers with the tools to prepare the media environment before joining a Dyte meeting. - -If you are using our UI Kits, this functionality can be handled by `DyteSetupViewController` or built with `DyteParticipantTileView` -and `DyteSettingViewController` components. - -## Properties - -- `meeting.localUser.audioEnabled`: A boolean value indicating if the audio currently enabled. -- `meeting.localUser.videoEnabled`: A boolean value indicating if the video currently enabled. - -## Methods - -### Toggling Media - -The same methods used for controlling media during a meeting are also applicable for pre-call media configuration. - -**1. Mute/Unmute microphone** - -```swift -// Mute Audio -meeting.localUser.disableAudio() - -// Unmute Audio -meeting.localUser.enableAudio() -``` - -```mermaid -flowchart LR - classDef basic fill:white; - - eam("enableAudio()") --> success("Gives onAudioUpdate callback to DyteSelfEventsListener") - - class eam basic; -``` - -
- -Anytime there is an update in the audio state of the local user, the Core SDK notifies the client through the `onAudioUpdate` callback -from `DyteSelfEventsListener`. Here's how you can register the listener: - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onAudioUpdate(audioEnabled: Boolean) { - // Show a visual preview of the audio to the user if enabled - } -} -``` - -**2. Enable/Disable camera** - -```swift -// Disable Video -meeting.localUser.disableVideo() - -// Enable Video -meeting.localUser.enableVideo() -``` - -```mermaid -flowchart LR - classDef basic fill:white; - - eam("enableVideo()") --> success("Gives onVideoUpdate callback to DyteSelfEventsListener") - - class eam basic; -``` - -
- -Whenever there is an update in the video state of the local user, the Core SDK notifies the client through the `onVideoUpdate` callback -from `DyteSelfEventsListener`. Here's how you can register the listener: - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onVideoUpdate(videoEnabled: Boolean) { - // Show local user's VideoView if video is enabled - } -} -``` - -### Changing Media Device - -Media devices represent the hardware for the camera, microphone, and speaker devices. To get the list of media devices currently -available, use the following methods: - -```swift -// Get all audio devices -let audioDevices = meeting.localUser.getAudioDevices() - -// Get all video devices -let videoDevices = meeting.localUser.getVideoDevices() -``` - -To get the currently selected media device, use the following methods: - -```swift -// Get current audio device being used -let currentAudioDevice = meeting.localUser.getSelectedAudioDevice() - -// Get current video device being used -let currentVideoDevice = meeting.localUser.getSelectedVideoDevice() -``` - -Use these methods to create a UI that allows users to configure their media devices. When the user selects a device, use the below methods to set the device. - -**Set device** - -```swift -// Set audio device -meeting.localUser.setAudioDevice(device) -// eg. device = audioDevices[0] - -// Set video device -meeting.localUser.setVideoDevice(device) -// eg. device = videoDevices[0] -``` diff --git a/docs/ios-core/pre-call/2-handling-permissions.mdx b/docs/ios-core/pre-call/2-handling-permissions.mdx deleted file mode 100644 index c734ab6349..0000000000 --- a/docs/ios-core/pre-call/2-handling-permissions.mdx +++ /dev/null @@ -1,43 +0,0 @@ -# Handling Device Permissions - -Before allowing users to interact with their camera and microphone, it's important to check if the necessary permissions are -granted on their iOS device. Dyte's iOS Core SDK provides easy-to-use APIs to check the status of these permissions. - -### Checking Permissions - -Use the following APIs to check if the camera and microphone permissions are granted: - -```swift -// Check if CAMERA permission is granted -let cameraPermissionGranted = meeting.localUser.isCameraPermissionGranted - -// Check if RECORD_AUDIO (microphone) permission is granted -let micPermissionGranted = meeting.localUser.isMicrophonePermissionGranted -``` - -Alternatively, you can also use standard way to check if these permissions are granted: - -```swift -if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Authorized { - // Already Authorized -} else { - AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted: Bool) -> Void in - if granted == true { - // User granted - } else { - // User rejected - } - }) -} -``` - -Refer to the [iOS official documentation](https://developer.apple.com/documentation/avfoundation/capture_setup/requesting_authorization_to_capture_and_save_media) -for more information on checking permissions. - -You can use the permission status to enable or disable camera and microphone buttons in the pre-call UI, or provide visual -feedback to indicate the availability of these media devices. - -### Automatic Permission Request - -When the Dyte SDK is initialised, it automatically checks for the required media permissions. If the permissions are not granted, -the SDK requests them on behalf of the developers. diff --git a/docs/ios-core/pre-call/3-meeting-meta.mdx b/docs/ios-core/pre-call/3-meeting-meta.mdx deleted file mode 100644 index dd3aa76308..0000000000 --- a/docs/ios-core/pre-call/3-meeting-meta.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Meeting Metadata - -### Change the name of the user - -You can allow the user to edit their name by using the `setDisplayName` method. - -```swift -meeting.localUser.setDisplayName("New Name") -``` - -**Note**: The name change will only be reflected to other participants if this method is called before joining the room. diff --git a/docs/ios-core/pre-call/4-waiting-room.mdx b/docs/ios-core/pre-call/4-waiting-room.mdx deleted file mode 100644 index 496380246e..0000000000 --- a/docs/ios-core/pre-call/4-waiting-room.mdx +++ /dev/null @@ -1,88 +0,0 @@ -# Waiting Room - -When you call `meeting.joinRoom()`, the user either enters the meeting room directly if allowed, or they are placed in the waiting room -if they are a waitlisted participant. - -The diagram illustrates the possible room states the local user can be in. - -```mermaid -stateDiagram-v2 - init --> joined - init --> waitlisted - waitlisted --> joined - waitlisted --> rejected -``` - -
- -### Waitlist Events Listener - -To listen for waitlisting events, implement `DyteWaitlistEventsListener` on the `meeting` object. - -```swift -meeting.addWaitlistEventListener(waitlistEventListener: self) -``` - -When registered, callbacks can be observed as follows: - -```swift - -extension MeetingViewModel: DyteWaitlistEventsListener { - - func onWaitListParticipantJoined(participant: DyteMeetingParticipant) { - // triggered when waitList peer is joined - } - - func onWaitListParticipantAccepted(participant: DyteMeetingParticipant) { - // triggered when waitListed peer is accepted by host - } - - func onWaitListParticipantRejected(participant: DyteMeetingParticipant) { - // triggered when entry of waitListed peer declined by host - } - - func onWaitListParticipantClosed(participant: DyteMeetingParticipant) { - // triggered when waitListed peer get's disconnected - } -} -``` - -### Meeting Room Joined - -If user joins the room successfully, you receive the `onMeetingRoomJoinCompleted` callback in `DyteMeetingRoomEventsListener`. -You can listen for this callback as follows: - -```swift -extension MeetingViewModel: DyteMeetingRoomEventsListener { - func onMeetingRoomJoinCompleted() { - // Local user is in the meeting - } -} -``` - -### Waitlisted Participant - -If the user is waitlisted, the `onWaitListStatusUpdate` callback in `DyteSelfEventsListener` notifies you of any changes in the -user's waitlist status. You can check the `waitListStatus` to determine their status: - -- `WAITING`: Local user is in the waiting room. -- `REJECTED`: Local user's join room request is rejected by the host. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onWaitListStatusUpdate(waitListStatus: WaitListStatus) { - switch waitListStatus { - case .accepted: - // Local user's join room request was accepted by the host - case .waiting: - // Local user is in the waiting room - case .rejected: - // Local user's join room request was rejected by the host - default: - return .none - } - } -} -``` - -Host can use [these methods to accept/reject participants](/ios-core/participants/participant-object#waiting-room). diff --git a/docs/ios-core/pre-call/_category_.json b/docs/ios-core/pre-call/_category_.json deleted file mode 100644 index 5539de8b00..0000000000 --- a/docs/ios-core/pre-call/_category_.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "position": 2, - "label": "Pre-call", - "collapsible": true, - "className": "pre-call-docs" -} \ No newline at end of file diff --git a/docs/ios-core/quickstart.mdx b/docs/ios-core/quickstart.mdx deleted file mode 100644 index 7a0de3504d..0000000000 --- a/docs/ios-core/quickstart.mdx +++ /dev/null @@ -1,256 +0,0 @@ ---- -tags: - - ios-core - - quickstart - - setup -slug: / -sidebar_position: 1 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { MavenLatestInstallation } from '@site/src/components/LatestInstallation'; -import { CocoaPodInstallation } from '@site/src/components/LatestInstallation'; - -# Quickstart - -This quickstart shows how to use Dyte's core SDKs to add live video and audio to -your iOS applications. - -To get started quickly, you can use our sample code. You can clone and run a sample application from the iOS Core samples, -available in both [Swift](https://github.com/dyte-io/ios-samples/tree/main/iOS-core) and [SwiftUI](https://github.com/dyte-io/ios-samples/tree/main/DyteSwiftUI-Core). - -## Objective - -You'll learn how to: - -- [Install the Dyte SDK](#step-1-install-the-sdk) -- [Initialize the SDK](#step-2-initialize-the-sdk) -- [Configure a Dyte meeting](#step-3-configure-a-dyte-meeting) -- [Initialize the Dyte meeting](#step-4-initialize-the-dyte-meeting) -- [Go live with your Dyte meeting](#step-5-go-live-with-your-dyte-meeting) - -## Before Getting Started - -Make sure you've read the [Getting Started with Dyte](/getting-started) topic and completed the following steps: - -- Create a [Dyte Developer Account](https://dev.dyte.io/) -- Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting) -- [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting -- Install [Xcode](https://apps.apple.com/in/app/xcode/id497799835) - -## Step 1: Install the SDK - - - - -1. Set your platform to iOS 13.0 or above in your Podfile. - -```ruby -platform :ios, '13.0' -``` - -2. Add 'DyteiOSCore' to your Podfile. - - - -3. Install the client SDK from pod. - -```shell -pod install -``` - - - - -Add `DyteiOSCore` SDK through Swift Package Manager in Xcode. Use https://github.com/dyte-in/DyteMobileCoreiOS.git as the package source. - - - - -Add the following entries to the info.plist file. This gives permission to your app to access the camera and microphone, access photos, install the required fonts and icons. - -```xml -NSBluetoothPeripheralUsageDescription -We will use your Bluetooth to access your Bluetooth headphones. -NSBluetoothAlwaysUsageDescription -We will use your Bluetooth to access your Bluetooth headphones. -NSCameraUsageDescription -For people to see you during meetings, we need access to your camera. -NSMicrophoneUsageDescription -For people to hear you during meetings, we need access to your microphone. -NSPhotoLibraryUsageDescription -For people to share, we need access to your photos. -UIBackgroundModes - - audio - voip - fetch - remote-notification - -``` - -The `UIBackgroundModes` key is used in the `Info.plist` file of an iOS app to declare the app's supported background execution modes. This key is an array of strings that specifies the types of background tasks that the app supports. By declaring the background modes, the app can continue to run in the background and perform specific tasks even when it is not in the foreground. -It's important to note that the use of background modes should be justified and comply with Apple's App Store Review Guidelines. Apps that misuse background modes or unnecessarily run in the background may be rejected during the app review process. - -Sources: Apple Developer Documentation: [Declaring Your App's Supported Background Tasks](https://developer.apple.com/documentation/bundleresources/information_property_list/uibackgroundmodes) - -## Step 2: Initialize the SDK - -1. The `DyteMobileClient` is the main class of the SDK. It is the main entry - point of the SDK. It is the only class that you need to instantiate in order - to use the SDK. To instantiate DyteMobileClient, you should use - `DyteiOSClientBuilder().build()`. - -```swift -let meeting = DyteiOSClientBuilder().build() -``` - -2. Add the required listeners and implement callback stubs as per requirement - -```swift -meeting.addMeetingRoomEventsListener(meetingRoomEventsListener: self) -meeting.addParticipantEventsListener(participantEventsListener: self) -meeting.addSelfEventsListener(selfEventsListener: self) -meeting.addChatEventsListener(chatEventsListener: self) -meeting.addPollEventsListener(pollEventsListener: self) -meeting.addRecordingEventsListener(recordingEventsListener: self) -meeting.addWaitlistEventListener(waitlistEventListener: self) -meeting.addLiveStreamEventsListener(liveStreamEventsListener: self) -``` - -## Step 3: Configure a Dyte meeting - -Add `authToken` that you got from the REST API to constructor of DyteMeetingInfoV2 - [Add Participant API](/api#/operations/addParticipant) - -| Name | Description | -| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api?v=v2#/operations/add_participant) The API response contains the `authToken`. | -| `enableAudio` | Set whether to join the meeting with your Mic ON or OFF by passing `true` or `false`. | -| `enableVideo` | Set whether to join the meeting with your Camera ON or OFF by passing `true` or `false`. | -| `baseUrl` | Base URL of the dyte's enviorment you have created the meeting on. | - -```swift -let meetingInfo = DyteMeetingInfoV2(authToken: authToken, - enableAudio: true, - enableVideo: true, - baseUrl: "dyte.io") -``` - -## Step 4: Initialize the Dyte meeting - -To initialize the connection request, call the `doInit()` method obtained on -`meeting` with the `meetingInfo` argument. This will establish the connection -with the Dyte meeting server. - -```swift -meeting.doInit(dyteMeetingInfo_: meetingInfo) -``` - -Note: This is the asynchronous method, You will have to attached observer (meeting.addMeetingRoomEventsListener(meetingRoomEventsListener: self) -) to know its completion state, success or failure, Listen to below callbacks of 'DyteMeetingRoomEventsListener'. - -```swift -func onMeetingInitCompleted() { - // init complete -} - -func onMeetingInitFailed(exception: KotlinException) { - // init failed -} -``` - -OR - -```swift -meeting.doInit(dyteMeetingInfo: DyteMeetingInfoV2, - onInitCompleted: () -> Void, - onInitFailed_: () -> Void) -``` - -To initialize the connection request, call the `doInit` method -which is asynchronous and callback based. - -## Step 5: Go live with your Dyte meeting - -### Connect to the meeting - -Now, you have established the connection with the Dyte meeting server -successfully. Once `onMeetingInitCompleted()` is triggered, next step is to join -the room. - -### Join the room - -To join the meeting room, do the following only after you received the doInit completion callbacks. - -```swift -func onMeetingInitCompleted() { - meeting.joinRoom() - } -``` - -Or - -```swift - meeting.doInit(dyteMeetingInfo: meetingInfo) { - self.meeting.joinRoom { - print("Room Joined successfully") - } onRoomJoinFailed: { - print("Room Joined failed") - } - } onInitFailed_: { - print("Meeting Initialisation got failed") - } -``` - -Join room event listeners: Once you call `joinRoom()`, you can listen to -callbacks for this action on meeting object if you have done -`meeting.addSelfEventsListener(selfEventsListener: self)`. - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onMeetingRoomJoinStarted() { - // meeting join started - } - - func onMeetingRoomJoined() { - // meeting room joined successfully - } - - func onMeetingRoomJoinFailed(exception: KotlinException) { - // error in joining meeting room. - } -} -``` - -### Leave the room - -Once the meeting is over, you can leave the meeting room. To leave the meeting -call `leaveRoom()` on `meeting` object. - -```swift -meeting.leaveRoom() -``` - -Leave room event listeners: You can listen to `leaveRoom()` callbacks by -registering obsever on meeting object as follows: - -```swift -extension MeetingViewModel: DyteSelfEventsListener { - func onMeetingRoomLeaveStarted() { - // meeting room leave started - } - - func onMeetingRoomLeft() { - // meeting room leave completed - } -} -``` - - - iOS Core Quickstart - - diff --git a/docs/ios-core/recording.mdx b/docs/ios-core/recording.mdx deleted file mode 100644 index 1f297ad728..0000000000 --- a/docs/ios-core/recording.mdx +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Recording -description: Control recordings in a meeting. -sidebar_position: 8 -tags: - - ios-core - - recording ---- - -# Recording - -The `meeting.recording` object in Dyte's iOS Core SDK provides APIs to manage recording within a meeting. - -### Recording State - -The `meeting.recording.recordingState` property indicates the current state of the recording. Possible states include `IDLE`, -`STARTING`, `RECORDING`, `PAUSED`, and `STOPPING`. - -### Starting a Recording - -To start a recording, use the `start()` method of the `meeting.recording` object. - -```swift -meeting.recording.start() -``` - -### Stopping a Recording - -To stop an active recording, use the `stop()` method. - -```swift -meeting.recording.stop() -``` - -### Pausing a Recording - -To temporarily pause a recording, use the `pause()` method. - -```swift -meeting.recording.pause() -``` - -### Resuming a Recording - -To resume a paused recording, use the `resume()` method. - -```swift -meeting.recording.resume() -``` - -### Listening for Recording Events - -To handle recording-related events, implement the `DyteRecordingEventsListener` interface. This interface provides callbacks for -various recording events: - -- `onMeetingRecordingStarted()`: Called when the recording is started or resumed, either by the user or their peer. -- `onMeetingRecordingEnded()`: Called when the recording is stopped or paused, either by the user or their peer. -- `onMeetingRecordingStateUpdated(state: DyteRecordingState)`: Notifies when there is a change in the recording state. -- `onMeetingRecordingStopError(e: Exception)`: Indicates an error occurred while stopping an active recording. -- `onMeetingRecordingPauseError(e: Exception)`: Indicates an error occurred while pausing an active recording. -- `onMeetingRecordingResumeError(e: Exception)`: Indicates an error occurred while resuming a paused recording. - -```swift -extension MeetingViewModel: DyteRecordingEventsListener { - func onMeetingRecordingStarted() { - // Handle recording started - } - - func onMeetingRecordingEnded() { - // Handle recording stopped - } - - func onMeetingRecordingStateUpdated(state: DyteRecordingState) { - // Handle recording state update - } - - func onMeetingRecordingStopError(e: Exception) { - // Handle recording stop error - } - - func onMeetingRecordingPauseError(e: Exception) { - // Handle recording pause error - } - - func onMeetingRecordingResumeError(e: Exception) { - // Handle recording resume error - } -} -``` - -Implement these callbacks to handle recording events and errors appropriately in your application. - - - iOS Core Recording - diff --git a/docs/ios-core/reference/DyteChat.md b/docs/ios-core/reference/DyteChat.md deleted file mode 100644 index d4f998c626..0000000000 --- a/docs/ios-core/reference/DyteChat.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -sidebar_position: 7 -web_core_version: 1.20.0 ---- - - - - - -This is the chat module, which can be used to send and receive messages from the meeting. - -- [DyteChat](#module_DyteChat) - - [.messages](#module_DyteChat+messages) - - [.channels](#module_DyteChat+channels) - - [.roomJoined](#module_DyteChat+roomJoined) - - [.pinned](#module_DyteChat+pinned) - - [.sendTextMessage(message)](#module_DyteChat+sendTextMessage) - - [.sendImageMessage(image)](#module_DyteChat+sendImageMessage) - - [.sendFileMessage(file)](#module_DyteChat+sendFileMessage) - - [.sendMessage(message, participantIds)](#module_DyteChat+sendMessage) - - [.getMessagesByUser(userId)](#module_DyteChat+getMessagesByUser) - - [.getMessagesByType(type)](#module_DyteChat+getMessagesByType) - - [.pin(id)](#module_DyteChat+pin) - - [.unpin(id)](#module_DyteChat+unpin) - - [.getMessages()](#module_DyteChat+getMessages) - - [.createChannel()](#module_DyteChat+createChannel) - - [.updateChannel()](#module_DyteChat+updateChannel) - - [.sendMessageToChannel(message, channelId)](#module_DyteChat+sendMessageToChannel) - - [.getChannelMembers()](#module_DyteChat+getChannelMembers) - - [.searchMessages()](#module_DyteChat+searchMessages) - - [.markLastReadMessage()](#module_DyteChat+markLastReadMessage) - - - -### meeting.chat.messages - -An array of chat messages. - - - -### meeting.chat.channels - -An Array of all available channels. - - - -### meeting.chat.roomJoined - -Returns true if the local participant has joined the meeting. - - - -### meeting.chat.pinned - -Returns an array of pinned messages. - - - -### meeting.chat.sendTextMessage(message) - -Sends a chat text message to the room. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ------- | ------------------------------------------ | -| message | The message that must be sent to the room. | - - - -### meeting.chat.sendImageMessage(image) - -Sends an image message to the meeting. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ----- | ----------------------------- | -| image | The image that is to be sent. | - - - -### meeting.chat.sendFileMessage(file) - -Sends a file to the meeting. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ----- | -------------- | -| file | A File object. | - - - -### meeting.chat.sendMessage(message, participantIds) - -Sends a message to the meeting. This method can be used to send text, image, -or file messages. The message type is determined by the key 'type' in `message` -object. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| -------------- | -------------------------------------------------------- | -| message | An object including the type and content of the message. | -| participantIds | An array including the userIds of the participants. | - - - -### meeting.chat.getMessagesByUser(userId) - -Returns an array of messages sent by a specific userId. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ------ | ---------------------------------------------- | -| userId | The user id of the user that sent the message. | - - - -### meeting.chat.getMessagesByType(type) - -Returns an array of 'text', 'image' or 'file' messages. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ----- | --------------------------- | -| type | 'text', 'image', or 'file'. | - - - -### meeting.chat.pin(id) - -Pins a chat message - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ----- | ------------------------------ | -| id | ID of the message to be pinned | - - - -### meeting.chat.unpin(id) - -Unpins a chat message - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| ----- | -------------------------------- | -| id | ID of the message to be unpinned | - - - -### meeting.chat.getMessages() - -Gets chat messages in a paginated manner - -**Kind**: instance method of [DyteChat](#module_DyteChat) - - -### meeting.chat.createChannel() - -Creates a channel with specified name and userIds as members - -**Kind**: instance method of [DyteChat](#module_DyteChat) - - -### meeting.chat.updateChannel() - -Updates the channel - -**Kind**: instance method of [DyteChat](#module_DyteChat) - - -### meeting.chat.sendMessageToChannel(message, channelId) - -Sends a message to a channel. This method can be used to send text, image, -or file messages. The message type is determined by the key 'type' in `message` -object. - -**Kind**: instance method of [DyteChat](#module_DyteChat) - -| Param | Description | -| --------- | -------------------------------------------------------- | -| message | An object including the type and content of the message. | -| channelId | Id of the channel where you want to send the message. | - - - -### meeting.chat.getChannelMembers() - -returns a list of members added to the channel - -**Kind**: instance method of [DyteChat](#module_DyteChat) - - -### meeting.chat.searchMessages() - -search messages - -**Kind**: instance method of [DyteChat](#module_DyteChat) - - -### meeting.chat.markLastReadMessage() - -marks last read message in a channel - -**Kind**: instance method of [DyteChat](#module_DyteChat) diff --git a/docs/ios-core/reference/DyteClient.md b/docs/ios-core/reference/DyteClient.md deleted file mode 100644 index 1d33747290..0000000000 --- a/docs/ios-core/reference/DyteClient.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -sidebar_position: 1 -web_core_version: 1.20.0 ---- - - - - - -The DyteClient class is the main class of the web core library. -An object of the DyteClient class can be created using -`await DyteClient.init({ ... })`. Typically, an object of `DyteClient` is -named `meeting`. - -- [DyteClient](#module_DyteClient) - - _instance_ - - [.participants](#module_DyteClient+participants) - - [.self](#module_DyteClient+self) - - [.meta](#module_DyteClient+meta) - - [.ai](#module_DyteClient+ai) - - [.plugins](#module_DyteClient+plugins) - - [.chat](#module_DyteClient+chat) - - [.polls](#module_DyteClient+polls) - - [.remote](#module_DyteClient+remote) - - [.connectedMeetings](#module_DyteClient+connectedMeetings) - - ~~[.joinRoom()](#module_DyteClient+joinRoom)~~ - - ~~[.leaveRoom()](#module_DyteClient+leaveRoom)~~ - - [.join()](#module_DyteClient+join) - - [.leave()](#module_DyteClient+leave) - - _static_ - - [.init(options)](#module_DyteClient.init) - - _inner_ - - [~networkCall](#module_DyteClient..networkCall) - - - -### meeting.participants - -The `participants` object consists of 4 maps of participants, -`waitlisted`, `joined`, `active`, `pinned`. The maps are indexed by -`peerId`s, and the values are the corresponding participant objects. - - - -### meeting.self - -The `self` object can be used to manipulate audio and video settings, -and other configurations for the local participant. This exposes methods -to enable and disable media tracks, share the user's screen, etc. - - - -### meeting.meta - -The `room` object stores information about the current meeting, such -as chat messages, polls, room name, etc. - - - -### meeting.ai - -The `ai` object is used to interface with Dyte's AI features. -You can obtain the live meeting transcript and use other meeting AI -features such as summary, and agenda using this object. - - - -### meeting.plugins - -The `plugins` object stores information about the plugins available in -the current meeting. It exposes methods to activate and deactivate them. - - - -### meeting.chat - -The chat object stores the chat messages that were sent in the meeting. -This includes text messages, images, and files. - - - -### meeting.polls - -The polls object stores the polls that were initiated in the meeting. -It exposes methods to create and vote on polls. - - - -### meeting.remote - -The remote object stores the remote control requests for the meeting. -It exposes methods to request, accept and end the remote control. - - - -### meeting.connectedMeetings - -The connectedMeetings object stores the connected meetings states. -It exposes methods to create/read/update/delete methods for connected meetings. - - - -### ~~meeting.joinRoom()~~ - -**_Deprecated_** - -The `joinRoom()` method can be used to join the meeting. A `roomJoined` event -is emitted on `self` when the room is joined successfully. - -**Kind**: instance method of [DyteClient](#module_DyteClient) - - -### ~~meeting.leaveRoom()~~ - -**_Deprecated_** - -The `leaveRoom()` method can be used to leave a meeting. - -**Kind**: instance method of [DyteClient](#module_DyteClient) - - -### meeting.join() - -The `join()` method can be used to join the meeting. A `roomJoined` event -is emitted on `self` when the room is joined successfully. - -**Kind**: instance method of [DyteClient](#module_DyteClient) - - -### meeting.leave() - -The `leave()` method can be used to leave a meeting. - -**Kind**: instance method of [DyteClient](#module_DyteClient) - - -### meeting.init(options) - -The `init` method can be used to instantiate the DyteClient class. -This returns an instance of DyteClient, which can be used to perform -actions on the meeting. - -**Kind**: static method of [DyteClient](#module_DyteClient) - -| Param | Description | -| ----------------- | ----------------------------------------------------------------------------- | -| options | The options object. | -| options.roomName | The name of the room. (If you are using V2 Api's you don't need to send this) | -| options.authToken | The authorization token received using the API. | -| options.apiBase | The base URL of the API. | -| options.defaults | The default audio and video settings. | diff --git a/docs/ios-core/reference/DyteLivestream.md b/docs/ios-core/reference/DyteLivestream.md deleted file mode 100644 index 7f21110f26..0000000000 --- a/docs/ios-core/reference/DyteLivestream.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 11 -web_core_version: 1.20.0 ---- - - - - - -The DyteLivestream module represents the state of the current livestream, and allows -to start/stop live streams. - -- [DyteLivestream](#module_DyteLivestream) - - [.start()](#module_DyteLivestream+start) - - [.stop()](#module_DyteLivestream+stop) - - - -### meeting.livestream.start() - -Starts livestreaming the meeting. - -**Kind**: instance method of [DyteLivestream](#module_DyteLivestream) - - -### meeting.livestream.stop() - -Stops livestreaming the meeting. - -**Kind**: instance method of [DyteLivestream](#module_DyteLivestream) diff --git a/docs/ios-core/reference/DyteMediaPermission.md b/docs/ios-core/reference/DyteMediaPermission.md deleted file mode 100644 index a772523414..0000000000 --- a/docs/ios-core/reference/DyteMediaPermission.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -```swift -enum StageStatus { - case OFF_STAGE - case REQUESTED_TO_JOIN_STAGE - case ACCEPTED_TO_JOIN_STAGE - case REJECTED_TO_JOIN_STAGE - case ON_STAGE -} -``` - -The DyteStageStatus represent an enum to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage. Below are the specificed status of the stage. - -### case OFF_STAGE - -when the participant is not on the Stage ie He/She is a viewer and can't produce media - -### case REQUESTED_TO_JOIN_STAGE - -When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` - -### case ACCEPTED_TO_JOIN_STAGE - -When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or -When request to join stage raised by the viewer is accepted by the host. - -### case REJECTED_TO_JOIN_STAGE - -When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` - -### case ON_STAGE - -when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeetingJoinedParticipant.md b/docs/ios-core/reference/DyteMeetingJoinedParticipant.md deleted file mode 100644 index 5e00bb3dfe..0000000000 --- a/docs/ios-core/reference/DyteMeetingJoinedParticipant.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -sidebar_position: 4 -web_core_version: 1.20.0 ---- - - - - -**Subclass** of [DyteMeetingParticipant](/ios-core-new/reference/DyteMeetingParticipant) -This class represents a single participant in the meeting. -The participant object can be accessed from one of the participant lists -present in the `meeting.participants` object. For example, - -```swift -let participant1 = meeting.participants.active[0]; -let participant2 = meeting.participants.joined[0]; -``` - -- [DyteParticipant](#module_DyteParticipant) - - [.isPinned](#module_DyteParticipant--this.+isPinned) - - [.pin()](#module_DyteParticipant--this.+pin) - - [.unpin()](#module_DyteParticipant--this.+unpin) - - [.kick()](#module_DyteParticipant--this.+kick) - - [.disableAudio()](#module_DyteParticipant--this.+disableAudio) - - [.disableVideo()](#module_DyteParticipant--this.+disableVideo) - - [.getVideoView()](#module_DyteParticipant--this.+getVideoView) - - [.getScreenShareVideoView()](#module_DyteParticipant--this.+getScreenShareVideoView) - - - -#### Check is pinned - -```swift -let isPinned: Bool -``` - -Returns true if the participant is pinned. - - - -#### Pinned participant - -```swift -func pin() -``` - -Returns `participant.id` if user has permission -to pin participants. - - - -#### Unpinned participant - -```swift -func unpin() -``` - -Returns `participant.id` if user has permission -to unpin participants. - - - -#### Kick participant - -```swift -func kick() -``` - -Kicks this participant from the meeting. -Requires the permission to kick a participant. - - - -#### Disable Audio - -```swift -func disableAudio() -``` - -Disables audio for this participant. -Requires the permission to disable participant audio. - - - -#### Disable Video - -```swift -func disableVideo() -``` - -Disables video for this participant. -Requires the permission to disable video for a participant. - - - -#### Get video view - -```swift -fun getVideoView(): VideoView? -``` - -Return a view which is used to render participant camera streams. - - - -#### Get ScreenShare video view - -```swift -fun getScreenShareVideoView(): VideoView -``` - -Return a view which is used to render participant screen streams. diff --git a/docs/ios-core/reference/DyteMeetingParticipant.md b/docs/ios-core/reference/DyteMeetingParticipant.md deleted file mode 100644 index e53d24c06b..0000000000 --- a/docs/ios-core/reference/DyteMeetingParticipant.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -sidebar_position: 4 -web_core_version: 1.20.0 ---- - - - - - -This class is a parent class of [DyteMeetingJoinedParticipant](/ios-core-new/reference/DyteMeetingJoinedParticipant). - -```swift -let participant1 = meeting.participants.active[0]; -let participant2 = meeting.participants.joined[0]; -``` - -open val id: String, -open val userId: String, -open val name: String, -open val picture: String?, -open val isHost: Boolean, -open val clientSpecificId: String?, -open val flags: ParticipantFlags, -open val presetName: String, - -- [DyteParticipant](#module_DyteParticipant) - - [.id](#module_DyteParticipant--this.+id) - - [.userId](#module_DyteParticipant--this.+userId) - - [.name](#module_DyteParticipant--this.+name) - - [.picture](#module_DyteParticipant--this.+picture) - - [.clientSpecificId](#module_DyteParticipant--this.+clientSpecificId) - - [.videoEnabled](#module_DyteParticipant--this.+videoEnabled) - - [.audioEnabled](#module_DyteParticipant--this.+audioEnabled) - - [.presetName](#module_DyteParticipant--this.+presetName) - - [.stageStatus](#module_DyteParticipant--this.+stageStatus) - -### self.id - -```swift -let id: String -``` - -The peer ID of the participant. -The participants are indexed by this ID in the participant class. - - - -### self.userId - -```swift -let userId: String -``` - -The user ID of the participant. - - - -### self.name - -```swift -let name: String -``` - -The name of the participant. - - - -### self.picture - -```swift -let picture: String? -``` - -The picture of the participant and is optional. - - - -### self.clientSpecificId - -```swift -let clientSpecificId: String? -``` - -The clientSpecificId of the participant. Which is optional. - -### self.videoEnabled - -```swift -let videoEnabled: Bool -``` - -This is true if the participant's video is enabled. - - - -### self.audioEnabled - -```swift -let audioEnabled: Bool -``` - -This is true if the participant's audio is enabled. - - - -### self.presetName - -```swift -let presetName: String -``` - -The preset of the participant. - - - -### self.stageStatus - -```swift -let stageStatus: StageStatus? -``` - -Denotes the participant's current stage status. For different states please check [StageStatus](/ios-core-new/reference/StageStatus) diff --git a/docs/ios-core/reference/DyteMeetingType copy 2.md b/docs/ios-core/reference/DyteMeetingType copy 2.md deleted file mode 100644 index a772523414..0000000000 --- a/docs/ios-core/reference/DyteMeetingType copy 2.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -```swift -enum StageStatus { - case OFF_STAGE - case REQUESTED_TO_JOIN_STAGE - case ACCEPTED_TO_JOIN_STAGE - case REJECTED_TO_JOIN_STAGE - case ON_STAGE -} -``` - -The DyteStageStatus represent an enum to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage. Below are the specificed status of the stage. - -### case OFF_STAGE - -when the participant is not on the Stage ie He/She is a viewer and can't produce media - -### case REQUESTED_TO_JOIN_STAGE - -When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` - -### case ACCEPTED_TO_JOIN_STAGE - -When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or -When request to join stage raised by the viewer is accepted by the host. - -### case REJECTED_TO_JOIN_STAGE - -When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` - -### case ON_STAGE - -when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeetingType.md b/docs/ios-core/reference/DyteMeetingType.md deleted file mode 100644 index a772523414..0000000000 --- a/docs/ios-core/reference/DyteMeetingType.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -```swift -enum StageStatus { - case OFF_STAGE - case REQUESTED_TO_JOIN_STAGE - case ACCEPTED_TO_JOIN_STAGE - case REJECTED_TO_JOIN_STAGE - case ON_STAGE -} -``` - -The DyteStageStatus represent an enum to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage. Below are the specificed status of the stage. - -### case OFF_STAGE - -when the participant is not on the Stage ie He/She is a viewer and can't produce media - -### case REQUESTED_TO_JOIN_STAGE - -When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` - -### case ACCEPTED_TO_JOIN_STAGE - -When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or -When request to join stage raised by the viewer is accepted by the host. - -### case REJECTED_TO_JOIN_STAGE - -When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` - -### case ON_STAGE - -when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/DyteMeta.md b/docs/ios-core/reference/DyteMeta.md deleted file mode 100644 index 0e1693c290..0000000000 --- a/docs/ios-core/reference/DyteMeta.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -sidebar_position: 6 -web_core_version: 1.20.0 ---- - - - - - -This consists of the metadata of the meeting, such as the room name and the title. - -- [DyteMeta](#module_DyteMeta) - - [.selfActiveTab](#module_DyteMeta+selfActiveTab) - - [.broadcastTabChanges](#module_DyteMeta+broadcastTabChanges) - - [.viewType](#module_DyteMeta+viewType) - - [.meetingStartedTimestamp](#module_DyteMeta+meetingStartedTimestamp) - - [.meetingTitle](#module_DyteMeta+meetingTitle) - - ~~[.joined](#module_DyteMeta+joined)~~ - - [.roomName](#module_DyteMeta+roomName) - - [.mediaConnected](#module_DyteMeta+mediaConnected) - - [.socketConnected](#module_DyteMeta+socketConnected) - - [.setBroadcastTabChanges(broadcastTabChanges)](#module_DyteMeta+setBroadcastTabChanges) - - [.setSelfActiveTab(spotlightTab)](#module_DyteMeta+setSelfActiveTab) - - - -### meeting.meta.selfActiveTab - -Represents the current active tab - - - -### meeting.meta.broadcastTabChanges - -Represents whether current user is spotlighted - - - -### meeting.meta.viewType - -The `viewType` tells the type of the meeting -possible values are WEBINAR, GROUP_CALL - - - -### meeting.meta.meetingStartedTimestamp - -The timestamp of the time when the meeting started. - - - -### meeting.meta.meetingTitle - -The title of the meeting. - - - -### ~~meeting.meta.joined~~ - -**_Deprecated_** - - - -### meeting.meta.roomName - -The room name of the meeting. - - - -### meeting.meta.mediaConnected - -Has room-node connection been made. - - - -### meeting.meta.socketConnected - -This is set to true if user has successfully connected to the socket. - - - -### meeting.meta.setBroadcastTabChanges(broadcastTabChanges) - -Sets current user as broadcasting tab changes - -**Kind**: instance method of [DyteMeta](#module_DyteMeta) - -| Param | -| ------------------- | -| broadcastTabChanges | - - - -### meeting.meta.setSelfActiveTab(spotlightTab) - -Sets current active tab for user - -**Kind**: instance method of [DyteMeta](#module_DyteMeta) - -| Param | -| ------------ | -| spotlightTab | diff --git a/docs/ios-core/reference/DyteParticipant.md b/docs/ios-core/reference/DyteParticipant.md deleted file mode 100644 index e2e12b6453..0000000000 --- a/docs/ios-core/reference/DyteParticipant.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -sidebar_position: 4 -web_core_version: 1.20.0 ---- - - - - - -This is a map of participants, indexed by `participant.id` (a participant's peer ID). -This map emits an event whenever a participant present in the map emits an event. -For example, when a participant is added to this map, a `participantJoined` event is -emitted from the map. When a participant object emits an event `videoUpdate`, the map -re-emits that event (provided the participant is present in the map). diff --git a/docs/ios-core/reference/DytePermissionsPreset.md b/docs/ios-core/reference/DytePermissionsPreset.md deleted file mode 100644 index d27fcff3db..0000000000 --- a/docs/ios-core/reference/DytePermissionsPreset.md +++ /dev/null @@ -1,291 +0,0 @@ ---- -sidebar_position: 5 -web_core_version: 1.20.0 ---- - - - - - -The DytePermissionsPreset class represents the meeting permissions for the current participant - -- [DytePermissionsPreset](#module_DytePermissionsPreset) - - [.stageEnabled](#module_DytePermissionsPreset+stageEnabled) - - [.stageAccess](#module_DytePermissionsPreset+stageAccess) - - [.acceptWaitingRequests](#module_DytePermissionsPreset+acceptWaitingRequests) - - [.requestProduceVideo](#module_DytePermissionsPreset+requestProduceVideo) - - [.requestProduceAudio](#module_DytePermissionsPreset+requestProduceAudio) - - [.requestProduceScreenshare](#module_DytePermissionsPreset+requestProduceScreenshare) - - [.canAllowParticipantAudio](#module_DytePermissionsPreset+canAllowParticipantAudio) - - [.canAllowParticipantScreensharing](#module_DytePermissionsPreset+canAllowParticipantScreensharing) - - [.canAllowParticipantVideo](#module_DytePermissionsPreset+canAllowParticipantVideo) - - [.canDisableParticipantAudio](#module_DytePermissionsPreset+canDisableParticipantAudio) - - [.canDisableParticipantVideo](#module_DytePermissionsPreset+canDisableParticipantVideo) - - [.kickParticipant](#module_DytePermissionsPreset+kickParticipant) - - [.pinParticipant](#module_DytePermissionsPreset+pinParticipant) - - [.canRecord](#module_DytePermissionsPreset+canRecord) - - ~~[.waitingRoomType](#module_DytePermissionsPreset+waitingRoomType)~~ - - [.waitingRoomBehaviour](#module_DytePermissionsPreset+waitingRoomBehaviour) - - [.plugins](#module_DytePermissionsPreset+plugins) - - [.polls](#module_DytePermissionsPreset+polls) - - ~~[.produceVideo](#module_DytePermissionsPreset+produceVideo)~~ - - ~~[.requestProduce](#module_DytePermissionsPreset+requestProduce)~~ - - [.canProduceVideo](#module_DytePermissionsPreset+canProduceVideo) - - ~~[.produceScreenshare](#module_DytePermissionsPreset+produceScreenshare)~~ - - [.canProduceScreenshare](#module_DytePermissionsPreset+canProduceScreenshare) - - ~~[.produceAudio](#module_DytePermissionsPreset+produceAudio)~~ - - [.canProduceAudio](#module_DytePermissionsPreset+canProduceAudio) - - [.chatPublic](#module_DytePermissionsPreset+chatPublic) - - [.chatPrivate](#module_DytePermissionsPreset+chatPrivate) - - [.hiddenParticipant](#module_DytePermissionsPreset+hiddenParticipant) - - [.showParticipantList](#module_DytePermissionsPreset+showParticipantList) - - ~~[.canChangeParticipantRole](#module_DytePermissionsPreset+canChangeParticipantRole)~~ - - [.canChangeParticipantPermissions](#module_DytePermissionsPreset+canChangeParticipantPermissions) - - ~~[.canChangeTheme](#module_DytePermissionsPreset+canChangeTheme)~~ - - ~~[.canPresent](#module_DytePermissionsPreset+canPresent)~~ - - ~~[.maxScreenShareCount](#module_DytePermissionsPreset+maxScreenShareCount)~~ - - [.canLivestream](#module_DytePermissionsPreset+canLivestream) - - - -### meeting.self.permissions.stageEnabled - -The `stageEnabled` property returns a boolean value. -If `true`, stage management is available for the participant. - - - -### meeting.self.permissions.stageAccess - -The `stageAccess` property dictactes how a user interacts with the stage. -There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST`; - - - -### meeting.self.permissions.acceptWaitingRequests - -The `acceptWaitingRequests` returns boolean value. -If `true`, participant can accept the request of waiting participant. - - - -### meeting.self.permissions.requestProduceVideo - -The `requestProduceVideo` returns boolean value. -If `true`, participant can send request to participants -about producing video. - - - -### meeting.self.permissions.requestProduceAudio - -The `requestProduceAudio` returns boolean value. -If `true`, participant can send request to participants -about producing audio. - - - -### meeting.self.permissions.requestProduceScreenshare - -The `requestProduceScreenshare` returns boolean value. -If `true`, participant can send request to participants -about sharing screen. - - - -### meeting.self.permissions.canAllowParticipantAudio - -The `canAllowParticipantAudio` returns boolean value. -If `true`, participant can enable other participants` audio. - - - -### meeting.self.permissions.canAllowParticipantScreensharing - -The `canAllowParticipantScreensharing` returns boolean value. -If `true`, participant can enable other participants` screen share. - - - -### meeting.self.permissions.canAllowParticipantVideo - -The `canAllowParticipantVideo` returns boolean value. -If `true`, participant can enable other participants` video. - - - -### meeting.self.permissions.canDisableParticipantAudio - -If `true`, a participant can disable other participants` audio. - - - -### meeting.self.permissions.canDisableParticipantVideo - -If `true`, a participant can disable other participants` video. - - - -### meeting.self.permissions.kickParticipant - -The `kickParticipant` returns boolean value. -If `true`, participant can remove other participants from the meeting. - - - -### meeting.self.permissions.pinParticipant - -The `pinParticipant` returns boolean value. -If `true`, participant can pin a participant in the meeting. - - - -### meeting.self.permissions.canRecord - -The `canRecord` returns boolean value. -If `true`, participant can record the meeting. - - - -### ~~meeting.self.permissions.waitingRoomType~~ - -**_Deprecated_** - - - -### meeting.self.permissions.waitingRoomBehaviour - -The `waitingRoomType` returns string value. -type of waiting room behavior -possible values are `SKIP`, `ON_PRIVILEGED_USER_ENTRY`, `SKIP_ON_ACCEPT` - - - -### meeting.self.permissions.plugins - -The `plugins` tells if the participant can act on plugins -there are 2 permissions with boolean values, `canStart` and `canClose`. - - - -### meeting.self.permissions.polls - -The `polls` tells if the participant can use polls. -There are 3 permissions with boolean values, `canCreate`, `canVote`, `canViewResults` - - - -### ~~meeting.self.permissions.produceVideo~~ - -**_Deprecated_** - - - -### ~~meeting.self.permissions.requestProduce~~ - -**_Deprecated_** - - - -### meeting.self.permissions.canProduceVideo - -The `canProduceVideo` shows permissions for enabling video. -There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` - - - -### ~~meeting.self.permissions.produceScreenshare~~ - -**_Deprecated_** - - - -### meeting.self.permissions.canProduceScreenshare - -The `canProduceScreenshare` shows permissions for sharing screen. -There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` - - - -### ~~meeting.self.permissions.produceAudio~~ - -**_Deprecated_** - - - -### meeting.self.permissions.canProduceAudio - -The `canProduceAudio` shows permissions for enabling audio. -There possible values are `ALLOWED`, `NOT_ALLOWED`, `CAN_REQUEST` - - - -### meeting.self.permissions.chatPublic - -The `chatPublic` shows permissions for public chat -there are 4 permissions -`canSend` - if true, the participant can send chat -`text` - if true, the participant can send text -`files` - if true, the participant can send files - - - -### meeting.self.permissions.chatPrivate - -The `chatPrivate` shows permissions for public chat -there are 4 permissions -`canSend` - if true, the participant can send private chat -`text` - if true, the participant can send text as private chat -`files` - if true, the participant can send files as private chat -`canReceive` - (optional) if true, the participant can receive private chat - - - -### meeting.self.permissions.hiddenParticipant - -The `hiddenParticipant` returns boolean value. -If `true`, participant is hidden. - - - -### meeting.self.permissions.showParticipantList - -The `showParticipantList` returns boolean value. -If `true`, participant list can be shown to the participant. - - - -### ~~meeting.self.permissions.canChangeParticipantRole~~ - -**_Deprecated_** - - - -### meeting.self.permissions.canChangeParticipantPermissions - -The `canChangeParticipantPermissions` returns boolean value. -If `true`, allow changing the participants' permissions. - - - -### ~~meeting.self.permissions.canChangeTheme~~ - -**_Deprecated_** - - - -### ~~meeting.self.permissions.canPresent~~ - -**_Deprecated_** - - - -### ~~meeting.self.permissions.maxScreenShareCount~~ - -**_Deprecated_** - - - -### meeting.self.permissions.canLivestream - -Livestream diff --git a/docs/ios-core/reference/DytePlugin.md b/docs/ios-core/reference/DytePlugin.md deleted file mode 100644 index 0383516154..0000000000 --- a/docs/ios-core/reference/DytePlugin.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -sidebar_position: 14 -web_core_version: 1.20.0 ---- - - - - - -The DytePlugin class represents a single plugin in the meeting. -A plugin can be obtained from one of the plugin arrays in `meeting.plugins`. -For example, - -```swift -let plugin1 = meeting.plugins.active[0]; -let plugin2 = meeting.plugins.all[0]]; -``` - -- [DytePlugin](#module_DytePlugin) - - [.name](#module_DytePlugin+getName) - - [.picture](#module_DytePlugin+getthumbnail) - - [.isActive](#module_DytePlugin+isActive) - - [.getPluginView()](#module_DytePlugin+getPluginView) - - [.activate()](#module_DytePlugin+activate) - - [.deactivate()](#module_DytePlugin+deactivate) - - [.sendData(eventName: String, data: Any?)()](#module_DytePlugin+sendData) - - - -### get Plugin Name - -```swift -let name: String -``` - -This property tells the name of plugin. - - -### get plugin thumbnail - -```swift -let picture: String -``` - -This property stores the string url of the thumbnail of the plugin. - - - -### check plugin is active or not - -```swift -let isActive: Bool -``` - -This property tells that this plugin is active or not. All active plugins would be part of active array of [DytePlugins](/ios-core-new/reference/DytePlugins). - - - -### get plugin view - -```swift -func getPluginView(): WKWebView -``` - -Returns instance of WKWebView. Which is used to show plugin current state and behavior - - - -### activate - -```swift - func activate() -``` - -Activate this plugin for all participants. - - - -### deactivate - -```swift - func deactivate() -``` - -Deactivate this plugin for all participants. - - - -### plugin.sendData(payload) - -```siwft -func sendData(eventName: String, data: Any?) -``` - -This method is used to send arbitrary data to the plugin corresponding to eventName. diff --git a/docs/ios-core/reference/DytePlugins.md b/docs/ios-core/reference/DytePlugins.md deleted file mode 100644 index 75012bed89..0000000000 --- a/docs/ios-core/reference/DytePlugins.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 9 -web_core_version: 1.20.0 ---- - - - - - -The DytePlugins class consists of all the plugins in the meeting. It uses instances of [DytePlugin](/ios-core-new/reference/DytePlugin) class to represent plugins - -- `all`: Consists of all the plugins in the meeting. -- `active`: Consists of the plugins that are currently in use. - -* [DytePlugins](#module_DytePlugins) - - [.all](#module_DytePlugins+all) - - [.active](#module_DytePlugins+active) - - - -### Get all plugins - -```swift -let all: [DytePlugin] -``` - -All plugins of type [DytePlugin](/ios/components/dyte-active-tab-selector-view) accessible by the current user. - - - -### Get all active plugins - -```swift -let active: [DytePlugin] -``` - -All plugins of type [DytePlugin](/ios/components/dyte-active-tab-selector-view) that are currently enabled in the room. diff --git a/docs/ios-core/reference/DytePolls.md b/docs/ios-core/reference/DytePolls.md deleted file mode 100644 index cc9be6d172..0000000000 --- a/docs/ios-core/reference/DytePolls.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -sidebar_position: 8 -web_core_version: 1.20.0 ---- - - - - - -The DytePolls module consists of the polls that have been created in the meeting. - -- [DytePolls](#module_DytePolls) - - [.items](#module_DytePolls+items) - - [.roomJoined](#module_DytePolls+roomJoined) - - [.create(question, options, anonymous, hideVotes)](#module_DytePolls+create) - - [.vote(pollId, index)](#module_DytePolls+vote) - - - -### meeting.polls.items - -An array of poll items. - - - -### meeting.polls.roomJoined - -Returns true if the local participant has joined the meeting. - - - -### meeting.polls.create(question, options, anonymous, hideVotes) - -Creates a poll in the meeting. - -**Kind**: instance method of [DytePolls](#module_DytePolls) - -| Param | Default | Description | -| --------- | ------------------ | ------------------------------------------ | -| question | | The question that is to be voted for. | -| options | | The options of the poll. | -| anonymous | false | If true, the poll votes are anonymous. | -| hideVotes | false | If true, the votes on the poll are hidden. | - - - -### meeting.polls.vote(pollId, index) - -Casts a vote on an existing poll. - -**Kind**: instance method of [DytePolls](#module_DytePolls) - -| Param | Description | -| ------ | ------------------------------------------ | -| pollId | The ID of the poll that is to be voted on. | -| index | The index of the option. | diff --git a/docs/ios-core/reference/DyteRecording.md b/docs/ios-core/reference/DyteRecording.md deleted file mode 100644 index 1d658c0266..0000000000 --- a/docs/ios-core/reference/DyteRecording.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 17 -web_core_version: 1.20.0 ---- - - - - - -The DyteRecording module represents the state of the current recording, and allows -to start/stop recordings and check if there's a recording in progress. - -- [DyteRecording](#module_DyteRecording) - - [.recordingId](#module_DyteRecording+recordingId) - - [.start()](#module_DyteRecording+start) - - [.stop()](#module_DyteRecording+stop) - - [.getRecordingId()](#module_DyteRecording+getRecordingId) - - - -### meeting.recording.recordingId - - - -### meeting.recording.start() - -Starts recording the meeting. - -**Kind**: instance method of [DyteRecording](#module_DyteRecording) - - -### meeting.recording.stop() - -Stops recording the meeting assuming there -is a recording in progress. - -**Kind**: instance method of [DyteRecording](#module_DyteRecording) - - -### meeting.recording.getRecordingId() - -Refreshes current recording state. - -**Kind**: instance method of [DyteRecording](#module_DyteRecording) diff --git a/docs/ios-core/reference/DyteRemote.md b/docs/ios-core/reference/DyteRemote.md deleted file mode 100644 index 2e2b5f3ba9..0000000000 --- a/docs/ios-core/reference/DyteRemote.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -sidebar_position: 16 -web_core_version: 1.20.0 ---- - - - - - -This module provides the ability to control a remotely shared screen using mouse and keyboard. -Methods are available to request, accept and end control of shared screen. - -- [DyteRemote](#module_DyteRemote) - - [.requestControl(peerId)](#module_DyteRemote+requestControl) ⇒ - - [.acceptControl(requestId)](#module_DyteRemote+acceptControl) - - [.endControl()](#module_DyteRemote+endControl) - - - -### meeting.remote.requestControl(peerId) ⇒ - -Sends a request to a peer for remote control. - -**Kind**: instance method of [DyteRemote](#module_DyteRemote) -**Returns**: request identifier for the control request. - -| Param | Description | -| ------ | --------------------------------------------------------- | -| peerId | The peer that needs to receive the remote control request | - - - -### meeting.remote.acceptControl(requestId) - -Accepts a remote control request from a peer. - -**Kind**: instance method of [DyteRemote](#module_DyteRemote) - -| Param | Description | -| --------- | ------------------------------------------------ | -| requestId | The request identifier that needs to be accepted | - - - -### meeting.remote.endControl() - -End an active remote control. - -**Kind**: instance method of [DyteRemote](#module_DyteRemote) diff --git a/docs/ios-core/reference/DyteRoomParticipants.md b/docs/ios-core/reference/DyteRoomParticipants.md deleted file mode 100644 index 463a85e0ed..0000000000 --- a/docs/ios-core/reference/DyteRoomParticipants.md +++ /dev/null @@ -1,673 +0,0 @@ ---- -sidebar_position: 3 -web_core_version: 1.20.0 ---- - - - - - -This class represents all the participants in the meeting (except the local user). -It consists of 4 arrays: - -- `joined`: An of all participants that have joined the meeting. -- `waitlisted`: An array of all participants that have been added to the waitlist. -- `active`: An array of active participants who should be displayed in the meeting grid. -- `screenShares`: An array of participants. - -```swift -let maxNumberOnScreen: Int - -``` - -```swift -let pageCount: Int32 - -``` - -### check whether previous page can be loaded - -```swift -let canGoPreviousPage: Bool -``` - -### check whether next page can be loaded - -```swift -let canGoNextPage: Bool - -``` - -### get current page number - -```swift -let currentPageNumber: Int - -``` - -### get pinned participant - -```swift -let pinned: DyteJoinedMeetingParticipant? - -``` - -### load page number - -```swift -func setPage(pageNumber: Int) - -``` - -### kick out all participants - -```swift -func kickAll() - -``` - -### mute videos for all participants - -```swift -func disableAllVideo() -``` - -### mute audio for all participants - -```swift -func disableAllAudio() -``` - -### enable participant video view cache - -```swift -func enableCache() -``` - -### disable participant video view cache - -```swift -func disableCache() - -``` - -### accept all waiting requests - -```swift -func acceptAllWaitingRequests() - -``` - -### send message to all participants - -```swift -func broadcastMessage(type: String, payload: [String : Any]) - -``` - - - -### module.exports ⏏ - -**Kind**: Exported class - - -#### new module.exports(self) - -This constructs a new DyteParticipant object and maintains -the maps of active/joined/waitlisted/pinned/selectedPeers maps. - -| Param | Description | -| ----- | ----------- | -| self | : DyteSelf | - - - -#### module.exports.waitlisted - -Returns a list of participants waiting to join the meeting. - - - -#### module.exports.joined - -Returns a list of all participants in the meeting. - - - -#### module.exports.active - -Returns a list of participants whose streams are currently consumed. - - - -#### module.exports.pinned - -Returns a list of participants who have been pinned. - - - -#### module.exports.all - -Returns all added participants irrespective of whether they are currently -in the meeting or not - - - -#### module.exports.pip - -Return the controls for Picture-in-Picture - - - -#### module.exports.roomJoined - -Returns true if the local participant has joined the meeting. - - - -#### module.exports.viewMode - -Indicates whether the meeting is in 'ACTIVE_GRID' mode or 'PAGINATED' mode. - -In 'ACTIVE_GRID' mode, participants are populated in the participants.active map -dynamically. The participants present in the map will keep changing when other -participants unmute their audio or turn on their videos. - -In 'PAGINATED' mode, participants are populated in the participants.active map -just once, and the participants in the map will only change if the page number is -changed by the user using setPage(page). - - - -#### module.exports.currentPage - -This indicates the current page that has been set by the user in PAGINATED mode. -If the meeting is in ACTIVE_GRID mode, this value will be 0. - - - -#### module.exports.lastActiveSpeaker - -This stores the `participantId` of the last participant who spoke in the meeting. - - - -#### module.exports.selectedPeers - -Keeps a list of all participants who have been present in the selected peers list. - - - -#### module.exports.count - -Returns the number of participants who are joined in the meeting. - - - -#### module.exports.maxActiveParticipantsCount - -Returns the maximum number of participants that can be present in -the active map. - - - -#### module.exports.pageCount - -Returns the number of pages that are available in the meeting in PAGINATED mode. -If the meeting is in ACTIVE_GRID mode, this value will be 0. - - - -#### module.exports.acceptWaitingRoomRequest(id) - -Accepts requests from waitlisted participants if user -has appropriate permissions. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | ----------------------------------------------- | -| id | peerId or userId of the waitlisted participant. | - - - -#### module.exports.acceptAllWaitingRoomRequest() - -We need a new event for socket service events -since if we send them all together, sequence of events -can be unreliable - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.rejectWaitingRoomRequest(id) - -Rejects requests from waitlisted participants if user -has appropriate permissions. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | -------------------------------------------- | -| id | participantId of the waitlisted participant. | - - - -#### module.exports.setViewMode(viewMode) - -Sets the view mode of the meeting to either ACTIVE_GRID or PAGINATED. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| -------- | ---------------------------------------------------- | -| viewMode | The mode in which the active map should be populated | - - - -#### module.exports.setPage(page) - -Populates the active map with participants present in the page number -indicated by the parameter `page` in PAGINATED mode. -Does not do anything in ACTIVE_GRID mode. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | -------------------------- | -| page | The page number to be set. | - - - -#### module.exports.disableAllAudio(allowUnmute) - -Disables audio for all participants in the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----------- | -------------------------------------------------- | -| allowUnmute | Allow participants to unmute after they are muted. | - - - -#### module.exports.disableAllVideo() - -Disables video for all participants in the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### ~~module.exports.disableAudio(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------ | -| participantId | ID of participant to be muted. | - - - -#### ~~module.exports.disableVideo(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------ | -| participantId | ID of participant to be muted. | - - - -#### ~~module.exports.kick(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------- | -| participantId | ID of participant to be kicked. | - - - -#### module.exports.kickAll() - -Kicks all participants from the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.broadcastMessage() - -Broadcasts the message to all participants including `self`. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### ~~module.exports.acceptAllRequestToJoinStageRequests()~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.getAllJoinedPeers() - -Returns all peers currently present in the room -If you are in a group call or webinar use `meeting.participants.joined` -instead - -## **Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -sidebar_position: ((sidebar_position)) -web_core_version: ((web_core_version)) - ---- - - - - - -This module represents all the participants in the meeting (except the local user). -It consists of 4 maps: - -- `joined`: A map of all participants that have joined the meeting. -- `waitlisted`: A map of all participants that have been added to the waitlist. -- `active`: A map of active participants who should be displayed in the meeting grid. -- `pinned`: A map of pinned participants. - -* [DyteParticipants](#module_DyteParticipants) - - [module.exports](#exp_module_DyteParticipants--module.exports) ⏏ - - [new module.exports(self)](#new_module_DyteParticipants--module.exports_new) - - [.waitlisted](#module_DyteParticipants--module.exports+waitlisted) - - [.joined](#module_DyteParticipants--module.exports+joined) - - [.active](#module_DyteParticipants--module.exports+active) - - [.pinned](#module_DyteParticipants--module.exports+pinned) - - [.all](#module_DyteParticipants--module.exports+all) - - [.pip](#module_DyteParticipants--module.exports+pip) - - [.roomJoined](#module_DyteParticipants--module.exports+roomJoined) - - [.viewMode](#module_DyteParticipants--module.exports+viewMode) - - [.currentPage](#module_DyteParticipants--module.exports+currentPage) - - [.lastActiveSpeaker](#module_DyteParticipants--module.exports+lastActiveSpeaker) - - [.selectedPeers](#module_DyteParticipants--module.exports+selectedPeers) - - [.count](#module_DyteParticipants--module.exports+count) - - [.maxActiveParticipantsCount](#module_DyteParticipants--module.exports+maxActiveParticipantsCount) - - [.pageCount](#module_DyteParticipants--module.exports+pageCount) - - [.acceptWaitingRoomRequest(id)](#module_DyteParticipants--module.exports+acceptWaitingRoomRequest) - - [.acceptAllWaitingRoomRequest()](#module_DyteParticipants--module.exports+acceptAllWaitingRoomRequest) - - [.rejectWaitingRoomRequest(id)](#module_DyteParticipants--module.exports+rejectWaitingRoomRequest) - - [.setViewMode(viewMode)](#module_DyteParticipants--module.exports+setViewMode) - - [.setPage(page)](#module_DyteParticipants--module.exports+setPage) - - [.disableAllAudio(allowUnmute)](#module_DyteParticipants--module.exports+disableAllAudio) - - [.disableAllVideo()](#module_DyteParticipants--module.exports+disableAllVideo) - - ~~[.disableAudio(participantId)](#module_DyteParticipants--module.exports+disableAudio)~~ - - ~~[.disableVideo(participantId)](#module_DyteParticipants--module.exports+disableVideo)~~ - - ~~[.kick(participantId)](#module_DyteParticipants--module.exports+kick)~~ - - [.kickAll()](#module_DyteParticipants--module.exports+kickAll) - - [.broadcastMessage()](#module_DyteParticipants--module.exports+broadcastMessage) - - ~~[.acceptAllRequestToJoinStageRequests()](#module_DyteParticipants--module.exports+acceptAllRequestToJoinStageRequests)~~ - - [.getAllJoinedPeers()](#module_DyteParticipants--module.exports+getAllJoinedPeers) - - - -### module.exports ⏏ - -**Kind**: Exported class - - -#### new module.exports(self) - -This constructs a new DyteParticipant object and maintains -the maps of active/joined/waitlisted/pinned/selectedPeers maps. - -| Param | Description | -| ----- | ----------- | -| self | : DyteSelf | - - - -#### module.exports.waitlisted - -Returns a list of participants waiting to join the meeting. - - - -#### module.exports.joined - -Returns a list of all participants in the meeting. - - - -#### module.exports.active - -Returns a list of participants whose streams are currently consumed. - - - -#### module.exports.pinned - -Returns a list of participants who have been pinned. - - - -#### module.exports.all - -Returns all added participants irrespective of whether they are currently -in the meeting or not - - - -#### module.exports.pip - -Return the controls for Picture-in-Picture - - - -#### module.exports.roomJoined - -Returns true if the local participant has joined the meeting. - - - -#### module.exports.viewMode - -Indicates whether the meeting is in 'ACTIVE_GRID' mode or 'PAGINATED' mode. - -In 'ACTIVE_GRID' mode, participants are populated in the participants.active map -dynamically. The participants present in the map will keep changing when other -participants unmute their audio or turn on their videos. - -In 'PAGINATED' mode, participants are populated in the participants.active map -just once, and the participants in the map will only change if the page number is -changed by the user using setPage(page). - - - -#### module.exports.currentPage - -This indicates the current page that has been set by the user in PAGINATED mode. -If the meeting is in ACTIVE_GRID mode, this value will be 0. - - - -#### module.exports.lastActiveSpeaker - -This stores the `participantId` of the last participant who spoke in the meeting. - - - -#### module.exports.selectedPeers - -Keeps a list of all participants who have been present in the selected peers list. - - - -#### module.exports.count - -Returns the number of participants who are joined in the meeting. - - - -#### module.exports.maxActiveParticipantsCount - -Returns the maximum number of participants that can be present in -the active map. - - - -#### module.exports.pageCount - -Returns the number of pages that are available in the meeting in PAGINATED mode. -If the meeting is in ACTIVE_GRID mode, this value will be 0. - - - -#### module.exports.acceptWaitingRoomRequest(id) - -Accepts requests from waitlisted participants if user -has appropriate permissions. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | ----------------------------------------------- | -| id | peerId or userId of the waitlisted participant. | - - - -#### module.exports.acceptAllWaitingRoomRequest() - -We need a new event for socket service events -since if we send them all together, sequence of events -can be unreliable - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.rejectWaitingRoomRequest(id) - -Rejects requests from waitlisted participants if user -has appropriate permissions. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | -------------------------------------------- | -| id | participantId of the waitlisted participant. | - - - -#### module.exports.setViewMode(viewMode) - -Sets the view mode of the meeting to either ACTIVE_GRID or PAGINATED. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| -------- | ---------------------------------------------------- | -| viewMode | The mode in which the active map should be populated | - - - -#### module.exports.setPage(page) - -Populates the active map with participants present in the page number -indicated by the parameter `page` in PAGINATED mode. -Does not do anything in ACTIVE_GRID mode. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----- | -------------------------- | -| page | The page number to be set. | - - - -#### module.exports.disableAllAudio(allowUnmute) - -Disables audio for all participants in the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ----------- | -------------------------------------------------- | -| allowUnmute | Allow participants to unmute after they are muted. | - - - -#### module.exports.disableAllVideo() - -Disables video for all participants in the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### ~~module.exports.disableAudio(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------ | -| participantId | ID of participant to be muted. | - - - -#### ~~module.exports.disableVideo(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------ | -| participantId | ID of participant to be muted. | - - - -#### ~~module.exports.kick(participantId)~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - -| Param | Description | -| ------------- | ------------------------------- | -| participantId | ID of participant to be kicked. | - - - -#### module.exports.kickAll() - -Kicks all participants from the meeting. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.broadcastMessage() - -Broadcasts the message to all participants including `self`. - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### ~~module.exports.acceptAllRequestToJoinStageRequests()~~ - -**_Deprecated_** - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) - - -#### module.exports.getAllJoinedPeers() - -Returns all peers currently present in the room -If you are in a group call or webinar use `meeting.participants.joined` -instead - -**Kind**: instance method of [module.exports](#exp_module_DyteParticipants--module.exports) diff --git a/docs/ios-core/reference/DyteSelf.md b/docs/ios-core/reference/DyteSelf.md deleted file mode 100644 index de0b2fdfad..0000000000 --- a/docs/ios-core/reference/DyteSelf.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -sidebar_position: 2 -web_core_version: 1.20.0 ---- - - - - - -The DyteSelf module represents the current user, and allows to modify the state -of the user in the meeting. The audio and video streams of the user can be retrieved from -this module. - -- [DyteSelf](#module_DyteSelf) - - [.roomState](#module_DyteSelf+roomState) - - [.permissions](#module_DyteSelf+permissions) - - ~~[.suggestedTheme](#module_DyteSelf+suggestedTheme)~~ - - [.config](#module_DyteSelf+config) - - [.roomJoined](#module_DyteSelf+roomJoined) - - [.isPinned](#module_DyteSelf+isPinned) - - ~~[.webinarStageStatus](#module_DyteSelf+webinarStageStatus)~~ - - [.setName(name)](#module_DyteSelf+setName) - - [.setupTracks(options)](#module_DyteSelf+setupTracks) - - [.enableAudio()](#module_DyteSelf+enableAudio) - - [.enableVideo()](#module_DyteSelf+enableVideo) - - [.updateVideoConstraints()](#module_DyteSelf+updateVideoConstraints) - - [.enableScreenShare()](#module_DyteSelf+enableScreenShare) - - [.updateScreenshareConstraints()](#module_DyteSelf+updateScreenshareConstraints) - - [.disableAudio()](#module_DyteSelf+disableAudio) - - [.disableVideo()](#module_DyteSelf+disableVideo) - - [.disableScreenShare()](#module_DyteSelf+disableScreenShare) - - [.getAllDevices()](#module_DyteSelf+getAllDevices) - - [.setIsPinned()](#module_DyteSelf+setIsPinned) - - [.pin()](#module_DyteSelf+pin) - - [.unpin()](#module_DyteSelf+unpin) - - [.setDevice(device)](#module_DyteSelf+setDevice) - - ~~[.requestToJoinStage()](#module_DyteSelf+requestToJoinStage)~~ - - ~~[.withdrawRequestToJoinStage()](#module_DyteSelf+withdrawRequestToJoinStage)~~ - - ~~[.leaveStage()](#module_DyteSelf+leaveStage)~~ - - ~~[.joinStage()](#module_DyteSelf+joinStage)~~ - - ~~[.setWebinarStageStatus()](#module_DyteSelf+setWebinarStageStatus)~~ - - ~~[.disablePreview()](#module_DyteSelf+disablePreview)~~ - - - -### meeting.self.roomState - -Returns the current state of room -init - Inital State -joined - User is in the meeting -waitlisted - User is in the waitlist state -rejected - User's was in the waiting room, but the entry was rejected -kicked - A priveleged user removed the user from the meeting -left - User left the meeting -ended - The meeting was ended - - - -### meeting.self.permissions - -Returns the current permission given to the user for the meeting. - - - -### ~~meeting.self.suggestedTheme~~ - -**_Deprecated_** - - - -### meeting.self.config - -Returns configuration for the meeting. - - - -### meeting.self.roomJoined - -Returns true if the local participant has joined the meeting. - - - -### meeting.self.isPinned - -Returns true if the current user is pinned. - - - -### ~~meeting.self.webinarStageStatus~~ - -**_Deprecated_** - - - -### meeting.self.setName(name) - -The name of the user can be set by calling this method. -This will get reflected to other participants ONLY if -this method is called before the room is joined. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - -| Param | Description | -| ----- | ----------------- | -| name | Name of the user. | - - - -### meeting.self.setupTracks(options) - -Sets up the local media tracks. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - -| Param | Description | -| ------------- | ------------------------------------- | -| options | The audio and video options. | -| options.video | If true, the video stream is fetched. | -| options.audio | If true, the audio stream is fetched. | - - - -### meeting.self.enableAudio() - -This method is used to unmute the local participant's audio. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.enableVideo() - -This method is used to start streaming the local participant's video -to the meeting. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.updateVideoConstraints() - -This method is used to apply constraints to the current video -stream. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.enableScreenShare() - -This method is used to start sharing the local participant's screen -to the meeting. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.updateScreenshareConstraints() - -This method is used to apply constraints to the current screenshare -stream. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.disableAudio() - -This method is used to mute the local participant's audio. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.disableVideo() - -This participant is used to disable the local participant's video. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.disableScreenShare() - -This method is used to stop sharing the local participant's screen. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.getAllDevices() - -Returns all media devices accessible by the local participant. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.setIsPinned() - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.pin() - -Returns `self.id` if user has permission -to pin participants. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.unpin() - -Returns `self.id` if user has permission -to unpin participants. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### meeting.self.setDevice(device) - -Change the current media device that is being used by the local participant. - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - -| Param | Description | -| ------ | ------------------------------------------------------------------------------------------------ | -| device | The device that is to be used. A device of the same `kind` will be replaced. the primary stream. | - - - -### ~~meeting.self.requestToJoinStage()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### ~~meeting.self.withdrawRequestToJoinStage()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### ~~meeting.self.leaveStage()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### ~~meeting.self.joinStage()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### ~~meeting.self.setWebinarStageStatus()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) - - -### ~~meeting.self.disablePreview()~~ - -**_Deprecated_** - -**Kind**: instance method of [DyteSelf](#module_DyteSelf) diff --git a/docs/ios-core/reference/DyteSelfMedia.md b/docs/ios-core/reference/DyteSelfMedia.md deleted file mode 100644 index 4e452529cb..0000000000 --- a/docs/ios-core/reference/DyteSelfMedia.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 13 -web_core_version: 1.20.0 ---- - - - - - -This module allows users to initialize media before initializing the root DyteClient.init object - -- [DyteSelfMedia](#module_DyteSelfMedia) - - [.audioTrack](#module_DyteSelfMedia+audioTrack) - - [.rawAudioTrack](#module_DyteSelfMedia+rawAudioTrack) - - [.mediaPermissions](#module_DyteSelfMedia+mediaPermissions) - - [.videoTrack](#module_DyteSelfMedia+videoTrack) - - [.rawVideoTrack](#module_DyteSelfMedia+rawVideoTrack) - - [.screenShareTracks](#module_DyteSelfMedia+screenShareTracks) - - [.audioEnabled](#module_DyteSelfMedia+audioEnabled) - - [.videoEnabled](#module_DyteSelfMedia+videoEnabled) - - [.screenShareEnabled](#module_DyteSelfMedia+screenShareEnabled) - - [.addAudioMiddleware()](#module_DyteSelfMedia+addAudioMiddleware) - - [.removeAudioMiddleware()](#module_DyteSelfMedia+removeAudioMiddleware) - - [.addVideoMiddleware()](#module_DyteSelfMedia+addVideoMiddleware) - - [.removeVideoMiddleware()](#module_DyteSelfMedia+removeVideoMiddleware) - - [.getCurrentDevices()](#module_DyteSelfMedia+getCurrentDevices) - - [.getAudioDevices()](#module_DyteSelfMedia+getAudioDevices) - - [.getVideoDevices()](#module_DyteSelfMedia+getVideoDevices) - - [.getSpeakerDevices()](#module_DyteSelfMedia+getSpeakerDevices) - - [.getDeviceById(deviceId, kind)](#module_DyteSelfMedia+getDeviceById) - - [.setDevice(device)](#module_DyteSelfMedia+setDevice) - - - -### dyteSelfMedia.audioTrack - -Returns the `audioTrack`. - - - -### dyteSelfMedia.rawAudioTrack - -Returns the `rawAudioTrack` having no middleware executed on it. - - - -### dyteSelfMedia.mediaPermissions - -Returns the current audio and video permissions given by the user. -'ACCEPTED' if the user has given permission to use the media. -'CANCELED' if the user has canceled the screenshare. -'DENIED' if the user has denied permission to use the media. -'SYS_DENIED' if the user's system has denied permission to use the media. -'UNAVAILABLE' if the media is not available (or being used by a different application). - - - -### dyteSelfMedia.videoTrack - -Returns the `videoTrack`. - - - -### dyteSelfMedia.rawVideoTrack - -Returns the `videoTrack` having no middleware executed on it. - - - -### dyteSelfMedia.screenShareTracks - -Returns the screen share tracks. - - - -### dyteSelfMedia.audioEnabled - -Returns true if audio is enabled. - - - -### dyteSelfMedia.videoEnabled - -Returns true if video is enabled. - - - -### dyteSelfMedia.screenShareEnabled - -Returns true if screen share is enabled. - - - -### dyteSelfMedia.addAudioMiddleware() - -Adds the audio middleware to be executed on the raw audio stream. -If there are more than 1 audio middlewares, -they will be executed in the sequence they were added in. -If you want the sequence to be altered, please remove all previous middlewares and re-add. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.removeAudioMiddleware() - -Removes the audio middleware, if it is there. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.addVideoMiddleware() - -Adds the video middleware to be executed on the raw video stream. -If there are more than 1 video middlewares, -they will be executed in the sequence they were added in. -If you want the sequence to be altered, please remove all previous middlewares and re-add. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.removeVideoMiddleware() - -Removes the video middleware, if it is there. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.getCurrentDevices() - -Returns the media devices currently being used. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.getAudioDevices() - -Returns the local participant's audio devices. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.getVideoDevices() - -Returns the local participant's video devices. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.getSpeakerDevices() - -Returns the local participant's speaker devices. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - - -### dyteSelfMedia.getDeviceById(deviceId, kind) - -Returns the local participant's device, indexed by ID and kind. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - -| Param | Description | -| -------- | ------------------------------------------------- | -| deviceId | The ID of the device. | -| kind | The kind of the device: audio, video, or speaker. | - - - -### dyteSelfMedia.setDevice(device) - -Change the current media device that is being used by the local participant. - -**Kind**: instance method of [DyteSelfMedia](#module_DyteSelfMedia) - -| Param | Description | -| ------ | ------------------------------------------------------------------------------------------------ | -| device | The device that is to be used. A device of the same `kind` will be replaced. the primary stream. | diff --git a/docs/ios-core/reference/DyteSelfParticipant.md b/docs/ios-core/reference/DyteSelfParticipant.md deleted file mode 100644 index e2e12b6453..0000000000 --- a/docs/ios-core/reference/DyteSelfParticipant.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -sidebar_position: 4 -web_core_version: 1.20.0 ---- - - - - - -This is a map of participants, indexed by `participant.id` (a participant's peer ID). -This map emits an event whenever a participant present in the map emits an event. -For example, when a participant is added to this map, a `participantJoined` event is -emitted from the map. When a participant object emits an event `videoUpdate`, the map -re-emits that event (provided the participant is present in the map). diff --git a/docs/ios-core/reference/DyteStage.md b/docs/ios-core/reference/DyteStage.md deleted file mode 100644 index a0d16da713..0000000000 --- a/docs/ios-core/reference/DyteStage.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -The DyteStage class represents functionality to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage - -- [DyteStage](#module_DyteStage) - - [.stageStatus](#module_DyteStage+StageSatus) - - [.accessRequests](#module_DyteStage+getAccessRequests) - - [.requestAccess()](#module_DyteStage+requestAccess) - - [.cancelRequestAccess()](#module_DyteStage+cancelRequestAccess) - - [.grantAccess()](#module_DyteStage+grantAccess) - - [.denyAccess()](#module_DyteStage+denyAccess) - - [.join()](#module_DyteStage+join) - - [.leave()](#module_DyteStage+leave) - - [.kick()](#module_DyteStage+kick) - - - -### get stage status - -```swift -let stageStatus: StageStatus -``` - -Tell the current status of stage for the local user (`meeting.localUser`). To know about possible values check [StageStatus](/ios-core-new/reference/StageStatus) - - - -### get Access Request - -```swift -let accessRequests: [DyteJoinedMeetingParticipant] -``` - -Property to fetch all the participants who raised request to join stage. - - - -### meeting.stage.requestAccess() - -```swift -func requestAccess() -``` - -Method to send a request to privileged users to join the stage. This request is always raised by you(`meeting.localUser`) -for eg. - -```swift -meeting.stage.requestAccess() -``` - - - -### Cancel request to join stage - -```swift -func cancelRequestAccess() -``` - -Method to cancel a previous Stage join request raised by you(`meeting.localUser`) -for eg. - -```swift -meeting.stage.cancelRequestAccess() -``` - - - -### Grant access request - -```swift -func grantAccess(id: String) -``` - -Method to grant access to Stage for the participant id passed. -This can be in response to a Stage Join request, but it can be called on other users as well -for eg. - -```swift -meeting.stage.grantAccess(id: participant.id) -``` - - - -### Deny access request - -```swift -func denyAccess(id: String) -``` - -Method to deny access to Stage for the participant id passed. -This should be called in response to a Stage Join request. -for eg. - -```swift -meeting.stage.denyAccess(id: participant.id) -``` - - - -### Join stage - -```swift -func join() -``` - -Method to join the stage -Users either need to have the permission in the preset or must be accepted by a privileged -user to call this method -for eg. - -```swift -meeting.stage.join() -``` - - - -### Leave stage - -```swift -func leave() -``` - -Method to leave the stage -Users must either be on the stage already or be accepted to join the stage -to call this method -for eg. - -```swift -meeting.stage.leave() -``` - - - -### Kick participant - -```swift -func kick(id: String) -``` - -Method to kick a participant off the stage for the participant id passed. - -for eg. - -```swift -meeting.stage.kick(id: participant.id) -``` diff --git a/docs/ios-core/reference/DyteThemePreset.md b/docs/ios-core/reference/DyteThemePreset.md deleted file mode 100644 index 6cc529818a..0000000000 --- a/docs/ios-core/reference/DyteThemePreset.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -sidebar_position: 15 -web_core_version: 1.20.0 ---- - - - - - -The DyteThemePreset class represents the meeting theme for the current participant - -- [DyteThemePreset](#module_DyteThemePreset) - - ~~[.setupScreen](#module_DyteThemePreset+setupScreen)~~ - - ~~[.waitingRoom](#module_DyteThemePreset+waitingRoom)~~ - - ~~[.controlBar](#module_DyteThemePreset+controlBar)~~ - - ~~[.header](#module_DyteThemePreset+header)~~ - - ~~[.pipMode](#module_DyteThemePreset+pipMode)~~ - - [.viewType](#module_DyteThemePreset+viewType) - - [.maxVideoStreams](#module_DyteThemePreset+maxVideoStreams) - - [.maxScreenShareCount](#module_DyteThemePreset+maxScreenShareCount) - - ~~[.plugins](#module_DyteThemePreset+plugins)~~ - - [.disabledPlugins](#module_DyteThemePreset+disabledPlugins) - - - -### ~~dyteThemePreset.setupScreen~~ - -**_Deprecated_** - - - -### ~~dyteThemePreset.waitingRoom~~ - -**_Deprecated_** - - - -### ~~dyteThemePreset.controlBar~~ - -**_Deprecated_** - - - -### ~~dyteThemePreset.header~~ - -**_Deprecated_** - - - -### ~~dyteThemePreset.pipMode~~ - -**_Deprecated_** - - - -### dyteThemePreset.viewType - -The `viewType` tells the type of the meeting -possible values are WEBINAR, GROUP_CALL - - - -### dyteThemePreset.maxVideoStreams - -The `maxVideoStreams` contains the maximum video -streams for mobile and desktop - - - -### dyteThemePreset.maxScreenShareCount - -The `maxScreenShareCount` contains the maximum -possible concurrent screen shares - - - -### ~~dyteThemePreset.plugins~~ - -**_Deprecated_** - - - -### dyteThemePreset.disabledPlugins - -The `disabledPlugins` property returns id of all disabled plugins diff --git a/docs/ios-core/reference/DyteWaitlistedParticipant.md b/docs/ios-core/reference/DyteWaitlistedParticipant.md deleted file mode 100644 index 8a39d2e169..0000000000 --- a/docs/ios-core/reference/DyteWaitlistedParticipant.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -sidebar_position: 4 -web_core_version: 1.20.0 ---- - - - - -**Subclass** of [DyteMeetingParticipant](/ios-core-new/reference/DyteMeetingParticipant) -This class represents a single participant in the meeting. -The participant object can be accessed from one of the participant lists -present in the `meeting.participants` object. For example, - -```swift -let participant1 = meeting.participants.active[0]; -let participant2 = meeting.participants.joined[0]; -``` - -- [DyteWaitlistedParticipant](#module_DyteParticipant) - - [.acceptWaitListedRequest()](#module_DyteParticipant--this.+acceptWaitListedRequest) - - [.rejectWaitListedRequest()](#module_DyteParticipant--this.+rejectWaitListedRequest) - - - -#### Accept Waiting room request - -```swift -fun acceptWaitListedRequest() -``` - -Return a view which is used to render participant camera streams. - - - -#### Reject Waiting room request - -```swift -fun rejectWaitListedRequest() -``` - -Return a view which is used to render participant screen streams. diff --git a/docs/ios-core/reference/StageStatus.md b/docs/ios-core/reference/StageStatus.md deleted file mode 100644 index a772523414..0000000000 --- a/docs/ios-core/reference/StageStatus.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -```swift -enum StageStatus { - case OFF_STAGE - case REQUESTED_TO_JOIN_STAGE - case ACCEPTED_TO_JOIN_STAGE - case REJECTED_TO_JOIN_STAGE - case ON_STAGE -} -``` - -The DyteStageStatus represent an enum to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage. Below are the specificed status of the stage. - -### case OFF_STAGE - -when the participant is not on the Stage ie He/She is a viewer and can't produce media - -### case REQUESTED_TO_JOIN_STAGE - -When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` - -### case ACCEPTED_TO_JOIN_STAGE - -When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or -When request to join stage raised by the viewer is accepted by the host. - -### case REJECTED_TO_JOIN_STAGE - -When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` - -### case ON_STAGE - -when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/WaitListStatus.md b/docs/ios-core/reference/WaitListStatus.md deleted file mode 100644 index a772523414..0000000000 --- a/docs/ios-core/reference/WaitListStatus.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 10 -web_core_version: 1.20.0 ---- - - - - - -```swift -enum StageStatus { - case OFF_STAGE - case REQUESTED_TO_JOIN_STAGE - case ACCEPTED_TO_JOIN_STAGE - case REJECTED_TO_JOIN_STAGE - case ON_STAGE -} -``` - -The DyteStageStatus represent an enum to manage the Stage of the meeting -Stage refers to a virtual area, where participants stream are visible to other participants. -When a participant is off-stage, they are not producing media -but only consuming media from participants who are on Stage. Below are the specificed status of the stage. - -### case OFF_STAGE - -when the participant is not on the Stage ie He/She is a viewer and can't produce media - -### case REQUESTED_TO_JOIN_STAGE - -When participant has permission `Need to Request` from the preset `Media` menu and participant requested to join stage from the Host by calling this method `meeting.stage.requestAccess()` - -### case ACCEPTED_TO_JOIN_STAGE - -When host invited a viewer to join stage by calling `meeting.stage.grantAccess(id: participant.id)` Or -When request to join stage raised by the viewer is accepted by the host. - -### case REJECTED_TO_JOIN_STAGE - -When host rejected a viewer request to join stage by calling `meeting.stage.denyAccess(id: participant.id)` - -### case ON_STAGE - -when the participant is on the Stage and can produce media. Participant can move to this stage by calling the `meeting.stage.join()` diff --git a/docs/ios-core/reference/_category_.json b/docs/ios-core/reference/_category_.json deleted file mode 100644 index e7dd5551bd..0000000000 --- a/docs/ios-core/reference/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 11, - "label": "Reference", - "collapsible": true -} diff --git a/docs/ios-core/release-notes.mdx b/docs/ios-core/release-notes.mdx deleted file mode 100644 index bd3528da63..0000000000 --- a/docs/ios-core/release-notes.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Release Notes -sidebar_position: 101 -sidebar_class_name: releaseSidebarHeading -tags: - - ios-core - - releasenotes ---- - -import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator'; - -The release notes lists all new features, resolved issues, and known issues of iOS Core in chronological order. - - - - - iOS Core Release Notes - diff --git a/docs/ios-core/room-metadata.mdx b/docs/ios-core/room-metadata.mdx deleted file mode 100644 index 482985b653..0000000000 --- a/docs/ios-core/room-metadata.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Room Metadata -description: >- - Learn about managing room metadata in your iOS application using Dyte - Docs. -sidebar_position: 6 -tags: - - ios-core - - room-metadata ---- - -# Room Metadata - -All metadata pertaining to a meeting is stored in `meeting.meta`. This includes: - -- `meetingId`: The unique identifier of the meeting. -- `meetingType`: Indicates the meeting is a group-call or a webinar. -- `meetingTitle`: The title of the meeting. -- `meetingStartedTimestamp`: The timestamp when the meeting started. -- `meetingState`: The state of the meeting of type `DyteMeetingState`. -- `authToken`: The authentication token for the meeting. -- `meetingConfig`: The configuration of the meeting of type `MeetingConfig`. - -```swift -enum DyteMeetingState { - case notInitialised - case initStarted - case initCompleted - case initFailed -} - -struct MeetingConfig { - let enableAudio: Bool - let enableVideo: Bool -} -``` - -For example, if you want to get the name of the meeting the current participant is -connected to, you can do so by doing: - -```swift -let meetingTitle = meeting.meta.meetingTitle -``` - - - Mobile Core Room Metadata - diff --git a/docs/ios-core/stage-management/1-introduction.mdx b/docs/ios-core/stage-management/1-introduction.mdx deleted file mode 100644 index b79225fa9d..0000000000 --- a/docs/ios-core/stage-management/1-introduction.mdx +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Introduction -description: Stage management in Dyte meetings. -sidebar_position: 1 -tags: - - ios-core - - stage ---- - -_Below documentation is relevant for Interactive Livestream(LHLS) and Webinar(WebRTC) use cases._ - -Instead of a traditional publish-subscribe model, where a user can publish their media and others can choose to subscribe, Dyte -comes with an optional managed configuration. In this managed configuration, a less privileged user can be configured with a -default behavior to not publish media. The user can then request permission to publish their media, which a privileged user can -choose to grant or deny. - -### Accessing the Stage APIs - -Dyte's stage management APIs allow users to perform actions such as joining and leaving the stage, managing stage requests and -permissions, and kicking participants from the stage. These APIs are accessible through the `meeting.stage` object. - -### Stage Status - -In meetings where stage management is enabled, a user's stage status can change within the values represented by the `DyteStageStatus` -enum. These status values include: - -- `ON_STAGE`: Indicates that the user is currently on the stage and is allowed to publish media. -- `OFF_STAGE`: Indicates that the user is a viewer and is not on the stage. They can see and listen to those on stage. -- `REQUESTED_TO_JOIN_STAGE`: Indicates that the user has a pending request to join the stage. This status is assigned to the user - until the host accepts or rejects their request. -- `ACCEPTED_TO_JOIN_STAGE`: Indicates that the host has accepted the user's request to join the stage. -- `REJECTED_TO_JOIN_STAGE`: Indicates that the host has rejected the user's request to join the stage. The user can request again - to join from this status. - -The `meeting.stage.status` property provides the current stage status of the local user. - -### Viewers - -You can retrieve a list of off-stage participants (viewers) in a stage-enabled meeting by accessing the `meeting.stage.viewers` -property. This property provides a list of `DyteJoinedMeetingParticipant` objects whose stage status is not `ON_STAGE`. - -### Joining the Stage - -To interact with peers and publish media, users can join the stage. This action is only possible if the user's preset allows them -to publish media or if their request to join the stage has been accepted by a host (i.e., their stage status is `ACCEPTED_TO_JOIN_STAGE`). - -```swift -meeting.stage.join() -``` - -### Leaving the Stage - -When users want to stop interacting with peers, they can leave the stage. This action stops their media from being published, -and their audio and video are no longer received by others in the room. - -```swift -meeting.stage.leave() -``` - -### List of Stage Events - -The `DyteStageEventListener` interface provides callback methods for various stage events. Implement these callbacks to handle -stage-related events in your application: - -```swift -extension WebinarViewModel: DyteStageEventListener { - func onPresentRequestReceived() { - // Called when the local user's stage access request is accepted by the host, - // or when the local user, who is a viewer, is invited to the stage by the host. - } - - func onAddedToStage() { - // Called when the local user successfully joins the stage. - } - - func onRemovedFromStage() { - // Called when the local user is removed from the stage. - } - - func onPresentRequestAdded(participant: DyteJoinedMeetingParticipant) { - // Called when a participant requests to join the stage. Triggered only if the local user is a host. - } - - func onPresentRequestClosed(participant: DyteJoinedMeetingParticipant) { - // Called when a participant with a pending stage access request leaves the meeting. - // Triggered only if the local user is a host. - } - - func onPresentRequestRejected(participant: DyteJoinedMeetingParticipant) { - // Called when a participant's stage access request is denied by the host. - // Triggered only if the local user is a host. - } - - func onPresentRequestWithdrawn(participant: DyteJoinedMeetingParticipant) { - // Called when a participant cancels their stage access request. - // Triggered only if the local user is a host. - } - - func onParticipantRemovedFromStage(participant: DyteJoinedMeetingParticipant) { - // Called when a participant is removed from the stage by the host. - } - - func onStageRequestsUpdated(accessRequests: [DyteJoinedMeetingParticipant]) { - // Called when the list of stage access requests is updated. - } - - func onParticipantStartedPresenting(participant: DyteJoinedMeetingParticipant) { - // Called when a participant joins the stage. - } - - func onParticipantStoppedPresenting(participant: DyteJoinedMeetingParticipant) { - // Called when a participant leaves the stage. - } - - func onStageStatusUpdated(stageStatus: DyteStageStatus) { - // Called when the local user's stage status is updated. - } -} -``` - -Next, we'll explore the Stage Management APIs for hosts, allowing them to manage stage requests, participants in Dyte meetings. - - - iOS Core Stage Introduction - diff --git a/docs/ios-core/stage-management/2-host-controls.mdx b/docs/ios-core/stage-management/2-host-controls.mdx deleted file mode 100644 index 4ac6629c30..0000000000 --- a/docs/ios-core/stage-management/2-host-controls.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Stage Host Controls -description: Stage management APIs for Host in Dyte meetings. -sidebar_position: 2 -tags: - - ios-core - - stage ---- - -In a stage management-enabled meeting, a user with the `selfPermissions.host.canAcceptStageRequests` permission as `true` is -considered a host. The `meeting.stage` object in Dyte's iOS Core SDK provides stage management APIs that allow hosts to -manage stage access requests, invite participants to the stage, and remove participants from the stage. - -### List of Stage Access Requests - -You can retrieve the list of pending stage access requests by accessing the `meeting.stage.accessRequests` property. This property -provides a list of `DyteJoinedMeetingParticipant` objects who have requested stage access. - -**Note**: If the local user is not a host, this property returns an empty list. - -### Grant Access - -To accept stage access requests or allow a participant directly to the stage, you can use the `grantAccess()` method. -Alternatively, the `grantAccessAll()` method can be used to grant stage access to all participants with pending stage access requests. - -```swift -// Grants stage access to a participant -// id: peer id of the stage access requesting participant -meeting.stage.grantAccess(id) - -// Grants stage access to all participants with pending stage access requests -meeting.stage.grantAccessAll() -``` - -### Deny Access - -To reject stage access requests, you can use the `denyAccess()` method. Similarly, the `denyAccessAll()` method can be used to -deny all pending stage access requests. - -```swift -// Denies stage access request of a participant -// id: peer id of the stage access requesting participant -meeting.stage.denyAccess(id) - -// Denies all pending stage access requests -meeting.stage.denyAccessAll() -``` - -### Kick Users - -You can remove a participant from the stage by using the `kick()` method. - -```swift -// Kicks a participant from stage -// id: peer id of the ON_STAGE participant to kick -meeting.stage.kick(id) -``` - -### Listening to Stage Access Requests - -You can listen to incoming stage access requests or changes in the access requests list if you are a host. The SDK provides the -following callbacks to `DyteStageEventListener`: - -```swift -extension WebinarViewModel: DyteStageEventListener { - func onPresentRequestAdded(participant: DyteStageParticipant) { - // Called when a user is requesting to join the stage - } - - func onPresentRequestClosed(participant: DyteStageParticipant) { - // Called when a user who was trying to join the stage leaves the call - } - - func onPresentRequestRejected(participant: DyteStageParticipant) { - // Called when a join stage request is denied by the host - } - - func onPresentRequestWithdrawn(participant: DyteStageParticipant) { - // Called when a user who was trying to join the stage withdraws their request to join - } - - func onStageRequestsUpdated(accessRequests: [DyteJoinedMeetingParticipant]) { - // Called when the access requests list is updated - } -} -``` - -These APIs enable you to manage stage access requests and participants effectively in Dyte meetings. Next, we'll explore the -Stage APIs available to Viewer participants. diff --git a/docs/ios-core/stage-management/3-viewer-participants.mdx b/docs/ios-core/stage-management/3-viewer-participants.mdx deleted file mode 100644 index bd09754a90..0000000000 --- a/docs/ios-core/stage-management/3-viewer-participants.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Stage Access for Viewers -description: Stage APIs for Viewers in Dyte meetings. -sidebar_position: 3 -tags: - - ios-core - - stage ---- - -Viewer participants in a stage-enabled meeting are users whose preset permission for media production is set as `CAN_REQUEST`. -The `meeting.stage` object provides APIs for viewer participants to request stage access and withdraw their join stage request. - -### Request Access - -To request access to the stage, you can call the `requestAccess()` method: - -```swift -meeting.stage.requestAccess() -``` - -When a host accepts the user's stage access request or allows the user directly to the stage, the SDK triggers the -`onPresentRequestReceived` callback in `DyteStageEventListener`. You can listen to this event: - -```swift -extension WebinarViewModel: DyteStageEventListener { - func onPresentRequestReceived() { - // Host accepted the join stage request or invited user directly to stage - } -} -``` - -You can then call the `join()` method to finally join the stage. - -**Note**: If the host has directly allowed the user to join the stage and they want to decline, you should use the `leave()` method. - -### Cancel Access Request - -To cancel or withdraw a pending stage access request, you can call the `cancelRequestAccess()` method: - -```swift -meeting.stage.cancelRequestAccess() -``` diff --git a/docs/ios-core/stage-management/_category_.json b/docs/ios-core/stage-management/_category_.json deleted file mode 100644 index 753fc8761b..0000000000 --- a/docs/ios-core/stage-management/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "position": 9, - "label": "Stage Management", - "collapsible": true -} \ No newline at end of file