diff --git a/src/PluginMediaStreamTrack.swift b/src/PluginMediaStreamTrack.swift index aca9c534..44d4f424 100644 --- a/src/PluginMediaStreamTrack.swift +++ b/src/PluginMediaStreamTrack.swift @@ -54,7 +54,7 @@ class PluginMediaStreamTrack : NSObject { } } - func getJSON() -> NSDictionary { + func getJSON() -> [String: Any] { return [ "id": self.id, "kind": self.kind, diff --git a/src/PluginRTCPeerConnection.swift b/src/PluginRTCPeerConnection.swift index e899e3c5..853e52db 100644 --- a/src/PluginRTCPeerConnection.swift +++ b/src/PluginRTCPeerConnection.swift @@ -815,17 +815,49 @@ class PluginRTCPeerConnection : NSObject, RTCPeerConnectionDelegate { return currentMediaStreamTrack; } - func getTransceiversJSON() -> [NSDictionary] { + func getTransceiversJSON() -> [[String: Any]] { if (!IsUnifiedPlan()) { NSLog("PluginRTCPeerConnection#getTransceiversJSON() | transceiers is not available when using plan-b") return []; } - return self.rtcPeerConnection.transceivers.map({ (transceiver: RTCRtpTransceiver) -> NSDictionary in + return self.rtcPeerConnection.transceivers.map({ (transceiver: RTCRtpTransceiver) -> [String: Any] in // let receiverTrack = self.getPluginMediaStreamTrack(transceiver.receiver.track, trackId: nil); // let senderTrack = self.getPluginMediaStreamTrack(transceiver.sender.track, trackId: nil); let transceiverHolder = self.updateTransceivers(rtcRtpTransceiver: transceiver) - return transceiverHolder.getJSON() + var transceiverDesc = transceiverHolder.getJSON() + + if var receiver = transceiverDesc["receiver"] as? [String: Any] { + if var track = receiver["track"] as? [String: Any] { + if let id = track["id"] as? String { + let pluginTrack = self.pluginMediaTracks.first { (key: String, value: PluginMediaStreamTrack) in + return value.originalId == id + } + if let pluginTrack = pluginTrack { + track["id"] = pluginTrack.value.id + } + } + receiver["track"] = track + } + transceiverDesc["receiver"] = receiver + } + + if var sender = transceiverDesc["sender"] as? [String: Any] { + if var track = sender["track"] as? [String: Any] { + if let id = track["id"] as? String { + let pluginTrack = self.pluginMediaTracks.first { (key: String, value: PluginMediaStreamTrack) in + return value.originalId == id + } + if let pluginTrack = pluginTrack { + track["id"] = pluginTrack.value.id + } + } + sender["track"] = track + } + transceiverDesc["sender"] = sender + } + + return transceiverDesc }) } diff --git a/src/PluginRTCRtpReceiver.swift b/src/PluginRTCRtpReceiver.swift index 73611adb..51d87adc 100644 --- a/src/PluginRTCRtpReceiver.swift +++ b/src/PluginRTCRtpReceiver.swift @@ -9,7 +9,7 @@ class PluginRTCRtpReceiver : NSObject { self.id = id != 0 ? id : Int.random(in: 0...10000) } - func getJSON() -> NSDictionary { + func getJSON() -> [String: Any] { let track = self.rtpReceiver.track != nil ? [ "id": self.rtpReceiver.track!.trackId, "kind": self.rtpReceiver.track!.kind, diff --git a/src/PluginRTCRtpSender.swift b/src/PluginRTCRtpSender.swift index 90edd06a..4527824b 100644 --- a/src/PluginRTCRtpSender.swift +++ b/src/PluginRTCRtpSender.swift @@ -60,7 +60,7 @@ class PluginRTCRtpSender : NSObject { self.rtpSender.track = rtcMediaStreamTrack } - func getJSON() -> NSDictionary { + func getJSON() -> [String: Any] { let track = self.rtpSender.track != nil ? [ "id": self.rtpSender.track!.trackId, "kind": self.rtpSender.track!.kind, diff --git a/src/PluginRTCRtpTransceiver.swift b/src/PluginRTCRtpTransceiver.swift index ec5c7ba5..796b0726 100644 --- a/src/PluginRTCRtpTransceiver.swift +++ b/src/PluginRTCRtpTransceiver.swift @@ -153,7 +153,7 @@ class PluginRTCRtpTransceiver : NSObject { return rtcRtpTransceiverInit } - func getJSON() -> NSDictionary { + func getJSON() -> [String: Any] { var currentDirection = RTCRtpTransceiverDirection.inactive self.rtcRtpTransceiver?.currentDirection(¤tDirection)