@100mslive/react-native-hms 0.7.2 → 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 (196) 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/.project +34 -0
  6. package/android/build.gradle +1 -1
  7. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +129 -29
  8. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +124 -2
  9. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +138 -495
  10. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +899 -0
  11. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +26 -8
  12. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +8 -6
  13. package/ios/HmsDecoder.swift +142 -20
  14. package/ios/HmsHelper.swift +110 -0
  15. package/ios/HmsManager.m +13 -7
  16. package/ios/HmsManager.swift +115 -375
  17. package/ios/HmsSDK.swift +716 -0
  18. package/ios/HmsView.swift +16 -8
  19. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
  21. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  22. package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
  23. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
  24. package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
  25. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
  26. package/lib/commonjs/classes/HMSConfig.js +3 -7
  27. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  28. package/lib/commonjs/classes/HMSEncoder.js +60 -32
  29. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  30. package/lib/commonjs/classes/HMSException.js +30 -0
  31. package/lib/commonjs/classes/HMSException.js.map +1 -0
  32. package/lib/commonjs/classes/HMSHelper.js +2 -2
  33. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  34. package/lib/commonjs/classes/HMSLocalAudioTrack.js +19 -1
  35. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  36. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  37. package/lib/commonjs/classes/HMSLocalVideoTrack.js +10 -2
  38. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  39. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  40. package/lib/commonjs/classes/HMSPeer.js +3 -0
  41. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  42. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
  43. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  44. package/lib/commonjs/classes/HMSPermissions.js +7 -7
  45. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  46. package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
  47. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
  48. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +2 -0
  49. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  50. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  51. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +2 -0
  52. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  53. package/lib/commonjs/classes/HMSRoom.js +9 -0
  54. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  55. package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
  56. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
  57. package/lib/commonjs/classes/HMSSDK.js +336 -109
  58. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  59. package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
  60. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
  61. package/lib/commonjs/classes/HMSTrack.js +8 -18
  62. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  63. package/lib/commonjs/classes/HMSTrackType.js +14 -0
  64. package/lib/commonjs/classes/HMSTrackType.js.map +1 -0
  65. package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
  66. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
  67. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  68. package/lib/commonjs/classes/HMSVideoTrack.js +2 -0
  69. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  70. package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
  71. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  72. package/lib/commonjs/classes/HmsView.js +10 -7
  73. package/lib/commonjs/classes/HmsView.js.map +1 -1
  74. package/lib/commonjs/index.js +98 -0
  75. package/lib/commonjs/index.js.map +1 -1
  76. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  77. package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
  78. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  79. package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
  80. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
  81. package/lib/module/classes/HMSCameraFacing.js +7 -0
  82. package/lib/module/classes/HMSCameraFacing.js.map +1 -0
  83. package/lib/module/classes/HMSConfig.js +3 -7
  84. package/lib/module/classes/HMSConfig.js.map +1 -1
  85. package/lib/module/classes/HMSEncoder.js +59 -32
  86. package/lib/module/classes/HMSEncoder.js.map +1 -1
  87. package/lib/module/classes/HMSException.js +21 -0
  88. package/lib/module/classes/HMSException.js.map +1 -0
  89. package/lib/module/classes/HMSHelper.js +2 -2
  90. package/lib/module/classes/HMSHelper.js.map +1 -1
  91. package/lib/module/classes/HMSLocalAudioTrack.js +20 -2
  92. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  93. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  94. package/lib/module/classes/HMSLocalVideoTrack.js +10 -2
  95. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  96. package/lib/module/classes/HMSLogger.js.map +1 -1
  97. package/lib/module/classes/HMSPeer.js +3 -0
  98. package/lib/module/classes/HMSPeer.js.map +1 -1
  99. package/lib/module/classes/HMSPeerUpdate.js +1 -0
  100. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  101. package/lib/module/classes/HMSPermissions.js +7 -7
  102. package/lib/module/classes/HMSPermissions.js.map +1 -1
  103. package/lib/module/classes/HMSRTMPConfig.js +17 -0
  104. package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
  105. package/lib/module/classes/HMSRemoteAudioTrack.js +2 -0
  106. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  107. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  108. package/lib/module/classes/HMSRemoteVideoTrack.js +2 -0
  109. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  110. package/lib/module/classes/HMSRoom.js +9 -0
  111. package/lib/module/classes/HMSRoom.js.map +1 -1
  112. package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
  113. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
  114. package/lib/module/classes/HMSSDK.js +328 -109
  115. package/lib/module/classes/HMSSDK.js.map +1 -1
  116. package/lib/module/classes/HMSServerRecordingState.js +14 -0
  117. package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
  118. package/lib/module/classes/HMSTrack.js +8 -16
  119. package/lib/module/classes/HMSTrack.js.map +1 -1
  120. package/lib/module/classes/HMSTrackType.js +7 -0
  121. package/lib/module/classes/HMSTrackType.js.map +1 -0
  122. package/lib/module/classes/HMSVideoResolution.js +14 -0
  123. package/lib/module/classes/HMSVideoResolution.js.map +1 -0
  124. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  125. package/lib/module/classes/HMSVideoTrack.js +2 -0
  126. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  127. package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
  128. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  129. package/lib/module/classes/HmsView.js +10 -7
  130. package/lib/module/classes/HmsView.js.map +1 -1
  131. package/lib/module/index.js +7 -0
  132. package/lib/module/index.js.map +1 -1
  133. package/lib/typescript/classes/HMSAudioTrack.d.ts +3 -0
  134. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
  135. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
  136. package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
  137. package/lib/typescript/classes/HMSConfig.d.ts +2 -4
  138. package/lib/typescript/classes/HMSEncoder.d.ts +14 -12
  139. package/lib/typescript/classes/HMSException.d.ts +22 -0
  140. package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +5 -0
  141. package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -0
  142. package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +4 -0
  143. package/lib/typescript/classes/HMSLogger.d.ts +4 -4
  144. package/lib/typescript/classes/HMSPeer.d.ts +2 -0
  145. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  146. package/lib/typescript/classes/HMSPermissions.d.ts +6 -6
  147. package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
  148. package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +4 -0
  149. package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -0
  150. package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +4 -0
  151. package/lib/typescript/classes/HMSRoom.d.ts +9 -0
  152. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
  153. package/lib/typescript/classes/HMSSDK.d.ts +36 -6
  154. package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
  155. package/lib/typescript/classes/HMSTrack.d.ts +6 -1
  156. package/lib/typescript/classes/HMSTrackType.d.ts +4 -0
  157. package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
  158. package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
  159. package/lib/typescript/classes/HMSVideoTrack.d.ts +5 -1
  160. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
  161. package/lib/typescript/classes/HmsView.d.ts +2 -1
  162. package/lib/typescript/index.d.ts +7 -0
  163. package/package.json +1 -1
  164. package/src/classes/HMSAudioTrack.ts +3 -0
  165. package/src/classes/HMSAudioTrackSettings.ts +9 -1
  166. package/src/classes/HMSBrowserRecordingState.ts +11 -0
  167. package/src/classes/HMSCameraFacing.ts +4 -0
  168. package/src/classes/HMSConfig.ts +3 -7
  169. package/src/classes/HMSEncoder.ts +62 -28
  170. package/src/classes/HMSException.ts +33 -0
  171. package/src/classes/HMSHelper.ts +2 -2
  172. package/src/classes/HMSLocalAudioTrack.ts +19 -2
  173. package/src/classes/HMSLocalPeer.ts +3 -0
  174. package/src/classes/HMSLocalVideoTrack.ts +7 -2
  175. package/src/classes/HMSLogger.ts +5 -5
  176. package/src/classes/HMSPeer.ts +3 -0
  177. package/src/classes/HMSPeerUpdate.ts +1 -0
  178. package/src/classes/HMSPermissions.ts +9 -9
  179. package/src/classes/HMSRTMPConfig.ts +15 -0
  180. package/src/classes/HMSRemoteAudioTrack.ts +13 -2
  181. package/src/classes/HMSRemotePeer.ts +3 -0
  182. package/src/classes/HMSRemoteVideoTrack.ts +13 -2
  183. package/src/classes/HMSRoom.ts +12 -0
  184. package/src/classes/HMSRtmpStreamingState.ts +11 -0
  185. package/src/classes/{HMSSDK.ts → HMSSDK.tsx} +284 -42
  186. package/src/classes/HMSServerRecordingState.ts +11 -0
  187. package/src/classes/HMSTrack.ts +9 -15
  188. package/src/classes/HMSTrackType.ts +4 -0
  189. package/src/classes/HMSVideoResolution.ts +9 -0
  190. package/src/classes/HMSVideoSettings.ts +3 -3
  191. package/src/classes/HMSVideoTrack.ts +6 -1
  192. package/src/classes/HMSVideoTrackSettings.ts +13 -10
  193. package/src/classes/HmsView.tsx +4 -0
  194. package/src/index.ts +7 -0
  195. package/ios/Hmssdk.m +0 -8
  196. package/ios/Hmssdk.swift +0 -8
@@ -2,8 +2,9 @@ package com.reactnativehmssdk
2
2
 
3
3
  import android.widget.FrameLayout
4
4
  import com.facebook.react.bridge.ReactContext
5
+ import live.hms.video.media.tracks.HMSTrackSource
6
+ import live.hms.video.media.tracks.HMSTrackType
5
7
  import live.hms.video.media.tracks.HMSVideoTrack
6
- import live.hms.video.sdk.HMSSDK
7
8
  import live.hms.video.utils.SharedEglContext
8
9
  import org.webrtc.RendererCommon
9
10
  import org.webrtc.SurfaceViewRenderer
@@ -54,18 +55,32 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
54
55
  }
55
56
  }
56
57
 
57
- fun setData(trackId: String?, sink: Boolean?,mirror: Boolean?, hms: HMSSDK?) {
58
- if (trackId != null) {
59
- localTrack = trackId
58
+ fun setData(
59
+ id: String?,
60
+ trackId: String?,
61
+ sink: Boolean?,
62
+ hmsCollection: MutableMap<String, HmsSDK>,
63
+ mirror: Boolean?
64
+ ) {
65
+ var sdkId: String = "12345"
66
+
67
+ if (id != null) {
68
+ sdkId = id
69
+ }
70
+
71
+ val hms = hmsCollection[sdkId]?.hmsSDK
72
+
73
+ if (trackId != null && hms != null) {
60
74
  if (mirror != null) {
61
75
  surfaceView.setMirror(mirror)
62
76
  }
63
- val localTrackId = hms?.getLocalPeer()?.videoTrack?.trackId
77
+ localTrack = trackId
78
+ val localTrackId = hms.getLocalPeer()?.videoTrack?.trackId
64
79
  if (localTrackId == localTrack) {
65
- videoTrack = hms?.getLocalPeer()?.videoTrack
80
+ videoTrack = hms.getLocalPeer()?.videoTrack
66
81
  }
67
82
 
68
- val remotePeers = hms?.getRemotePeers()
83
+ val remotePeers = hms.getRemotePeers()
69
84
  if (remotePeers !== null) {
70
85
  for (peer in remotePeers) {
71
86
  val videoTrackId = peer.videoTrack?.trackId
@@ -73,7 +88,10 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
73
88
  val auxiliaryTracks = peer.auxiliaryTracks
74
89
  for (track in auxiliaryTracks) {
75
90
  val auxTrackId = track.trackId
76
- if (trackId == auxTrackId && track.source == "screen" && !track.isMute) {
91
+ if (trackId == auxTrackId &&
92
+ track.type == HMSTrackType.VIDEO &&
93
+ !track.isMute
94
+ ) {
77
95
  videoTrack = track as HMSVideoTrack
78
96
  return
79
97
  }
@@ -4,7 +4,6 @@ import com.facebook.react.bridge.ReadableMap
4
4
  import com.facebook.react.uimanager.SimpleViewManager
5
5
  import com.facebook.react.uimanager.ThemedReactContext
6
6
  import com.facebook.react.uimanager.annotations.ReactProp
7
- import live.hms.video.sdk.HMSSDK
8
7
 
9
8
  class HmssdkViewManager : SimpleViewManager<HmsView>() {
10
9
 
@@ -28,10 +27,13 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
28
27
  fun setData(view: HmsView, data: ReadableMap) {
29
28
  val trackId = data.getString("trackId")
30
29
  val sink = data.getBoolean("sink")
30
+ val id = data.getString("id")
31
31
  val mirror = data.getBoolean("mirror")
32
32
 
33
- val hms = getHms()
34
- view.setData(trackId, sink, mirror, hms)
33
+ val hmsCollection = getHms()
34
+ if (hmsCollection != null) {
35
+ view.setData(id, trackId, sink, hmsCollection, mirror)
36
+ }
35
37
  // do the processing here
36
38
  }
37
39
 
@@ -40,9 +42,9 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
40
42
  view.updateScaleType(data)
41
43
  }
42
44
 
43
- private fun getHms(): HMSSDK? {
44
- val hms = reactContext?.getNativeModule(HmsModule::class.java)?.getHmsInstance()
45
- return hms
45
+ private fun getHms(): MutableMap<String, HmsSDK>? {
46
+ val hmsCollection = reactContext?.getNativeModule(HmsModule::class.java)?.getHmsInstance()
47
+ return hmsCollection
46
48
  }
47
49
 
48
50
  companion object {
@@ -6,16 +6,19 @@ class HmsDecoder: NSObject {
6
6
 
7
7
  guard let room = hmsRoom else { return [:] }
8
8
 
9
- let id = room.roomID
10
- let name = room.name
9
+ let id = room.roomID ?? ""
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] {
@@ -24,7 +27,8 @@ class HmsDecoder: NSObject {
24
27
  let name = peer.name
25
28
  let isLocal = peer.isLocal
26
29
  let customerUserID = peer.customerUserID ?? ""
27
- let customerDescription = peer.customerDescription ?? ""
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,
@@ -54,8 +59,9 @@ class HmsDecoder: NSObject {
54
59
  let source = hmsTrack.source
55
60
  let trackDescription = hmsTrack.trackDescription
56
61
  let isMute = hmsTrack.isMute()
62
+ let type = HmsHelper.getHmsTrackType(hmsTrack.kind)
57
63
 
58
- return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
64
+ return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": type]
59
65
  }
60
66
 
61
67
  static func getHmsAudioTrack (_ hmsAudioTrack: HMSAudioTrack?) -> [String: Any] {
@@ -78,8 +84,9 @@ class HmsDecoder: NSObject {
78
84
  let source = hmsTrack.source
79
85
  let trackDescription = hmsTrack.trackDescription
80
86
  let isMute = hmsTrack.isMute()
87
+ let isDegraded = hmsTrack.isDegraded()
81
88
 
82
- return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
89
+ return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "isDegraded": isDegraded]
83
90
  }
84
91
 
85
92
  static func getHmsLocalPeer(_ hmsLocalPeer: HMSLocalPeer?) -> [String: Any] {
@@ -90,7 +97,8 @@ class HmsDecoder: NSObject {
90
97
  let name = peer.name
91
98
  let isLocal = peer.isLocal
92
99
  let customerUserID = peer.customerUserID ?? ""
93
- let customerDescription = peer.customerDescription ?? ""
100
+ let customerDescription = peer.metadata ?? ""
101
+ let metadata = peer.metadata ?? ""
94
102
  let audioTrack = getHmsAudioTrack(peer.audioTrack)
95
103
  let videoTrack = getHmsVideoTrack(peer.videoTrack)
96
104
  let role = getHmsRole(peer.role)
@@ -113,7 +121,7 @@ class HmsDecoder: NSObject {
113
121
  localVideoTrackData = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute":localAudioTrack?.isMute() ?? false]
114
122
  }
115
123
 
116
- 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]
117
125
  }
118
126
 
119
127
  static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
@@ -130,11 +138,11 @@ class HmsDecoder: NSObject {
130
138
 
131
139
  guard let settings = hmsVideoTrackSettings else { return [:] }
132
140
 
133
- let codec = settings.codec.rawValue
134
- let resolution = settings.resolution
141
+ let codec = getHmsVideoTrackCodec(settings.codec)
142
+ let resolution = getHmsVideoResolution(settings.resolution)
135
143
  let maxBitrate = settings.maxBitrate
136
144
  let maxFrameRate = settings.maxFrameRate
137
- let cameraFacing = settings.cameraFacing.rawValue
145
+ let cameraFacing = getHmsVideoTrackCameraFacing(settings.cameraFacing)
138
146
  let trackDescription = settings.trackDescription ?? ""
139
147
 
140
148
  var simulcastSettingsData = [[String: Any]]()
@@ -151,6 +159,34 @@ class HmsDecoder: NSObject {
151
159
  return ["codec": codec, "resolution": resolution, "maxBitrate": maxBitrate, "maxFrameRate": maxFrameRate, "cameraFacing": cameraFacing, "trackDescription": trackDescription, "simulcastSettings": simulcastSettingsData]
152
160
  }
153
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
+
154
190
  static func getHmsRemotePeers (_ remotePeers: [HMSRemotePeer]?) -> [[String: Any]] {
155
191
  guard let remotePeers = remotePeers else { return [[:]] }
156
192
 
@@ -169,7 +205,8 @@ class HmsDecoder: NSObject {
169
205
  let name = hmsRemotePeer.name
170
206
  let isLocal = hmsRemotePeer.isLocal
171
207
  let customerUserID = hmsRemotePeer.customerUserID ?? ""
172
- let customerDescription = hmsRemotePeer.customerDescription ?? ""
208
+ let customerDescription = hmsRemotePeer.metadata ?? ""
209
+ let metadata = hmsRemotePeer.metadata ?? ""
173
210
  let audioTrack = getHmsAudioTrack(hmsRemotePeer.audioTrack)
174
211
  let videoTrack = getHmsVideoTrack(hmsRemotePeer.videoTrack)
175
212
  let role = getHmsRole(hmsRemotePeer.role)
@@ -193,7 +230,7 @@ class HmsDecoder: NSObject {
193
230
  remoteVideoTrackData = ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute()]
194
231
  }
195
232
 
196
- 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]
197
234
  }
198
235
 
199
236
  static func getPreviewTracks(_ tracks: [HMSTrack]) -> [String: Any] {
@@ -265,7 +302,12 @@ class HmsDecoder: NSObject {
265
302
  let screen = getHmsVideoSettings(publishSettings.screen)
266
303
  let videoSimulcastLayers = getHmsSimulcastLayers(publishSettings.videoSimulcastLayers)
267
304
  let screenSimulcastLayers = getHmsSimulcastLayers(publishSettings.screenSimulcastLayers)
268
- let allowed = publishSettings.allowed ?? []
305
+ var allowed = publishSettings.allowed ?? []
306
+ if((publishSettings.allowed) != nil) {
307
+ allowed = getWriteableArray(publishSettings.allowed)
308
+ }else {
309
+ allowed = []
310
+ }
269
311
 
270
312
  return ["audio": audio,
271
313
  "video": video,
@@ -274,6 +316,16 @@ class HmsDecoder: NSObject {
274
316
  "screenSimulcastLayers": screenSimulcastLayers,
275
317
  "allowed": allowed]
276
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
+ }
277
329
 
278
330
  static func getHmsAudioSettings(_ audioSettings: HMSAudioSettings) -> [String: Any] {
279
331
  let bitRate = audioSettings.bitRate
@@ -325,18 +377,88 @@ class HmsDecoder: NSObject {
325
377
  return layersSettingsPolicy
326
378
  }
327
379
 
328
- static func getHmsRoleChangeRequest(_ roleChangeRequest: HMSRoleChangeRequest) -> [String: Any] {
380
+ static func getHmsRoleChangeRequest(_ roleChangeRequest: HMSRoleChangeRequest, _ id: String?) -> [String: Any] {
329
381
 
330
- let requestedBy = getHmsPeer(roleChangeRequest.requestedBy)
331
- let suggestedRole = getHmsRole(roleChangeRequest.suggestedRole)
382
+ if let sdkId = id {
383
+ var requestedBy: [String: Any]?
384
+ if let peer = roleChangeRequest.requestedBy {
385
+ requestedBy = getHmsPeer(peer)
386
+ }
387
+
388
+ let suggestedRole = getHmsRole(roleChangeRequest.suggestedRole)
389
+
390
+ var request = ["suggestedRole": suggestedRole, "id": sdkId] as [String : Any]
391
+ if let requestedBy = requestedBy {
392
+ request["requestedBy"] = requestedBy
393
+ }
394
+ return request
395
+ }
332
396
 
333
- return ["requestedBy": requestedBy, "suggestedRole": suggestedRole]
397
+ return [:]
334
398
  }
335
399
 
336
400
  static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest) -> [String: Any] {
337
- let requestedBy = getHmsPeer(changeTrackStateRequest.requestedBy)
401
+ var requestedBy: [String: Any]?
402
+ if let peer = changeTrackStateRequest.requestedBy {
403
+ requestedBy = getHmsPeer(peer)
404
+ }
338
405
  let trackType = changeTrackStateRequest.track.kind == .video ? "video" : "audio"
339
406
 
340
- return ["requestedBy": requestedBy, "trackType": trackType]
407
+ var request = ["trackType": trackType] as [String: Any]
408
+ if let requestedBy = requestedBy {
409
+ request["requestedBy"] = requestedBy
410
+ }
411
+
412
+ return request
413
+ }
414
+
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
+ }
341
463
  }
342
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 {
@@ -62,6 +78,15 @@ class HmsHelper: NSObject {
62
78
  return nil
63
79
  }
64
80
 
81
+ static func getHmsTrackType(_ kind: HMSTrackKind?) -> String? {
82
+ if(kind == HMSTrackKind.video){
83
+ return "VIDEO"
84
+ }else if(kind == HMSTrackKind.audio){
85
+ return "AUDIO"
86
+ }
87
+ return nil
88
+ }
89
+
65
90
  static func getTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSTrack? {
66
91
 
67
92
  for peer in remotePeers ?? [] {
@@ -80,4 +105,89 @@ class HmsHelper: NSObject {
80
105
 
81
106
  return nil
82
107
  }
108
+
109
+ static func getHms(_ credentials: NSDictionary, _ hmsCollection: [String: HmsSDK]) -> HmsSDK? {
110
+ guard let id = credentials.value(forKey: "id") as? String,
111
+ let hms = hmsCollection[id]
112
+ else {
113
+ return nil
114
+ }
115
+ return hms
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
+ }
83
193
  }
package/ios/HmsManager.m CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  RCT_EXTERN_METHOD(join: (NSDictionary) credentials)
7
7
  RCT_EXTERN_METHOD(preview: (NSDictionary) credentials)
8
- RCT_EXTERN_METHOD(setLocalMute: (BOOL) isMute)
9
- RCT_EXTERN_METHOD(setLocalVideoMute: (BOOL) isMute)
8
+ RCT_EXTERN_METHOD(setLocalMute: (NSDictionary) isMute)
9
+ RCT_EXTERN_METHOD(setLocalVideoMute: (NSDictionary) isMute)
10
10
  RCT_EXTERN_METHOD(sendBroadcastMessage: (NSDictionary) data)
11
11
  RCT_EXTERN_METHOD(sendGroupMessage: (NSDictionary) data)
12
12
  RCT_EXTERN_METHOD(sendDirectMessage: (NSDictionary) data)
@@ -15,11 +15,17 @@ RCT_EXTERN_METHOD(removePeer: (NSDictionary) data)
15
15
  RCT_EXTERN_METHOD(endRoom: (NSDictionary) data)
16
16
  RCT_EXTERN_METHOD(changeRole: (NSDictionary) data)
17
17
  RCT_EXTERN_METHOD(changeTrackState: (NSDictionary) data)
18
- RCT_EXTERN_METHOD(acceptRoleChange)
18
+ RCT_EXTERN_METHOD(changeTrackStateRoles: (NSDictionary) data)
19
+ RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data)
19
20
  RCT_EXTERN_METHOD(isMute: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
21
+ RCT_EXTERN_METHOD(getRoom: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
22
+ RCT_EXTERN_METHOD(switchCamera: (NSDictionary) data)
23
+ RCT_EXTERN_METHOD(setVolume: (NSDictionary) data)
24
+ RCT_EXTERN_METHOD(build : (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
25
+ RCT_EXTERN_METHOD(leave: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
26
+ RCT_EXTERN_METHOD(muteAllPeersAudio: (NSDictionary) mute)
20
27
  RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
21
- RCT_EXTERN_METHOD(switchCamera)
22
- RCT_EXTERN_METHOD(build)
23
- RCT_EXTERN_METHOD(leave)
24
- RCT_EXTERN_METHOD(muteAllPeersAudio: (BOOL) mute)
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)
25
31
  @end