Skip to content

Commit b3c4f08

Browse files
committed
Implement getBroadcastObject
1 parent 747e76a commit b3c4f08

File tree

4 files changed

+91
-1
lines changed

4 files changed

+91
-1
lines changed

WebRTC-Sample-App/ConferenceViewController.swift

+18-1
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,12 @@ extension ConferenceViewController: AntMediaClientDelegate
224224

225225
public func publishStarted(streamId: String) {
226226
AntMediaClient.printf("Publish started for stream:\(streamId)")
227-
227+
228228
//this plays the streams in the room
229229
self.conferenceClient?.play(streamId: self.roomId);
230+
231+
conferenceClient?.getBroadcastObject(forStreamId: self.roomId)
232+
230233
}
231234

232235
public func publishFinished(streamId: String) {
@@ -236,5 +239,19 @@ extension ConferenceViewController: AntMediaClientDelegate
236239
public func videoView(_ videoView: RTCVideoRenderer, didChangeVideoSize size: CGSize) {
237240
AntMediaClient.printf("Video size changed to " + String(Int(size.width)) + "x" + String(Int(size.height)) + ". These changes are not handled in Simulator for now")
238241
}
242+
243+
public func onLoadBroadcastObject(streamId: String, message: [String : Any]) {
244+
debugPrint(streamId)
245+
debugPrint(message)
246+
}
247+
248+
public func eventHappened(streamId: String, eventType: String, payload: [String : Any]?)
249+
{
250+
debugPrint("Event: \(streamId) - \(eventType) \(payload ?? [:])")
251+
252+
if eventType == EVENT_TYPE_TRACK_LIST_UPDATED {
253+
conferenceClient?.getBroadcastObject(forStreamId: streamId)
254+
}
255+
}
239256
}
240257

WebRTCiOSSDK/api/AntMediaClient.swift

+41
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,14 @@ open class AntMediaClient: NSObject, AntMediaClientProtocol {
10331033
let streams = message[STREAMS] as! [String];
10341034
self.joinedRoom(streamId: streamId, streams:streams);
10351035
}
1036+
else if definition == BROADCAST_OBJECT_NOTIFICATION { // broadcastObject
1037+
let broadcastString = message["broadcast"] as! String
1038+
let broadcastObject = broadcastString.toJSON()
1039+
self.delegate?.onLoadBroadcastObject(
1040+
streamId: message[STREAM_ID] as! String,
1041+
message: broadcastObject ?? [:]
1042+
)
1043+
}
10361044

10371045
break;
10381046
case ROOM_INFORMATION_COMMAND:
@@ -1209,6 +1217,25 @@ open class AntMediaClient: NSObject, AntMediaClientProtocol {
12091217

12101218
}
12111219

1220+
func sendCommand(command: String, streamId: String) {
1221+
let command = [
1222+
COMMAND: command,
1223+
STREAM_ID: streamId
1224+
].json;
1225+
1226+
webSocket?.write(string: command)
1227+
}
1228+
1229+
public func getBroadcastObject(forStreamId id: String)
1230+
{
1231+
AntMediaClient.printf("GetBroadcastObject for \(id)")
1232+
1233+
sendCommand(
1234+
command: GET_BROADCAST_OBJECT_COMMAND,
1235+
streamId: id
1236+
)
1237+
}
1238+
12121239
}
12131240

12141241
extension AntMediaClient: WebRTCClientDelegate {
@@ -1270,6 +1297,18 @@ extension AntMediaClient: WebRTCClientDelegate {
12701297
//event happened
12711298
if let incomingStreamId = json?[STREAM_ID] {
12721299
self.delegate?.eventHappened(streamId:incomingStreamId as! String , eventType:eventType as! String);
1300+
1301+
self.delegate?.eventHappened(
1302+
streamId: incomingStreamId as! String,
1303+
eventType: eventType as! String
1304+
)
1305+
1306+
self.delegate?.eventHappened(
1307+
streamId: incomingStreamId as! String,
1308+
eventType: eventType as! String,
1309+
payload: json
1310+
)
1311+
12731312
}
12741313
else {
12751314
AntMediaClient.printf("Incoming message does not have streamId:\(json)")
@@ -1280,6 +1319,8 @@ extension AntMediaClient: WebRTCClientDelegate {
12801319
}
12811320
}
12821321

1322+
1323+
12831324
}
12841325

12851326
extension AntMediaClient: WebSocketDelegate {

WebRTCiOSSDK/api/AntMediaClientDelegate.swift

+24
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,17 @@ public protocol AntMediaClientDelegate: AnyObject {
120120
- streamId: The id of the stream that the event happened
121121
- evenType: The type of the event
122122
*/
123+
@available(*, deprecated, message: "Will be removed soon. Use eventHappened(streamId, eventType, payload)")
123124
func eventHappened(streamId:String, eventType:String);
125+
126+
/**
127+
It's called when there is an event happen such microphone is muted or unmuted for the specific streamId
128+
- Parameters
129+
- streamId: The id of the stream that the event happened
130+
- evenType: The type of the event
131+
- payload: The payload of the event
132+
*/
133+
func eventHappened(streamId:String, eventType:String, payload: [String:Any]?)
124134

125135
/**
126136
It's called when a new track is added to the stream. It works both on multirack streaming and conferencing
@@ -132,6 +142,11 @@ public protocol AntMediaClientDelegate: AnyObject {
132142
*/
133143
func trackRemoved(track:RTCMediaStreamTrack)
134144

145+
/**
146+
It's called when server responses to getBroadcastObject method in AntMediaClient.
147+
*/
148+
func onLoadBroadcastObject(streamId: String, message: [String: Any])
149+
135150
/**
136151
It's called after join to the room.
137152
- streamId: the id of the stream tha can be used to publish stream.
@@ -236,5 +251,14 @@ public extension AntMediaClientDelegate {
236251
}
237252
}
238253

254+
func onLoadBroadcastObject(streamId: String, message: [String: Any]) {
255+
AntMediaClient.printf("onLoadBroadcastObject is called for \(streamId) and incoming response: \(message)")
256+
}
257+
258+
func eventHappened(streamId:String, eventType:String, payload: [String:Any]?) {
259+
AntMediaClient.printf("\(streamId) \(eventType) with")
260+
AntMediaClient.printf(payload?.json ?? "")
261+
}
262+
239263
}
240264

WebRTCiOSSDK/api/AntMediaClientProtocol.swift

+8
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ let EVENT_TYPE_MIC_MUTED = "MIC_MUTED"
3434
let EVENT_TYPE_MIC_UNMUTED = "MIC_UNMUTED";
3535
let EVENT_TYPE_CAM_TURNED_OFF = "CAM_TURNED_OFF";
3636
let EVENT_TYPE_CAM_TURNED_ON = "CAM_TURNED_ON";
37+
let GET_BROADCAST_OBJECT_COMMAND = "getBroadcastObject"
38+
let BROADCAST_OBJECT_NOTIFICATION = "broadcastObject"
39+
public let EVENT_TYPE_TRACK_LIST_UPDATED = "TRACK_LIST_UPDATED"
3740

3841
let ENABLE_TRACK_COMMAND = "enableTrack"
3942
let ENABLE_VIDEO_TRACK_COMMAND = "toggleVideo"
@@ -350,6 +353,11 @@ public protocol AntMediaClientProtocol {
350353
*/
351354
func setDegradationPreference(_ degradationPreference: RTCDegradationPreference);
352355

356+
/**
357+
Get the broadcast object from the server. After the broadcast object has been received, it calls AntMediaClientDelegat:onLoadBroadcastObject method
358+
*/
359+
func getBroadcastObject(forStreamId id: String)
360+
353361
/**
354362
Disconnects websocket connection
355363
*/

0 commit comments

Comments
 (0)