Class: EnxRoom

The EnxRoom is where the real-time communication session takes place. The EnxRoom class handles the connection of client endpoints with signaling, Local stream and Remote stream.

To initialize EnxRoom:

-(instancetype)initWithDelegate:(id<EnxRoomDelegate>)roomDelegate; Parameter:
Parameter Description
delegate EnxRoomDelegate for instance of the room.
Return: EnxRoom object.

Properties

Type Description
roomId The Enx room id for connected room instance
roomMetadata It contains all the information about room.
publishStreamId Stream id for the stream being published.
publishStream EnXStream object referencing the stream being published..
streamsByStreamId EnxStream dictionary present in the room.
remoteStreams List of remote EnxStream streams available in this room. They might be subscribed or not.
isRoomActiveTalker BOOL to check active talker enable or not
userList List of users joined the room
publishingStats Stats information.

Methods

Methods Name Description
- connect: To connect client endpoint application to designated room.
- publish: To publish local stream into the room
- unpublish: To unpublish(remove) a published stream from the room.
- subscribe: To subscribe a remote stream into the room.
- disconnect To disconnect client endpoint from the connected room.
- postClientLogs To post client endpoint console logs to the server for analysis/trouble shooting.
- startRecord To start recording the session in a room. The only moderator can start the recording.
- stopRecord To stop recording the session in a room. The only moderator can stop the recording.
- muteAllUser Mute all participants in a room. Available to the only moderator.
- unMuteAllUser Unmute all participants in a room. Available to the only moderator.
- getMaxTalkers To get maximum allowed streams in the active talker list.
- getTalkerCount To get a total count of streams a client endpoint opted to receive in the active talker list.
- setTalkerCount: To set total streams a client endpoint opts to receive in Active Talker.
- speakerActive To mute and unmute speaker.(Note: This method will not work with the iPad.)
- requestFloor To Facilitate Participant to request floor access when the room is in Lecture Mode.
- grantFloor: To Facilitate Moderator to grant floor access to a Participant in Lecture Mode.
- denyFloor: To Facilitate Moderator to deny floor access to a Participant in Lecture Mode.
- releaseFloor: To Facilitate Moderator to release floor access from a granted Participant in Lecture Mode.
- Whoami To know connected client’s own information.
- setReceiveVideoQuality: Use this method to set video quality of remote streams at client endpoint.
- changeToAudioOnly: Pass true to change audio-video room to audio only. And false to move back to audio-video.
- getDevices This feature will give flexibility for user to switch to any connected Audio media at on going call. Client endpoint can get all list of connected Media while calling method.
- getSelectedDevice Client endpoint can also check the current selected Audio media While calling method.
- switchMediaDevice: Client endpoint can also overlap with any other connected media device while calling method.
- applicationDidEnterBackground: Client endpoint will call this method to a mute/unmute remote stream while application in the background.
- applicationWillEnterForeground Client endpoint will call this method to a mute/unmute remote stream while application in the foreground.
enableStats In order to enable stats on room level.

Room Delegates

Required Delegate name Description
- room:didConnect: This delegate called when the client endpoint successfully connected to the room.
- room:didError: This delegate called when the client endpoint failed to connect to the room.
- room:didEventError: This delegate called when the client endpoint failed to perform any event, for instance, publish the stream.
- room:didPublishStream: This delegate is to get published stream.
- room:didSubscribeStream: This delegate is to receive subscribed stream.
- room:activeTalkerList: This delegate will call every time when active talker list gets updated and the user will get the new active list.
Optional Delegate name Description
- room:didUnpublishStream: This delegate is to get unpublished stream.
- room:didAddedStream: This delegate called when remote publishing stream added to the room. Client endpoint should subscribe to this stream.
- room:didRemovedStream: This delegate called when remote stream removed from the room.
- room:userDidJoined: This delegate called when a user is connected to a room, all other connected users are notified about the new user.
- room:userDidDisconnected: When a user is disconnected from a room, all other connected users are notified about the users exit.
-didNotifyDeviceUpdate: This delegate Method Will Notify app user for any Audio media changes
-roomDidDisconnected: This callback method will call when a user is disconnected from a room.


Logs Delegates

Optional Delegate Description
- didLogUpload: This delegate called when the log is uploaded successfully to the server.


Recording Delegates

Optional Delegate Description
- startRecordingEvent: This delegate called when recording started by the moderator.
- stopRecordingEvent: This delegate called when recording stopped by the moderator.
- roomRecordOn: When recording is started in the room, (either implicitly or explicitly), all connected users are notified that room is being recorded.
- roomRecordOff: When the recording is turned off (either implicitly or explicitly), all connected users are notified that recording has been stopped in the room.


Hard Mute Delegates

Optional Delegate Description
- didMutedAllUser: This delegate called when the room is muted by the moderator. Available to Moderator only.
- didUnMutedAllUser: This delegate called when the room is unmuted by the moderator. Available to Moderator only.
- didHardMutedAll: Participants notified when room is muted by any moderator.
- didHardUnMuteAllUser: Participants notified when room is unmuted by any moderator.


Screen Share Delegates

Optional Delegate Description
- room:screenSharedStarted: Client endpoint will be notified about a screen share started.
- room:screenShareStopped: Client endpoint will be notified about a screen share stop.


Canvas Delegates

Optional Delegate Description
-room: canvasStarted: A Participant listens to this delegate to know about a Canvas started by a user.
-room:canvasStopped: A Participant listens to this delegate to know about that Canvas has stopped by user.


Bandwidth Delegates

Optional Delegate Description
- stream:didBandWidthUpdated: In the event when a significant change in the available downstream (subscribers) bandwidth.


Lecture mode Delegates

Optional Delegate Description
- didFloorRequested: Participant receives on the success of requestFloor. This is for participant only.
- didFloorRequestReceived: Moderator receives any Floor Request raised by the participant. This is for Moderator only.
- didProcessFloorRequested: Moderator receives acknowledgment on performing actions like grantFloor, denyFloor, releaseFloor.
- didGrantFloorRequested: Participant receives when the moderator performs action grantFloor.
- didDenyFloorRequested: Participant receives when the moderator performs action denyFloor.
- didReleaseFloorRequested: Participant receives when the moderator performs action releaseFloor.


Talker Count Delegates

Optional Delegate Description
- room:didGetMaxTalkers: Client endpoint will get the maximum number of allowed Active Talkers in the connected room.
- room:didGetTalkerCount: Client endpoint receives when the user request to get opted active talker streams set by them.
- room:didSetTalkerCount: Client endpoint receives when the user set number of active talker.


Stats Delegates

Optional Delegate Description
-(void)didAcknowledgeStats:(NSArray * _Nonnull)subUnSubResponse This delegate call when user enable stats
-(void)didReceiveStats:(NSArray *)statsData This delegate call is to get all stats at room level


Connect

The room initialization process would require a valid “Token” to be passed. The token needs to be acquired through a Server API Call. For connecting the client endpoint to the Signaling server, explicitly call the below method of EnxRoom Class as follows: -(void)connect:(NSString *)token;
Parameter Description
token The token needs to be acquired through a Server API Call.

On Success: This method will provide Remote Room handle. -(void)room:(EnxRoom *)room didConnect:(NSDictionary *)roomMetadata; Where roomMetadata contains room details.

On Error: -(void)room:(EnxRoom *)room didError:(NSString *)reason;

Event Error

This delegate is received when client end failed to perform any event. For example: Publish and Subscribe.

Delegate: - (void)room:(EnxRoom *_Nullable)room didEventError:(NSArray *_Nullable)reason;

Publish Stream

This method publishes a locally initiated stream into the connected room. As the stream is added to the Room, all other connected users are notified with an delegate didAddedStream, so that they may subscribe the stream

To publish a stream with given options use the method below: -(void)publish:(EnxStream *)stream; Delegate to receive published stream as below : -(void)room:(EnxRoom *)room didPublishStream:(EnxStream *)stream; Here, room is the instance of the EnxRoom where the event happened. Stream is EnxStream being published.

Unpublish Stream

This method unpublishes a published local stream from the Room. As the stream gets unpublished, all other connected users are notified with delegate didRemovedStream.

To unpublish a local stream in a room use the method below: -(void)unpublish; Delegate to receive unpublished stream with stream object. -(void)room:(EnxRoom *)room didUnpublishStream:(EnxStream *)stream Here, room is the instance of the EnxRoom where the event happened. Stream is EnxStream being unpublished.

Stream Added

This delegate called when remote publishing stream added to the room. Client endpoint should subscribe to this stream.

- (void)room:(EnxRoom *)room didAddedStream:(EnxStream *)stream; Here, stream is an EnxStream object.

Stream Removed

This delegate called when remote stream removed from the room.

- (void)room:(EnxRoom *)room didRemovedStream:(EnxStream *)stream; Here, stream is an EnxStream object.

Subscribe Stream

To subscribe a remote stream in a room use the method below: -(BOOL)subscribe:(EnxStream *)stream; where, stream is EnxStream object with a valid streamId.
Note: Client endpoint should be connected to a room before subscribing to a stream.

Return: BOOL (Boolean indicating if started to signaling to subscribe the given stream) Delegate to receive Subscribed stream: -(void)didSubscribeStream:(EnxStream *)stream;

Unsubscribe Stream

To unsubscribe from the remote stream use the method below: -(void)unsubscribe:(EnxStream *)stream; where stream is EnxStream object which you want to unsubscribe. Delegate call after unsubscribing a stream: -(void)room:(EnxRoom *)room didUnSubscribeStream:(EnxStream *)stream; Called when server successfully unsubscribed the stream.

Disconnect

This API is used to disconnect a Client endpoint application from the connected room. Note that for re-connecting to the room, one needs to get a new Token.

enxRoom.disconnect

Delegate To Recive on Successfull disconnected

- (void)roomDidDisconnected:(EnxRoomStatus)status;

Room Recording start

This APIs help to start recording during the session. And available for users with Moderator.

API: -(void)startRecord; Moderator Delegates -(void)startRecordingEvent:(NSArray *)response; Where the response is result getting from Enablex Server on record events.
Response: { "result":0, "msg":"Success" } Paricipant Delegates - (void) roomRecordOn:(NSArray *)Data
Response: { "msg":"Room Recording On", "result":"0" }

Room Recording stop

These APIs use to stop recording during the session. Using these APIs. These API calls are only available for users with Moderator rights

API: -(void)stopRecord; Moderator Delegates -(void)stopRecordingEvent:(NSArray *)response; Where the response is result getting from Enablex Server on record events.
Response: { "result":0, "msg":"Success" } Paricipant Delegates - (void) roomRecordOff:(NSArray *)Data
Response: { "msg":"Room Recording Off", "result":"0" }

Post Enablex SDK logs

To enable logs call the below method: EnxLogger *logger = [EnxLogger sharedInstance]; [logger startLog];

To post Enablex client SDK logs to server use the below method:
Note: To post client logs, first developer needs to enable the logs. -(void)postClientLogs;

Delegate call for success on uploading logs: -(void)didLogUpload:(NSString *)message; Where the message is a string value with information about success of uploading logs.


Hard Mute Room

These APIs help hard-mute Room at runtime. These API calls are only available to users with role “Moderator”. On Room being put on hard-mute, all participants’ audio stream is stopped, until it’s reversed. When the Room is put off hard-mute, then the last known mute-state of all connected users is reset.
HardMute: It is the feature at room level where the moderator can mute all the participants present in the room.

To activate hardmute state use the below method: -(void)muteAllUser;

There would be listener for participant and moderator when hardmute used by moderator. For this delegates are:

Moderator Delegates: -(void)didMutedAllUser:(NSArray *)Data;

Here, Data is result from EnableX Server on hardmute events.

Response: { "result" : 0, "msg" : "room muted" }
Paricipant Delegates: -(void)didHardMutedAll:(NSArray *)Data;

Here, Data is result from EnableX Server on hardmute events.

Response: { "msg":"Room is muted", "status":true }



Hard Unmute Room

These APIs help hard-unmute Room at runtime. These API calls are only available to users with role “Moderator”. On Room being put on hard-mute, all participants’ audio stream is stopped, until it’s reversed. When the Room is put off hard-mute, then the last known mute-state of all connected users is reset.
Hard UnMute: It is the feature at room level where the moderator can mute all the participants present in the room. To deactivate hardmute state at the room level use the below method: -(void)unMuteAllUser;

There would be listener for participant and moderator when hard unMute used by moderator. For this delegates are:

Moderator Delegates: -(void)didUnMutedAllUser:(NSArray *)Data;

Here, Data is result from EnableX Server on hardunmute events.

Response: { "result" : 0, "msg" : "room-unmuted" }
Paricipant Delegates: -(void)didHardUnMuteAllUser:(NSArray *)Data;

Here, Data is result from EnableX Server on hardunmute events.

Response: { "msg":"Room is un-muted", "status":false }

Chair Control Feature

Raise Hand Control

This API is only available during Lecture Mode of a Session. Each Participant Raise hand Control can individually be asked to Join the floor using this API Call. This API calls are only available to users with role “Participant”.

-(void)requestFloor;

There would be listener for participant and moderator when participant request floor. For this delegates are:

Moderator Delegates: -(void)didFloorRequestReceived:(NSArray *)Data; Here, Data is result form Enablex Server on receiving requestFloor event.
Response: { "clientId": "xxx", "name": "iOS" } Participant Delegates: -(void)didFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on requestFloor event.

Response: { "msg": "Floor Request Received", "result": "1701" }

Grant Floor Control

This API is only available during Lecture Mode. Each Participant requested Floor Control can individually be granted access to the Floor using this API Call. These API calls are only available to users with role “Moderator”.

API: -(void)grantFloor:(NSString *)clientId; Parameter :
Parameter Description
Clientid It’s the Client ID for the participant whom access is being granted.
Status Developer pass status as a "grantFloor".
Delegate (Optional). If you need to handle the success or failure of the action, then pass a function name here to which you look to receive call back.
Moderator Delegate: -(void)didProcessFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on grantFloor event.

Response: { "msg": "Floor Granted", "result": "1708" } Participant Delegate:

This delegate invoke when Moderator accepts the floor request.

-(void)didGrantFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on receiving grantFloor event.

Response: { "result":1708, "msg":"Floor Granted", "clientId":"c371cd94-4ad4-4d5c-b674-5e8dd6d81d65" }

Deny Floor Request

This API is only available during Lecture Mode of a Session. Each Participant requested Floor Control can individually be denied access to the Floor using this API Call. This API calls are only available to users with role “Moderator”.

API: -(void)denyFloor:(NSString *)clientId; Parameter :
Parameter Description
Clientid It’s the Client ID for the participant who is being denied access to the floor.
Status Developer pass status as a "denyFloor".
Delegate (Optional). If you need to handle the success or failure of the action, then pass a function name here to which you look to receive call back.
Moderator Delegate: -(void)didProcessFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on denyFloor event.

Response: { "msg": "Floor Denied", "result": "1709" } On Error: -(void)didErrorProcessFloorRequest:(NSException *)error;

Here error is object of NSException which contains error info.

Participant Delegate: Denied: -(void)didDenyFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on receiving denyFloor event.

Response: { "result":4117, "msg":"Floor Request Denied", "clientId":"5222fa14-58ab-4e3e-95ca-47fbf31ad15c" }

Release Floor Request

This API is only available during Lecture Mode of a Session. Each Participant granted Floor Control can individually be asked to release the floor Control using this API Call. This API calls are only available to users with role “Moderator”.

API: -(void)releaseFloor:(NSString *)clientId; Parameter :
Parameter Description
Clientid It’s the Client ID for the participant who is being denied access to the floor.
Status Developer pass status as a "releaseFloor".
Delegate (Optional). If you need to handle the success or failure of the action, then pass a function name here to which you look to receive call back.
Moderator Delegate: -(void)didProcessFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on releaseFloor event.

Response: { "msg": "Floor Released", "result": "1712" } Participant Delegate: Releases: -(void)didReleaseFloorRequested:(NSArray *)Data;

Here, Data is result form Enablex Server on receiving releaseFloor event.

Response: { "result":1712, "msg":"Floor Released", "clientId":"5222fa14-58ab-4e3e-95ca-47fbf31ad15c" }

To get max allowed Active Talkers

This method is available for all users during Active Talker Mode. Using this method, you can get maximum number of allowed Active Talkers in the Callback.

API: - (void) getMaxTalkers Delegate: - (void)room : (EnxRoom *)room didGetMaxTalkers:(NSArray *)Data

where room is instance of the room where event happen.And where Data is:

Response: { "maxTalkers" : 2, "result" : 0 }

To get total streams to receive in Active Talker

The getTalkerCount method is used to know opted streams in Active Talker.

API: - (void) getTalkerCount Delegate: - (void) room:(EnxRoom *)room didGetTalkerCount:(NSArray *)Data where room is instance of the room where event happen.And where Data is:
Response: { "numTalkers" : 2, "result" : 0 }

To set total streams to receive in Active Talker

The setTalkerCount method is used to opt total number of streams to receive at a Client endpoint in Active Talkers.

API: - (void) setTalkerCount:(NSInteger)number

Parameters :

number to set total number of streams opted to receive in Active Talker.

Delegate:

- (void) room:(EnxRoom *)room didSetTalkerCount:(NSArray *)Data

A Participant get of number of talker count .

Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "numTalkers" : 1, "result" : 0 }

Active Talker List

This delegate will call every time when active talker list gets updated and user will get the new active list.

Delegate: - (void)room:(EnxRoom *)room activeTalkerList:(NSArray *)Data Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "active" : true, "activeList" : [ {"streamId":"1","mediatype" : "audiovideo", "clientId" : "a334a039-90af-4c5d-93ad-6f71ea20a36a", "name":"abc"}, {"streamId":"2","mediatype" : "audio", "clientId" : "b334a039-90af-4c5d-93ad-6f71ea20a36b","name":"abc1"}, {"streamId":"3","mediatype" : "audio", "clientId" : "c334a039-90af-4c5d-93ad-6f71ea20a36c","name":"abc2"}, {"streamId":"4","mediatype" : "audiovideo", "clientId" : "d334a039-90af-4c5d-93ad-6f71ea20a36d", "name":"abc3"}, {"streamId":"5","mediatype" : "audiovideo", "clientId" : "e334a039-90af-4c5d-93ad-6f71ea20a36e", "name":"abc4"}, {"streamId":"6","mediatype" : "audiovideo", "clientId" : "f334a039-90af-4c5d-93ad-6f71ea20a36f", "name":"abc5"} ] }

BandWidth Update

when there is a significant change in the available downstream (subscribers) bandwidth.

Delegate: - (void)room :(EnxRoom *)room didBandWidthUpdated:(NSArray *)Data Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "message": "SubscriberBandWidth", "bandwidth": [ { "streamId": 1, "subscriberBw": 300000, "publisherBw": 328215 }, { "streamId": 2, "subscriberBw": 1505400, "publisherBw": 135229 } ] }

Screen Share Start

Client endpoint will be notified about a screen share started.

Delegate: - (void)room :(EnxRoom *)room screenSharedStarted:(NSArray *)Data Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "clientId" : "d334a039-90af-4c5d-93ad-6f71ea20a36e", "name" : "iOS", "result" : 0, "streamId" : 11 }

Screen Share Stop

Client endpoint will be notified about a screen share stop.

Delegate: - (void)room:(EnxRoom *)room screenShareStopped:(NSArray *)Data Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "clientId" : "d334a039-90af-4c5d-93ad-6f71ea20a36e", "name" : "iOS", "result" : 0, "streamId" : 11 }

Canvas Started

Client endpoint will be notified about a canvas Started.

Delegate: -(void)room:(EnxRoom *_Nullable)room canvasStarted:(NSArray *_Nullable)Data; Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "result":0, "name":"iOS", "clientId":"4b9f85c1-ec1c-4955-97bd-bdbe188b976a", "streamId":21 }

Canvas Stop

Client endpoint will be notified about a canvas stop.

Delegate: -(void)room:(EnxRoom *_Nullable)room canvasStopped:(NSArray *_Nullable)Data; Parameters:

room : Instance of the room where event happen. Where Data is

Response: { "result":0, "name":"iOS", "clientId":"4b9f85c1-ec1c-4955-97bd-bdbe188b976a", "streamId":21 }

Whoami

To know connect user information at end-point.
API: -(NSDictionary *)Whoami Return: NSDictionary
Response: { "clientId" : "130531e2-0d7a-44ae-981d-31986847d149", "name" : "iOS", "role" : "participant", "user_ref" : 2236, "permissions" : { "controlhandlers" : true, "publish" : true, "record" : false, "stats" : true, "subscribe" : false } }

Mute/UnMute Speaker

To mute and unmute speaker.
To mute speaker : [enxRoomObject speakerActive:YES];
To unmute speaker : [enxRoomObject speakerActive:NO];

List of Participants

This API is designed to return a JSON Structure containing the user connected to the Room or disconnected to the Room. Some users may be publishing audio/video, some may be subscribed to others whereas some may neither be publishing nor subscribed to others. 
Note the result for publishers also include associated stream-Ids. Refer "Return JSON" below.



Delegates -(void)room:(EnxRoom *)room userDidJoined:(NSArray *)Data; This delegate call when any user join the room. Where Data is: { "clientId": "f1a0f629-4505-4867-ab40-feb0c0e5759d", "name": "iOS", "permissions": { "controlhandlers": true, "publish": true, "record": false, "stats": true, "subscribe": true }, "role": "participant", "user_ref": 2236 }



-(void)room:(EnxRoom *)room userDidDisconnected:(NSArray *)Data; This delegate call when any user leave the room. Where Data is { "clientId": "f1a0f629-4505-4867-ab40-feb0c0e5759d", "name": "iOS", "permissions": { "controlhandlers": true, "publish": true, "record": false, "stats": true, "subscribe": true, }, "role": "participant", "user_ref": 2236 }

-(void)didNotifyDeviceUpdate:(NSString*)updates; This delegate Method Will Notify to the app user if Audio media will change

Stats

Stats information

Delegates - (void)room:(EnxRoom *)room publishingClient:(EnxClient *)publishingClient mediaType:(NSString *)mediaType ssrc:(NSString *)ssrc PublishingAtKbps:(long)kbps didReceiveStats:(RTCLegacyStatsReport *)statsReport; This delegate call when stats are enabled. Where statsReport is: { "bytesSent": "333796", "codecImplementationName": "libvpx", "framesEncoded": "178", "googAdaptationChanges": "0", "googAvgEncodeMs": "13", "googBandwidthLimitedResolution": "false", "googCodecName": "VP8", "googContentType": "realtime", "googCpuLimitedResolution": "false", "googEncodeUsagePercent" : "38", "googFirsReceived": "3", "googFrameHeightInput": "360", "googFrameHeightSent": "480", "googFrameRateInput": "25", "googFrameRateSent": "24", "googFrameWidthInput": "480", "googFrameWidthSent": "360", "googHasEnteredLowResolution": "false", "googNacksReceived": "0", "googPlisReceived": "29", "googRtt": "35", "googTrackId": "LCMSv0", "hugeFramesSent": "3", "mediaType": "video", "packetsLost": "0", "packetsSent": "387", "qpSum": "6863", "ssrc": "4258744213", "transportId": "Channel-audio-1" }



Set Receive Video Quality

Use this method to set video quality of receive streams at client side.

-(void)setReceiveVideoQuality:(NSDictionary*_Nonnull)opt; Parameter:{"streamType":"talker/canvas", "videoQuality": "AUTO/HD/SD/LD"}

Set streams to audio only

Use this method to set all the streams to audio which are present in the room at client side.

-(void)changeToAudioOnly:(BOOL)check; Parameter: YES or NO



Get List of connect mrdia Devices

Used this method to get list of connected media devices

-(NSArray*)getDevices;



Get current media device name

Used this method to get current connected media device name

-(NSString*)getSelectedDevice



Switch to other connected media device

Used this method to change media device

-(void)switchMediaDevice:(NSString*)name Parameter: Audia name (For exam- "speaker")



Application Enter in Background

Used this method to mute remote stream while application in the background

-(void)applicationDidEnterBackground:(BOOL)videoMuteRemoteStream; Parameter: YES or NO



Application Enter in Foreground

Used this method to unmute remote stream while application in the backgroun

-(void)applicationWillEnterForeground:(BOOL)videoMuteRemoteStream; Parameter: YES or NO