@100mslive/react-native-hms 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +37 -39
  2. package/android/.gradle/checksums/checksums.lock +0 -0
  3. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  4. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  5. package/android/build.gradle +1 -1
  6. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +91 -17
  7. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +106 -0
  8. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +38 -3
  9. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +342 -183
  10. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +4 -1
  11. package/ios/HmsDecoder.swift +105 -18
  12. package/ios/HmsHelper.swift +92 -0
  13. package/ios/HmsManager.m +5 -1
  14. package/ios/HmsManager.swift +41 -6
  15. package/ios/HmsSDK.swift +199 -60
  16. package/ios/HmsView.swift +1 -1
  17. package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
  18. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  19. package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
  20. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
  21. package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
  22. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
  23. package/lib/commonjs/classes/HMSConfig.js +3 -1
  24. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  25. package/lib/commonjs/classes/HMSEncoder.js +20 -3
  26. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  27. package/lib/commonjs/classes/HMSException.js +30 -0
  28. package/lib/commonjs/classes/HMSException.js.map +1 -0
  29. package/lib/commonjs/classes/HMSHelper.js +2 -2
  30. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  31. package/lib/commonjs/classes/HMSLocalAudioTrack.js +12 -0
  32. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  33. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  34. package/lib/commonjs/classes/HMSPeer.js +3 -0
  35. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  36. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
  37. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  38. package/lib/commonjs/classes/HMSPermissions.js +6 -0
  39. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  40. package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
  41. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
  42. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  43. package/lib/commonjs/classes/HMSRoom.js +9 -0
  44. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  45. package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
  46. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
  47. package/lib/commonjs/classes/HMSSDK.js +129 -70
  48. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  49. package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
  50. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
  51. package/lib/commonjs/classes/HMSTrack.js +2 -19
  52. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  53. package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
  54. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
  55. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  56. package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
  57. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  58. package/lib/commonjs/index.js +84 -0
  59. package/lib/commonjs/index.js.map +1 -1
  60. package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
  61. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  62. package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
  63. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
  64. package/lib/module/classes/HMSCameraFacing.js +7 -0
  65. package/lib/module/classes/HMSCameraFacing.js.map +1 -0
  66. package/lib/module/classes/HMSConfig.js +3 -1
  67. package/lib/module/classes/HMSConfig.js.map +1 -1
  68. package/lib/module/classes/HMSEncoder.js +19 -3
  69. package/lib/module/classes/HMSEncoder.js.map +1 -1
  70. package/lib/module/classes/HMSException.js +21 -0
  71. package/lib/module/classes/HMSException.js.map +1 -0
  72. package/lib/module/classes/HMSHelper.js +2 -2
  73. package/lib/module/classes/HMSHelper.js.map +1 -1
  74. package/lib/module/classes/HMSLocalAudioTrack.js +13 -1
  75. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  76. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  77. package/lib/module/classes/HMSPeer.js +3 -0
  78. package/lib/module/classes/HMSPeer.js.map +1 -1
  79. package/lib/module/classes/HMSPeerUpdate.js +1 -0
  80. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  81. package/lib/module/classes/HMSPermissions.js +6 -0
  82. package/lib/module/classes/HMSPermissions.js.map +1 -1
  83. package/lib/module/classes/HMSRTMPConfig.js +17 -0
  84. package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
  85. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  86. package/lib/module/classes/HMSRoom.js +9 -0
  87. package/lib/module/classes/HMSRoom.js.map +1 -1
  88. package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
  89. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
  90. package/lib/module/classes/HMSSDK.js +130 -70
  91. package/lib/module/classes/HMSSDK.js.map +1 -1
  92. package/lib/module/classes/HMSServerRecordingState.js +14 -0
  93. package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
  94. package/lib/module/classes/HMSTrack.js +2 -17
  95. package/lib/module/classes/HMSTrack.js.map +1 -1
  96. package/lib/module/classes/HMSVideoResolution.js +14 -0
  97. package/lib/module/classes/HMSVideoResolution.js.map +1 -0
  98. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  99. package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
  100. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  101. package/lib/module/index.js +6 -0
  102. package/lib/module/index.js.map +1 -1
  103. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
  104. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
  105. package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
  106. package/lib/typescript/classes/HMSConfig.d.ts +2 -0
  107. package/lib/typescript/classes/HMSEncoder.d.ts +3 -1
  108. package/lib/typescript/classes/HMSException.d.ts +22 -0
  109. package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +1 -0
  110. package/lib/typescript/classes/HMSLocalPeer.d.ts +1 -0
  111. package/lib/typescript/classes/HMSPeer.d.ts +2 -0
  112. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  113. package/lib/typescript/classes/HMSPermissions.d.ts +4 -0
  114. package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
  115. package/lib/typescript/classes/HMSRemotePeer.d.ts +1 -0
  116. package/lib/typescript/classes/HMSRoom.d.ts +9 -0
  117. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
  118. package/lib/typescript/classes/HMSSDK.d.ts +10 -1
  119. package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
  120. package/lib/typescript/classes/HMSTrack.d.ts +1 -1
  121. package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
  122. package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
  123. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
  124. package/lib/typescript/index.d.ts +6 -0
  125. package/package.json +1 -1
  126. package/src/classes/HMSAudioTrackSettings.ts +9 -1
  127. package/src/classes/HMSBrowserRecordingState.ts +11 -0
  128. package/src/classes/HMSCameraFacing.ts +4 -0
  129. package/src/classes/HMSConfig.ts +3 -1
  130. package/src/classes/HMSEncoder.ts +19 -2
  131. package/src/classes/HMSException.ts +33 -0
  132. package/src/classes/HMSHelper.ts +2 -2
  133. package/src/classes/HMSLocalAudioTrack.ts +13 -1
  134. package/src/classes/HMSLocalPeer.ts +1 -0
  135. package/src/classes/HMSPeer.ts +3 -0
  136. package/src/classes/HMSPeerUpdate.ts +1 -0
  137. package/src/classes/HMSPermissions.ts +6 -0
  138. package/src/classes/HMSRTMPConfig.ts +15 -0
  139. package/src/classes/HMSRemotePeer.ts +1 -0
  140. package/src/classes/HMSRoom.ts +12 -0
  141. package/src/classes/HMSRtmpStreamingState.ts +11 -0
  142. package/src/classes/HMSSDK.tsx +40 -2
  143. package/src/classes/HMSServerRecordingState.ts +11 -0
  144. package/src/classes/HMSTrack.ts +2 -15
  145. package/src/classes/HMSVideoResolution.ts +9 -0
  146. package/src/classes/HMSVideoSettings.ts +3 -3
  147. package/src/classes/HMSVideoTrackSettings.ts +13 -10
  148. package/src/index.ts +6 -0
@@ -88,7 +88,10 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
88
88
  val auxiliaryTracks = peer.auxiliaryTracks
89
89
  for (track in auxiliaryTracks) {
90
90
  val auxTrackId = track.trackId
91
- if (trackId == auxTrackId && track.source == HMSTrackSource.SCREEN && track.type == HMSTrackType.VIDEO && !track.isMute) {
91
+ if (trackId == auxTrackId &&
92
+ track.type == HMSTrackType.VIDEO &&
93
+ !track.isMute
94
+ ) {
92
95
  videoTrack = track as HMSVideoTrack
93
96
  return
94
97
  }
@@ -9,13 +9,16 @@ class HmsDecoder: NSObject {
9
9
  let id = room.roomID ?? ""
10
10
  let name = room.name ?? ""
11
11
  let metaData = room.metaData ?? ""
12
+ let browserRecordingState = HmsDecoder.getHMSBrowserRecordingState(hmsRoom?.browserRecordingState)
13
+ let rtmpStreamingState = HmsDecoder.getHMSRtmpStreamingState(hmsRoom?.rtmpStreamingState)
14
+ let serverRecordingState = HmsDecoder.getHMSServerRecordingState(hmsRoom?.serverRecordingState)
12
15
  var peers = [[String: Any]]()
13
16
 
14
17
  for peer in room.peers {
15
18
  peers.append(getHmsPeer(peer))
16
19
  }
17
20
 
18
- return ["id": id, "name": name, "metaData": metaData, "peers": peers]
21
+ return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState]
19
22
  }
20
23
 
21
24
  static func getHmsPeer (_ peer: HMSPeer) -> [String: Any] {
@@ -25,6 +28,7 @@ class HmsDecoder: NSObject {
25
28
  let isLocal = peer.isLocal
26
29
  let customerUserID = peer.customerUserID ?? ""
27
30
  let customerDescription = peer.metadata ?? ""
31
+ let metadata = peer.metadata ?? ""
28
32
  let audioTrack = getHmsAudioTrack(peer.audioTrack)
29
33
  let videoTrack = getHmsVideoTrack(peer.videoTrack)
30
34
  let role = getHmsRole(peer.role)
@@ -40,6 +44,7 @@ class HmsDecoder: NSObject {
40
44
  "isLocal": isLocal,
41
45
  "customerUserID": customerUserID,
42
46
  "customerDescription": customerDescription,
47
+ "metadata": metadata,
43
48
  "audioTrack": audioTrack,
44
49
  "videoTrack": videoTrack,
45
50
  "auxiliaryTracks": auxiliaryTracks,
@@ -93,6 +98,7 @@ class HmsDecoder: NSObject {
93
98
  let isLocal = peer.isLocal
94
99
  let customerUserID = peer.customerUserID ?? ""
95
100
  let customerDescription = peer.metadata ?? ""
101
+ let metadata = peer.metadata ?? ""
96
102
  let audioTrack = getHmsAudioTrack(peer.audioTrack)
97
103
  let videoTrack = getHmsVideoTrack(peer.videoTrack)
98
104
  let role = getHmsRole(peer.role)
@@ -115,7 +121,7 @@ class HmsDecoder: NSObject {
115
121
  localVideoTrackData = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute":localAudioTrack?.isMute() ?? false]
116
122
  }
117
123
 
118
- return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "localAudioTrackData": localAudioTrackData, "localVideoTrackData": localVideoTrackData, "role": role]
124
+ return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "localAudioTrackData": localAudioTrackData, "localVideoTrackData": localVideoTrackData, "role": role]
119
125
  }
120
126
 
121
127
  static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
@@ -132,11 +138,11 @@ class HmsDecoder: NSObject {
132
138
 
133
139
  guard let settings = hmsVideoTrackSettings else { return [:] }
134
140
 
135
- let codec = settings.codec.rawValue
136
- let resolution = settings.resolution
141
+ let codec = getHmsVideoTrackCodec(settings.codec)
142
+ let resolution = getHmsVideoResolution(settings.resolution)
137
143
  let maxBitrate = settings.maxBitrate
138
144
  let maxFrameRate = settings.maxFrameRate
139
- let cameraFacing = settings.cameraFacing.rawValue
145
+ let cameraFacing = getHmsVideoTrackCameraFacing(settings.cameraFacing)
140
146
  let trackDescription = settings.trackDescription ?? ""
141
147
 
142
148
  var simulcastSettingsData = [[String: Any]]()
@@ -153,6 +159,34 @@ class HmsDecoder: NSObject {
153
159
  return ["codec": codec, "resolution": resolution, "maxBitrate": maxBitrate, "maxFrameRate": maxFrameRate, "cameraFacing": cameraFacing, "trackDescription": trackDescription, "simulcastSettings": simulcastSettingsData]
154
160
  }
155
161
 
162
+ static func getHmsVideoTrackCodec(_ codec : HMSCodec) -> String {
163
+ switch(codec) {
164
+ case HMSCodec.VP8:
165
+ return "vp8"
166
+ case HMSCodec.H264:
167
+ return "h264"
168
+ default:
169
+ return "h264"
170
+ }
171
+ }
172
+
173
+ static func getHmsVideoTrackCameraFacing(_ cameraFacing : HMSCameraFacing) -> String {
174
+ switch(cameraFacing) {
175
+ case HMSCameraFacing.front:
176
+ return "FRONT"
177
+ case HMSCameraFacing.back:
178
+ return "BACK"
179
+ default:
180
+ return "FRONT"
181
+ }
182
+ }
183
+
184
+ static func getHmsVideoResolution(_ hmsVideoResolution: HMSVideoResolution?) -> [String: Any] {
185
+ guard let resolution = hmsVideoResolution else { return [:] }
186
+
187
+ return ["width": resolution.width, "height": resolution.height]
188
+ }
189
+
156
190
  static func getHmsRemotePeers (_ remotePeers: [HMSRemotePeer]?) -> [[String: Any]] {
157
191
  guard let remotePeers = remotePeers else { return [[:]] }
158
192
 
@@ -172,6 +206,7 @@ class HmsDecoder: NSObject {
172
206
  let isLocal = hmsRemotePeer.isLocal
173
207
  let customerUserID = hmsRemotePeer.customerUserID ?? ""
174
208
  let customerDescription = hmsRemotePeer.metadata ?? ""
209
+ let metadata = hmsRemotePeer.metadata ?? ""
175
210
  let audioTrack = getHmsAudioTrack(hmsRemotePeer.audioTrack)
176
211
  let videoTrack = getHmsVideoTrack(hmsRemotePeer.videoTrack)
177
212
  let role = getHmsRole(hmsRemotePeer.role)
@@ -195,7 +230,7 @@ class HmsDecoder: NSObject {
195
230
  remoteVideoTrackData = ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute()]
196
231
  }
197
232
 
198
- return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "remoteAudioTrackData": remoteAudioTrackData, "remoteVideoTrackData": remoteVideoTrackData, "role": role]
233
+ return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "remoteAudioTrackData": remoteAudioTrackData, "remoteVideoTrackData": remoteVideoTrackData, "role": role]
199
234
  }
200
235
 
201
236
  static func getPreviewTracks(_ tracks: [HMSTrack]) -> [String: Any] {
@@ -267,7 +302,12 @@ class HmsDecoder: NSObject {
267
302
  let screen = getHmsVideoSettings(publishSettings.screen)
268
303
  let videoSimulcastLayers = getHmsSimulcastLayers(publishSettings.videoSimulcastLayers)
269
304
  let screenSimulcastLayers = getHmsSimulcastLayers(publishSettings.screenSimulcastLayers)
270
- let allowed = publishSettings.allowed ?? []
305
+ var allowed = publishSettings.allowed ?? []
306
+ if((publishSettings.allowed) != nil) {
307
+ allowed = getWriteableArray(publishSettings.allowed)
308
+ }else {
309
+ allowed = []
310
+ }
271
311
 
272
312
  return ["audio": audio,
273
313
  "video": video,
@@ -276,6 +316,16 @@ class HmsDecoder: NSObject {
276
316
  "screenSimulcastLayers": screenSimulcastLayers,
277
317
  "allowed": allowed]
278
318
  }
319
+
320
+ static func getWriteableArray(_ array: [String]?) -> [String] {
321
+ var decodedArray = [String]()
322
+ if let extractedArray = array {
323
+ for value in extractedArray {
324
+ decodedArray.append(value)
325
+ }
326
+ }
327
+ return decodedArray
328
+ }
279
329
 
280
330
  static func getHmsAudioSettings(_ audioSettings: HMSAudioSettings) -> [String: Any] {
281
331
  let bitRate = audioSettings.bitRate
@@ -362,16 +412,53 @@ class HmsDecoder: NSObject {
362
412
  return request
363
413
  }
364
414
 
365
- static func getError(_ error: HMSError) -> [String: Any] {
366
- let code = error.code
367
- let description = error.description
368
- let localizedDescription = error.localizedDescription
369
- let debugDescription = error.debugDescription
370
- let message = error.message
371
- let name = error.id
372
- let id = error.id
373
- let action = error.action
374
-
375
- return ["code": code, "description": description, "localizedDescription":localizedDescription, "debugDescription":debugDescription, "message":message, "name":name, "action":action, "id": id]
415
+ static func getError(_ errorObj: HMSError?) -> [String: Any] {
416
+ if let error = errorObj {
417
+ let code = error.code
418
+ let description = error.description
419
+ let localizedDescription = error.localizedDescription
420
+ let debugDescription = error.debugDescription
421
+ let message = error.message
422
+ let name = error.id
423
+ let id = error.id
424
+ let action = error.action
425
+
426
+ return ["code": code, "description": description, "localizedDescription":localizedDescription, "debugDescription":debugDescription, "message":message, "name":name, "action":action, "id": id]
427
+ } else {
428
+ return [:]
429
+ }
430
+ }
431
+
432
+ static func getHMSBrowserRecordingState(_ data: HMSBrowserRecordingState?) -> [String: Any] {
433
+ if let recordingState = data {
434
+ let running = recordingState.running
435
+ let error = HmsDecoder.getError(recordingState.error)
436
+
437
+ return ["running": running, "error": error]
438
+ } else {
439
+ return [:]
440
+ }
441
+ }
442
+
443
+ static func getHMSRtmpStreamingState(_ data: HMSRTMPStreamingState?) -> [String: Any] {
444
+ if let streamingState = data {
445
+ let running = streamingState.running
446
+ let error = HmsDecoder.getError(streamingState.error)
447
+
448
+ return ["running": running, "error": error]
449
+ } else {
450
+ return [:]
451
+ }
452
+ }
453
+
454
+ static func getHMSServerRecordingState(_ data: HMSServerRecordingState?) -> [String: Any] {
455
+ if let recordingState = data {
456
+ let running = recordingState.running
457
+ let error = HmsDecoder.getError(recordingState.error)
458
+
459
+ return ["running": running, "error": error]
460
+ } else {
461
+ return [:]
462
+ }
376
463
  }
377
464
  }
@@ -53,6 +53,22 @@ class HmsHelper: NSObject {
53
53
  return nil
54
54
  }
55
55
 
56
+ static func getRemoteAudioAuxiliaryTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteAudioTrack? {
57
+ for peer in remotePeers ?? [] {
58
+ if peer.audioTrack?.trackId == trackID {
59
+ return peer.audioTrack as? HMSRemoteAudioTrack
60
+ }
61
+ let auxTracks = peer.auxiliaryTracks
62
+
63
+ for track in auxTracks ?? [] {
64
+ if (track.kind == HMSTrackKind.audio && track.trackId == trackID) {
65
+ return track as? HMSRemoteAudioTrack
66
+ }
67
+ }
68
+ }
69
+ return nil
70
+ }
71
+
56
72
  static func getRemoteVideoTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteVideoTrack? {
57
73
  for peer in remotePeers ?? [] {
58
74
  if peer.videoTrack?.trackId == trackID {
@@ -98,4 +114,80 @@ class HmsHelper: NSObject {
98
114
  }
99
115
  return hms
100
116
  }
117
+
118
+ static func getLocalVideoSettings(_ settings: NSDictionary?) -> HMSVideoTrackSettings? {
119
+ guard let data = settings,
120
+ let codec = data.value(forKey: "codec") as? String,
121
+ let resolution = data.value(forKey: "resolution") as? [String : Double]?,
122
+ let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
123
+ let maxFrameRate = data.value(forKey: "maxFrameRate") as? Int,
124
+ let cameraFacing = data.value(forKey: "cameraFacing") as? String,
125
+ let trackDescription = data.value(forKey: "trackDescription") as? String?,
126
+ let resolutionObj = HmsHelper.getVideoResolution(resolution ?? [:])
127
+ else {
128
+ return nil
129
+ }
130
+ let codecEncoded = HmsHelper.getVideoCodec(codec)
131
+ let cameraFacingEncoded = HmsHelper.getCameraFacing(cameraFacing)
132
+ let hmsTrackSettings = HMSVideoTrackSettings(codec: codecEncoded, resolution: resolutionObj, maxBitrate: maxBitrate, maxFrameRate: maxFrameRate, cameraFacing: cameraFacingEncoded, trackDescription: trackDescription)
133
+ return hmsTrackSettings
134
+ }
135
+
136
+ static func getLocalAudioSettings(_ settings: NSDictionary?) -> HMSAudioTrackSettings? {
137
+ guard let data = settings,
138
+ let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
139
+ let trackDescription = data.value(forKey: "trackDescription") as? String?
140
+ else {
141
+ return nil
142
+ }
143
+ let hmsTrackSettings = HMSAudioTrackSettings(maxBitrate: maxBitrate, trackDescription: trackDescription)
144
+ return hmsTrackSettings
145
+ }
146
+
147
+ static func getVideoResolution(_ data: [String : Double]) -> HMSVideoResolution? {
148
+ guard let width = data["width"],
149
+ let height = data["height"]
150
+ else {
151
+ return nil
152
+ }
153
+
154
+ return HMSVideoResolution.init(width: width, height: height)
155
+ }
156
+
157
+ static func getVideoCodec(_ codecString: String?) -> HMSCodec {
158
+ switch codecString {
159
+ case "h264":
160
+ return HMSCodec.H264
161
+ case "vp8":
162
+ return HMSCodec.VP8
163
+ default:
164
+ return HMSCodec.H264
165
+ }
166
+ }
167
+
168
+ static func getCameraFacing(_ cameraFacing: String) -> HMSCameraFacing {
169
+ switch cameraFacing {
170
+ case "FRONT":
171
+ return HMSCameraFacing.front
172
+ case "BACK":
173
+ return HMSCameraFacing.back
174
+ default:
175
+ return HMSCameraFacing.front
176
+ }
177
+ }
178
+
179
+ static func getRtmpUrls(_ strings: [String]?) -> [URL]? {
180
+ if let extractedStrings = strings {
181
+ var arr: [URL] = []
182
+ for urlString in extractedStrings {
183
+ let urlInstance = URL(string: urlString)
184
+ if let urlExtracted = urlInstance {
185
+ arr.append(urlExtracted)
186
+ }
187
+ }
188
+ return arr
189
+ } else {
190
+ return nil
191
+ }
192
+ }
101
193
  }
package/ios/HmsManager.m CHANGED
@@ -20,8 +20,12 @@ RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data)
20
20
  RCT_EXTERN_METHOD(isMute: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
21
21
  RCT_EXTERN_METHOD(getRoom: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
22
22
  RCT_EXTERN_METHOD(switchCamera: (NSDictionary) data)
23
- RCT_EXTERN_METHOD(build :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
23
+ RCT_EXTERN_METHOD(setVolume: (NSDictionary) data)
24
+ RCT_EXTERN_METHOD(build : (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
24
25
  RCT_EXTERN_METHOD(leave: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
25
26
  RCT_EXTERN_METHOD(muteAllPeersAudio: (NSDictionary) mute)
26
27
  RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
28
+ RCT_EXTERN_METHOD(changeMetadata: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
29
+ RCT_EXTERN_METHOD(startRTMPOrRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
30
+ RCT_EXTERN_METHOD(stopRtmpAndRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
27
31
  @end
@@ -26,9 +26,9 @@ class HmsManager: RCTEventEmitter{
26
26
  super.init()
27
27
  }
28
28
 
29
- override class func requiresMainQueueSetup() -> Bool {
30
- true
31
- }
29
+ // override class func requiresMainQueueSetup() -> Bool {
30
+ // true
31
+ // }
32
32
 
33
33
  override func supportedEvents() -> [String]! {
34
34
  return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM]
@@ -38,19 +38,19 @@ class HmsManager: RCTEventEmitter{
38
38
  // MARK: - HMS SDK Actions
39
39
 
40
40
  @objc
41
- func build(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
41
+ func build(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
42
42
  DispatchQueue.main.async { [weak self] in
43
43
  let hasItem = self?.hmsCollection.index(forKey: "12345")
44
44
 
45
45
  if let _ = hasItem {
46
46
  let id = UUID().uuidString
47
- let hms = HmsSDK(delegate: self, uid: id)
47
+ let hms = HmsSDK(data: data, delegate: self, uid: id)
48
48
  self?.hmsCollection[id] = hms
49
49
 
50
50
  resolve?(id)
51
51
  } else {
52
52
  let id = "12345"
53
- let hms = HmsSDK(delegate: self, uid: id)
53
+ let hms = HmsSDK(data: data, delegate: self, uid: id)
54
54
  self?.hmsCollection[id] = hms
55
55
 
56
56
  resolve?(id)
@@ -208,4 +208,39 @@ class HmsManager: RCTEventEmitter{
208
208
 
209
209
  hms?.muteAllPeersAudio(data)
210
210
  }
211
+
212
+ @objc
213
+ func changeMetadata(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
214
+ let hms = HmsHelper.getHms(data, hmsCollection)
215
+
216
+ hms?.changeMetadata(data, resolve, reject)
217
+ }
218
+
219
+ @objc
220
+ func setVolume(_ data: NSDictionary) {
221
+ let hms = HmsHelper.getHms(data, hmsCollection)
222
+
223
+ hms?.setVolume(data)
224
+ }
225
+
226
+ @objc
227
+ func startRTMPOrRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
228
+ let hms = HmsHelper.getHms(data, hmsCollection)
229
+
230
+ hms?.startRTMPOrRecording(data, resolve, reject)
231
+ }
232
+
233
+ @objc
234
+ func stopRtmpAndRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
235
+ let hms = HmsHelper.getHms(data, hmsCollection)
236
+
237
+ hms?.stopRtmpAndRecording(resolve, reject)
238
+ }
239
+
240
+ // @objc
241
+ // func setLocalVideoSettings(_ data: NSDictionary) {
242
+ // let hms = HmsHelper.getHms(data, hmsCollection)
243
+ //
244
+ // hms?.setLocalVideoSettings(data)
245
+ // }
211
246
  }