@100mslive/react-native-hms 0.8.4 → 0.9.2

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 (201) hide show
  1. package/README.md +247 -26
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/.idea/gradle.xml +13 -0
  10. package/android/.idea/misc.xml +9 -0
  11. package/android/.idea/modules/android.iml +18 -0
  12. package/android/.idea/modules.xml +8 -0
  13. package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
  14. package/android/.idea/sonarlint/issuestore/index.pb +3 -0
  15. package/android/.idea/vcs.xml +6 -0
  16. package/android/build.gradle +4 -2
  17. package/android/local.properties +8 -0
  18. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +67 -5
  19. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +67 -64
  20. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +97 -6
  21. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +302 -118
  22. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +77 -0
  23. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +28 -3
  24. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +10 -1
  25. package/android/src/main/res/layout/hms_view.xml +19 -0
  26. package/ios/HmsDecoder.swift +250 -123
  27. package/ios/HmsHelper.swift +70 -38
  28. package/ios/HmsManager.m +11 -3
  29. package/ios/HmsManager.swift +123 -66
  30. package/ios/HmsSDK.swift +384 -195
  31. package/ios/HmsView.swift +50 -68
  32. package/ios/VideoCollectionViewCell.swift +4 -4
  33. package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
  34. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  35. package/lib/commonjs/classes/HMSEncoder.js +180 -3
  36. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  37. package/lib/commonjs/classes/HMSHLSConfig.js +23 -0
  38. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -0
  39. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +23 -0
  40. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  41. package/lib/commonjs/classes/HMSHLSRecordingConfig.js +23 -0
  42. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -0
  43. package/lib/commonjs/classes/HMSHLSRecordingState.js +29 -0
  44. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -0
  45. package/lib/commonjs/classes/HMSHLSStreamingState.js +23 -0
  46. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -0
  47. package/lib/commonjs/classes/HMSHLSVariant.js +29 -0
  48. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -0
  49. package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
  50. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
  51. package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
  52. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
  53. package/lib/commonjs/classes/HMSLogger.js +48 -21
  54. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  55. package/lib/commonjs/classes/HMSMessage.js +4 -1
  56. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  57. package/lib/commonjs/classes/HMSMessageRecipient.js +26 -0
  58. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -0
  59. package/lib/commonjs/classes/HMSMessageRecipientType.js +15 -0
  60. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -0
  61. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -7
  62. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  63. package/lib/commonjs/classes/HMSPermissions.js +2 -2
  64. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  65. package/lib/commonjs/classes/HMSRTCStats.js +38 -0
  66. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
  67. package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
  68. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
  69. package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
  70. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
  71. package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
  72. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
  73. package/lib/commonjs/classes/HMSRoom.js +9 -0
  74. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  75. package/lib/commonjs/classes/HMSRoomUpdate.js +7 -0
  76. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  77. package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
  78. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  79. package/lib/commonjs/classes/HMSSDK.js +488 -114
  80. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  81. package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
  82. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  83. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
  84. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  85. package/lib/commonjs/classes/HmsView.js +26 -4
  86. package/lib/commonjs/classes/HmsView.js.map +1 -1
  87. package/lib/commonjs/index.js +196 -0
  88. package/lib/commonjs/index.js.map +1 -1
  89. package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
  90. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  91. package/lib/module/classes/HMSEncoder.js +172 -3
  92. package/lib/module/classes/HMSEncoder.js.map +1 -1
  93. package/lib/module/classes/HMSHLSConfig.js +14 -0
  94. package/lib/module/classes/HMSHLSConfig.js.map +1 -0
  95. package/lib/module/classes/HMSHLSMeetingURLVariant.js +14 -0
  96. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  97. package/lib/module/classes/HMSHLSRecordingConfig.js +14 -0
  98. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -0
  99. package/lib/module/classes/HMSHLSRecordingState.js +20 -0
  100. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -0
  101. package/lib/module/classes/HMSHLSStreamingState.js +14 -0
  102. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -0
  103. package/lib/module/classes/HMSHLSVariant.js +20 -0
  104. package/lib/module/classes/HMSHLSVariant.js.map +1 -0
  105. package/lib/module/classes/HMSLocalAudioStats.js +17 -0
  106. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
  107. package/lib/module/classes/HMSLocalVideoStats.js +23 -0
  108. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
  109. package/lib/module/classes/HMSLogger.js +48 -21
  110. package/lib/module/classes/HMSLogger.js.map +1 -1
  111. package/lib/module/classes/HMSMessage.js +4 -1
  112. package/lib/module/classes/HMSMessage.js.map +1 -1
  113. package/lib/module/classes/HMSMessageRecipient.js +17 -0
  114. package/lib/module/classes/HMSMessageRecipient.js.map +1 -0
  115. package/lib/module/classes/HMSMessageRecipientType.js +8 -0
  116. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -0
  117. package/lib/module/classes/HMSPeerUpdate.js +1 -7
  118. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  119. package/lib/module/classes/HMSPermissions.js +2 -2
  120. package/lib/module/classes/HMSPermissions.js.map +1 -1
  121. package/lib/module/classes/HMSRTCStats.js +29 -0
  122. package/lib/module/classes/HMSRTCStats.js.map +1 -0
  123. package/lib/module/classes/HMSRTCStatsReport.js +17 -0
  124. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
  125. package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
  126. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
  127. package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
  128. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
  129. package/lib/module/classes/HMSRoom.js +9 -0
  130. package/lib/module/classes/HMSRoom.js.map +1 -1
  131. package/lib/module/classes/HMSRoomUpdate.js +7 -0
  132. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  133. package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
  134. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  135. package/lib/module/classes/HMSSDK.js +476 -115
  136. package/lib/module/classes/HMSSDK.js.map +1 -1
  137. package/lib/module/classes/HMSServerRecordingState.js +3 -0
  138. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  139. package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
  140. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  141. package/lib/module/classes/HmsView.js +23 -4
  142. package/lib/module/classes/HmsView.js.map +1 -1
  143. package/lib/module/index.js +14 -0
  144. package/lib/module/index.js.map +1 -1
  145. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
  146. package/lib/typescript/classes/HMSEncoder.d.ts +23 -0
  147. package/lib/typescript/classes/HMSHLSConfig.d.ts +10 -0
  148. package/lib/typescript/classes/HMSHLSMeetingURLVariant.d.ts +8 -0
  149. package/lib/typescript/classes/HMSHLSRecordingConfig.d.ts +8 -0
  150. package/lib/typescript/classes/HMSHLSRecordingState.d.ts +12 -0
  151. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +9 -0
  152. package/lib/typescript/classes/HMSHLSVariant.d.ts +12 -0
  153. package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
  154. package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
  155. package/lib/typescript/classes/HMSLogger.d.ts +2 -0
  156. package/lib/typescript/classes/HMSMessage.d.ts +8 -4
  157. package/lib/typescript/classes/HMSMessageRecipient.d.ts +13 -0
  158. package/lib/typescript/classes/HMSMessageRecipientType.d.ts +5 -0
  159. package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -8
  160. package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
  161. package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
  162. package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
  163. package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
  164. package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
  165. package/lib/typescript/classes/HMSRoom.d.ts +8 -0
  166. package/lib/typescript/classes/HMSRoomUpdate.d.ts +8 -1
  167. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
  168. package/lib/typescript/classes/HMSSDK.d.ts +325 -14
  169. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
  170. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
  171. package/lib/typescript/index.d.ts +14 -0
  172. package/package.json +1 -2
  173. package/react-native-hms.podspec +1 -1
  174. package/src/classes/HMSBrowserRecordingState.ts +10 -1
  175. package/src/classes/HMSEncoder.ts +193 -3
  176. package/src/classes/HMSHLSConfig.ts +15 -0
  177. package/src/classes/HMSHLSMeetingURLVariant.ts +9 -0
  178. package/src/classes/HMSHLSRecordingConfig.ts +9 -0
  179. package/src/classes/HMSHLSRecordingState.ts +18 -0
  180. package/src/classes/HMSHLSStreamingState.ts +11 -0
  181. package/src/classes/HMSHLSVariant.ts +18 -0
  182. package/src/classes/HMSLocalAudioStats.ts +15 -0
  183. package/src/classes/HMSLocalVideoStats.ts +23 -0
  184. package/src/classes/HMSLogger.ts +17 -3
  185. package/src/classes/HMSMessage.ts +11 -5
  186. package/src/classes/HMSMessageRecipient.ts +19 -0
  187. package/src/classes/HMSMessageRecipientType.ts +5 -0
  188. package/src/classes/HMSPeerUpdate.ts +1 -7
  189. package/src/classes/HMSPermissions.ts +3 -3
  190. package/src/classes/HMSRTCStats.ts +27 -0
  191. package/src/classes/HMSRTCStatsReport.ts +17 -0
  192. package/src/classes/HMSRemoteAudioStats.ts +21 -0
  193. package/src/classes/HMSRemoteVideoStats.ts +29 -0
  194. package/src/classes/HMSRoom.ts +11 -0
  195. package/src/classes/HMSRoomUpdate.ts +7 -0
  196. package/src/classes/HMSRtmpStreamingState.ts +10 -1
  197. package/src/classes/HMSSDK.tsx +618 -30
  198. package/src/classes/HMSServerRecordingState.ts +7 -1
  199. package/src/classes/HMSUpdateListenerActions.ts +5 -0
  200. package/src/classes/HmsView.tsx +32 -4
  201. package/src/index.ts +14 -0
@@ -2,58 +2,55 @@ import HMSSDK
2
2
  import Foundation
3
3
 
4
4
  class HmsHelper: NSObject {
5
-
5
+
6
6
  static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
7
7
 
8
8
  guard let peerID = peerID, let peers = remotePeers else { return nil }
9
- if(peerID == localPeer?.peerID) {
9
+ if peerID == localPeer?.peerID {
10
10
  return localPeer
11
11
  }
12
12
  return peers.first { $0.peerID == peerID }
13
13
  }
14
14
 
15
-
16
15
  static func getRemotePeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
17
-
16
+
18
17
  guard let peerID = peerID, let peers = remotePeers else { return nil }
19
18
 
20
19
  return peers.first { $0.peerID == peerID }
21
20
  }
22
-
23
-
21
+
24
22
  static func getRolesFromRoleNames(_ targetedRoles: [String]?, roles: [HMSRole]?) -> [HMSRole] {
25
23
 
26
24
  guard let roles = roles,
27
25
  let targetedRoles = targetedRoles
28
26
  else { return [HMSRole]() }
29
-
27
+
30
28
  return roles.filter { targetedRoles.contains($0.name) }
31
29
  }
32
-
33
-
30
+
34
31
  static func getRoleFromRoleName(_ role: String?, roles: [HMSRole]?) -> HMSRole? {
35
-
32
+
36
33
  guard let roles = roles, let roleName = role else { return nil }
37
-
34
+
38
35
  return roles.first { $0.name == roleName }
39
36
  }
40
-
37
+
41
38
  static func getLocalTrackFromTrackId(_ trackID: String?, localPeer: HMSLocalPeer?) -> HMSTrack? {
42
39
  if localPeer?.videoTrack?.trackId == trackID {
43
40
  return localPeer?.videoTrack
44
41
  }
45
-
42
+
46
43
  if localPeer?.audioTrack?.trackId == trackID {
47
44
  return localPeer?.audioTrack
48
45
  }
49
-
46
+
50
47
  for track in localPeer?.auxiliaryTracks ?? [] where track.trackId == trackID {
51
48
  return track
52
49
  }
53
-
50
+
54
51
  return nil
55
52
  }
56
-
53
+
57
54
  static func getRemoteAudioTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteAudioTrack? {
58
55
  for peer in remotePeers ?? [] {
59
56
  if peer.audioTrack?.trackId == trackID {
@@ -62,23 +59,23 @@ class HmsHelper: NSObject {
62
59
  }
63
60
  return nil
64
61
  }
65
-
62
+
66
63
  static func getRemoteAudioAuxiliaryTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteAudioTrack? {
67
64
  for peer in remotePeers ?? [] {
68
65
  if peer.audioTrack?.trackId == trackID {
69
66
  return peer.audioTrack as? HMSRemoteAudioTrack
70
67
  }
71
68
  let auxTracks = peer.auxiliaryTracks
72
-
69
+
73
70
  for track in auxTracks ?? [] {
74
- if (track.kind == HMSTrackKind.audio && track.trackId == trackID) {
71
+ if track.kind == HMSTrackKind.audio && track.trackId == trackID {
75
72
  return track as? HMSRemoteAudioTrack
76
73
  }
77
74
  }
78
75
  }
79
76
  return nil
80
77
  }
81
-
78
+
82
79
  static func getRemoteVideoTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSRemoteVideoTrack? {
83
80
  for peer in remotePeers ?? [] {
84
81
  if peer.videoTrack?.trackId == trackID {
@@ -87,35 +84,35 @@ class HmsHelper: NSObject {
87
84
  }
88
85
  return nil
89
86
  }
90
-
87
+
91
88
  static func getHmsTrackType(_ kind: HMSTrackKind?) -> String? {
92
- if(kind == HMSTrackKind.video){
89
+ if kind == HMSTrackKind.video {
93
90
  return "VIDEO"
94
- }else if(kind == HMSTrackKind.audio){
91
+ } else if kind == HMSTrackKind.audio {
95
92
  return "AUDIO"
96
93
  }
97
94
  return nil
98
95
  }
99
-
96
+
100
97
  static func getTrackFromTrackId(_ trackID: String?, _ remotePeers: [HMSRemotePeer]?) -> HMSTrack? {
101
-
98
+
102
99
  for peer in remotePeers ?? [] {
103
100
  if peer.videoTrack?.trackId == trackID {
104
101
  return peer.videoTrack
105
102
  }
106
-
103
+
107
104
  if peer.audioTrack?.trackId == trackID {
108
105
  return peer.audioTrack
109
106
  }
110
-
107
+
111
108
  for track in peer.auxiliaryTracks ?? [] where track.trackId == trackID {
112
109
  return track
113
110
  }
114
111
  }
115
-
112
+
116
113
  return nil
117
114
  }
118
-
115
+
119
116
  static func getHms(_ credentials: NSDictionary, _ hmsCollection: [String: HmsSDK]) -> HmsSDK? {
120
117
  guard let id = credentials.value(forKey: "id") as? String,
121
118
  let hms = hmsCollection[id]
@@ -124,11 +121,11 @@ class HmsHelper: NSObject {
124
121
  }
125
122
  return hms
126
123
  }
127
-
124
+
128
125
  static func getLocalVideoSettings(_ settings: NSDictionary?) -> HMSVideoTrackSettings? {
129
126
  guard let data = settings,
130
127
  let codec = data.value(forKey: "codec") as? String,
131
- let resolution = data.value(forKey: "resolution") as? [String : Double]?,
128
+ let resolution = data.value(forKey: "resolution") as? [String: Double]?,
132
129
  let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
133
130
  let maxFrameRate = data.value(forKey: "maxFrameRate") as? Int,
134
131
  let cameraFacing = data.value(forKey: "cameraFacing") as? String,
@@ -142,7 +139,7 @@ class HmsHelper: NSObject {
142
139
  let hmsTrackSettings = HMSVideoTrackSettings(codec: codecEncoded, resolution: resolutionObj, maxBitrate: maxBitrate, maxFrameRate: maxFrameRate, cameraFacing: cameraFacingEncoded, trackDescription: trackDescription)
143
140
  return hmsTrackSettings
144
141
  }
145
-
142
+
146
143
  static func getLocalAudioSettings(_ settings: NSDictionary?) -> HMSAudioTrackSettings? {
147
144
  guard let data = settings,
148
145
  let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
@@ -153,17 +150,17 @@ class HmsHelper: NSObject {
153
150
  let hmsTrackSettings = HMSAudioTrackSettings(maxBitrate: maxBitrate, trackDescription: trackDescription)
154
151
  return hmsTrackSettings
155
152
  }
156
-
157
- static func getVideoResolution(_ data: [String : Double]) -> HMSVideoResolution? {
153
+
154
+ static func getVideoResolution(_ data: [String: Double]) -> HMSVideoResolution? {
158
155
  guard let width = data["width"],
159
156
  let height = data["height"]
160
157
  else {
161
158
  return nil
162
159
  }
163
-
160
+
164
161
  return HMSVideoResolution.init(width: width, height: height)
165
162
  }
166
-
163
+
167
164
  static func getVideoCodec(_ codecString: String?) -> HMSCodec {
168
165
  switch codecString {
169
166
  case "H264":
@@ -174,7 +171,7 @@ class HmsHelper: NSObject {
174
171
  return HMSCodec.H264
175
172
  }
176
173
  }
177
-
174
+
178
175
  static func getCameraFacing(_ cameraFacing: String) -> HMSCameraFacing {
179
176
  switch cameraFacing {
180
177
  case "FRONT":
@@ -185,7 +182,7 @@ class HmsHelper: NSObject {
185
182
  return HMSCameraFacing.front
186
183
  }
187
184
  }
188
-
185
+
189
186
  static func getRtmpUrls(_ strings: [String]?) -> [URL]? {
190
187
  if let extractedStrings = strings {
191
188
  var arr: [URL] = []
@@ -200,4 +197,39 @@ class HmsHelper: NSObject {
200
197
  return nil
201
198
  }
202
199
  }
200
+
201
+ static func getHMSHLSMeetingURLVariants(_ variants: [[String: Any]]?) -> [HMSHLSMeetingURLVariant] {
202
+ var hlsVariants: [HMSHLSMeetingURLVariant] = []
203
+ for variant in variants ?? [] {
204
+ let meetingURLVariant = HmsHelper.getHMSHLSMeetingURLVariant(variant)
205
+ if let extractedVariant = meetingURLVariant {
206
+ hlsVariants.append(extractedVariant)
207
+ }
208
+ }
209
+ return hlsVariants
210
+ }
211
+
212
+ static func getHlsRecordingConfig(_ data: NSDictionary) -> HMSHLSRecordingConfig? {
213
+ guard let meetingURLVariants = data.value(forKey: "hlsRecordingConfig") as? NSDictionary
214
+ else {
215
+ return nil
216
+ }
217
+ guard let singleFilePerLayer = meetingURLVariants.value(forKey: "singleFilePerLayer") as? Bool ,
218
+ let videoOnDemand = meetingURLVariants.value(forKey: "videoOnDemand") as? Bool
219
+ else {
220
+ return nil
221
+ }
222
+
223
+ return HMSHLSRecordingConfig(singleFilePerLayer: singleFilePerLayer, enableVOD: videoOnDemand)
224
+ }
225
+
226
+ static func getHMSHLSMeetingURLVariant(_ variant: [String: Any]) -> HMSHLSMeetingURLVariant? {
227
+ let meetingUrl = variant["meetingUrl"] as? String
228
+ let metadata = variant["metadata"] as? String
229
+
230
+ if let extractedUrl = meetingUrl, let url = URL(string: extractedUrl) {
231
+ return HMSHLSMeetingURLVariant(meetingURL: url, metadata: metadata ?? "")
232
+ }
233
+ return nil
234
+ }
203
235
  }
package/ios/HmsManager.m CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
  RCT_EXTERN_METHOD(join: (NSDictionary) credentials)
7
7
  RCT_EXTERN_METHOD(preview: (NSDictionary) credentials)
8
+ RCT_EXTERN_METHOD(previewForRole: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
9
+ RCT_EXTERN_METHOD(cancelPreview: (NSDictionary) data)
8
10
  RCT_EXTERN_METHOD(setLocalMute: (NSDictionary) isMute)
9
11
  RCT_EXTERN_METHOD(setLocalVideoMute: (NSDictionary) isMute)
10
12
  RCT_EXTERN_METHOD(sendBroadcastMessage: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
@@ -15,17 +17,23 @@ RCT_EXTERN_METHOD(removePeer: (NSDictionary) data :(RCTPromiseResolveBlock) reso
15
17
  RCT_EXTERN_METHOD(endRoom: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
16
18
  RCT_EXTERN_METHOD(changeRole: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
17
19
  RCT_EXTERN_METHOD(changeTrackState: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
18
- RCT_EXTERN_METHOD(changeTrackStateRoles: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
19
- RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data)
20
+ RCT_EXTERN_METHOD(changeTrackStateForRoles: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
21
+ RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
20
22
  RCT_EXTERN_METHOD(isMute: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
21
23
  RCT_EXTERN_METHOD(getRoom: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
22
24
  RCT_EXTERN_METHOD(switchCamera: (NSDictionary) data)
23
25
  RCT_EXTERN_METHOD(setVolume: (NSDictionary) data)
24
26
  RCT_EXTERN_METHOD(build : (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
25
27
  RCT_EXTERN_METHOD(leave: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
26
- RCT_EXTERN_METHOD(muteAllPeersAudio: (NSDictionary) mute)
28
+ RCT_EXTERN_METHOD(setPlaybackForAllAudio: (NSDictionary) mute)
29
+ RCT_EXTERN_METHOD(remoteMuteAllAudio: (NSDictionary) data)
27
30
  RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
28
31
  RCT_EXTERN_METHOD(changeMetadata: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
29
32
  RCT_EXTERN_METHOD(startRTMPOrRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
30
33
  RCT_EXTERN_METHOD(stopRtmpAndRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
34
+ RCT_EXTERN_METHOD(startHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
35
+ RCT_EXTERN_METHOD(stopHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
36
+ RCT_EXTERN_METHOD(changeName: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
37
+ RCT_EXTERN_METHOD(enableRTCStats: (NSDictionary) data)
38
+ RCT_EXTERN_METHOD(disableRTCStats: (NSDictionary) data)
31
39
  @end
@@ -1,11 +1,10 @@
1
-
2
1
  import HMSSDK
3
2
 
4
3
  @objc(HmsManager)
5
- class HmsManager: RCTEventEmitter{
6
-
4
+ class HmsManager: RCTEventEmitter {
5
+
7
6
  var hmsCollection: [String: HmsSDK] = [:]
8
-
7
+
9
8
  let ON_PREVIEW = "ON_PREVIEW"
10
9
  let ON_JOIN = "ON_JOIN"
11
10
  let ON_ROOM_UPDATE = "ON_ROOM_UPDATE"
@@ -19,134 +18,152 @@ class HmsManager: RCTEventEmitter{
19
18
  let ON_SPEAKER = "ON_SPEAKER"
20
19
  let RECONNECTING = "RECONNECTING"
21
20
  let RECONNECTED = "RECONNECTED"
22
-
21
+ let ON_RTC_STATS = "ON_RTC_STATS"
22
+ let ON_LOCAL_AUDIO_STATS = "ON_LOCAL_AUDIO_STATS"
23
+ let ON_LOCAL_VIDEO_STATS = "ON_LOCAL_VIDEO_STATS"
24
+ let ON_REMOTE_AUDIO_STATS = "ON_REMOTE_AUDIO_STATS"
25
+ let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
26
+
23
27
  // MARK: - Setup
24
-
28
+
25
29
  override init() {
26
30
  super.init()
27
31
  }
28
32
 
29
- // override class func requiresMainQueueSetup() -> Bool {
30
- // true
31
- // }
33
+ override class func requiresMainQueueSetup() -> Bool {
34
+ true
35
+ }
32
36
 
33
37
  override func supportedEvents() -> [String]! {
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
+ 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, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS]
35
39
  }
36
-
37
-
40
+
38
41
  // MARK: - HMS SDK Actions
39
-
42
+
40
43
  @objc
41
44
  func build(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
42
45
  DispatchQueue.main.async { [weak self] in
43
46
  let hasItem = self?.hmsCollection.index(forKey: "12345")
44
-
47
+
45
48
  if let _ = hasItem {
46
49
  let id = UUID().uuidString
47
50
  let hms = HmsSDK(data: data, delegate: self, uid: id)
48
51
  self?.hmsCollection[id] = hms
49
-
52
+
50
53
  resolve?(id)
51
54
  } else {
52
55
  let id = "12345"
53
56
  let hms = HmsSDK(data: data, delegate: self, uid: id)
54
57
  self?.hmsCollection[id] = hms
55
-
58
+
56
59
  resolve?(id)
57
60
  }
58
61
  }
59
62
  }
60
-
63
+
61
64
  @objc
62
65
  func preview(_ credentials: NSDictionary) {
63
66
  let hms = HmsHelper.getHms(credentials, hmsCollection)
64
67
  hms?.preview(credentials)
65
68
  }
66
69
 
70
+ @objc
71
+ func previewForRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
72
+ let hms = HmsHelper.getHms(data, hmsCollection)
73
+
74
+ hms?.previewForRole(data, resolve, reject)
75
+ }
76
+
77
+ @objc
78
+ func cancelPreview(_ data: NSDictionary) {
79
+ let hms = HmsHelper.getHms(data, hmsCollection)
80
+
81
+ hms?.cancelPreview()
82
+ }
83
+
67
84
  @objc
68
85
  func join(_ credentials: NSDictionary) {
69
86
  let hms = HmsHelper.getHms(credentials, hmsCollection)
70
87
  hms?.join(credentials)
71
88
  }
72
-
89
+
73
90
  @objc
74
91
  func setLocalMute(_ data: NSDictionary) {
75
92
  let hms = HmsHelper.getHms(data, hmsCollection)
76
-
93
+
77
94
  hms?.setLocalMute(data)
78
95
  }
79
-
96
+
80
97
  @objc
81
98
  func setLocalVideoMute(_ data: NSDictionary) {
82
99
  let hms = HmsHelper.getHms(data, hmsCollection)
83
-
100
+
84
101
  hms?.setLocalVideoMute(data)
85
102
  }
86
-
103
+
87
104
  @objc
88
105
  func switchCamera(_ data: NSDictionary) {
89
106
  let hms = HmsHelper.getHms(data, hmsCollection)
90
-
107
+
91
108
  hms?.switchCamera()
92
109
  }
93
-
110
+
94
111
  @objc
95
112
  func leave(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
96
113
  let hms = HmsHelper.getHms(data, hmsCollection)
97
-
114
+
98
115
  hms?.leave(resolve, reject)
99
116
  }
100
-
117
+
101
118
  @objc
102
119
  func sendBroadcastMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
103
120
  let hms = HmsHelper.getHms(data, hmsCollection)
104
-
121
+
105
122
  hms?.sendBroadcastMessage(data, resolve, reject)
106
123
  }
107
-
124
+
108
125
  @objc
109
126
  func sendGroupMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
110
127
  let hms = HmsHelper.getHms(data, hmsCollection)
111
-
128
+
112
129
  hms?.sendGroupMessage(data, resolve, reject)
113
130
  }
114
-
131
+
115
132
  @objc
116
133
  func sendDirectMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
117
134
  let hms = HmsHelper.getHms(data, hmsCollection)
118
-
135
+
119
136
  hms?.sendDirectMessage(data, resolve, reject)
120
137
  }
121
-
138
+
122
139
  @objc
123
140
  func acceptRoleChange(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
124
141
  let hms = HmsHelper.getHms(data, hmsCollection)
125
-
142
+
126
143
  hms?.acceptRoleChange(resolve, reject)
127
144
  }
128
-
145
+
129
146
  @objc
130
147
  func changeRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
131
148
  let hms = HmsHelper.getHms(data, hmsCollection)
132
-
149
+
133
150
  hms?.changeRole(data, resolve, reject)
134
151
  }
135
-
152
+
136
153
  @objc
137
154
  func changeTrackState(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
138
155
  let hms = HmsHelper.getHms(data, hmsCollection)
139
-
156
+
140
157
  hms?.changeTrackState(data, resolve, reject)
141
158
  }
142
-
159
+
143
160
  @objc
144
- func changeTrackStateRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
161
+ func changeTrackStateForRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
145
162
  let hms = HmsHelper.getHms(data, hmsCollection)
146
-
147
- hms?.changeTrackStateRoles(data, resolve, reject)
163
+
164
+ hms?.changeTrackStateForRoles(data, resolve, reject)
148
165
  }
149
-
166
+
150
167
  @objc
151
168
  func isMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
152
169
  let hms = HmsHelper.getHms(data, hmsCollection)
@@ -155,88 +172,128 @@ class HmsManager: RCTEventEmitter{
155
172
  } else {
156
173
  reject?(nil, "NO_INSTANCE", nil)
157
174
  return
158
- }
175
+ }
159
176
  }
160
-
161
-
177
+
162
178
  @objc
163
179
  func removePeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
164
180
  let hms = HmsHelper.getHms(data, hmsCollection)
165
-
181
+
166
182
  hms?.removePeer(data, resolve, reject)
167
183
  }
168
-
169
-
184
+
170
185
  @objc
171
186
  func endRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
172
187
  let hms = HmsHelper.getHms(data, hmsCollection)
173
-
188
+
174
189
  hms?.endRoom(data, resolve, reject)
175
190
  }
176
191
 
177
192
  @objc
178
193
  func setPlaybackAllowed(_ data: NSDictionary) {
179
194
  let hms = HmsHelper.getHms(data, hmsCollection)
180
-
195
+
181
196
  hms?.setPlaybackAllowed(data)
182
197
  }
183
-
198
+
184
199
  @objc
185
200
  func isPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
186
201
  let hms = HmsHelper.getHms(data, hmsCollection)
187
-
202
+
188
203
  hms?.isPlaybackAllowed(data, resolve, reject)
189
204
  }
190
-
205
+
191
206
  @objc
192
207
  func getRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
193
208
  let hms = HmsHelper.getHms(data, hmsCollection)
194
-
209
+
195
210
  hms?.getRoom(data, resolve, reject)
196
211
  }
197
-
212
+
198
213
  // MARK: - HMS SDK Delegate Callbacks
199
214
  func emitEvent(_ name: String, _ data: [String: Any]) {
200
215
  self.sendEvent(withName: name, body: data)
201
216
  }
202
-
217
+
203
218
  // MARK: Helper Functions
204
-
219
+
205
220
  @objc
206
- func muteAllPeersAudio(_ data: NSDictionary) {
221
+ func setPlaybackForAllAudio(_ data: NSDictionary) {
207
222
  let hms = HmsHelper.getHms(data, hmsCollection)
208
-
209
- hms?.muteAllPeersAudio(data)
223
+
224
+ hms?.setPlaybackForAllAudio(data)
210
225
  }
211
226
 
227
+ @objc
228
+ func remoteMuteAllAudio(_ data: NSDictionary) {
229
+ let hms = HmsHelper.getHms(data, hmsCollection)
230
+
231
+ hms?.remoteMuteAllAudio()
232
+ }
233
+
212
234
  @objc
213
235
  func changeMetadata(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
214
236
  let hms = HmsHelper.getHms(data, hmsCollection)
215
-
237
+
216
238
  hms?.changeMetadata(data, resolve, reject)
217
239
  }
218
240
 
219
241
  @objc
220
242
  func setVolume(_ data: NSDictionary) {
221
243
  let hms = HmsHelper.getHms(data, hmsCollection)
222
-
244
+
223
245
  hms?.setVolume(data)
224
246
  }
225
-
247
+
226
248
  @objc
227
249
  func startRTMPOrRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
228
250
  let hms = HmsHelper.getHms(data, hmsCollection)
229
-
251
+
230
252
  hms?.startRTMPOrRecording(data, resolve, reject)
231
253
  }
232
-
254
+
233
255
  @objc
234
256
  func stopRtmpAndRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
235
257
  let hms = HmsHelper.getHms(data, hmsCollection)
236
-
258
+
237
259
  hms?.stopRtmpAndRecording(resolve, reject)
238
260
  }
261
+
262
+ @objc
263
+ func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
264
+ let hms = HmsHelper.getHms(data, hmsCollection)
265
+
266
+ hms?.startHLSStreaming(data, resolve, reject)
267
+ }
268
+
269
+ @objc
270
+ func stopHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
271
+ let hms = HmsHelper.getHms(data, hmsCollection)
272
+
273
+ hms?.stopHLSStreaming(resolve, reject)
274
+ }
275
+
276
+ @objc
277
+ func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
278
+ let hms = HmsHelper.getHms(data, hmsCollection)
279
+
280
+ hms?.changeName(data, resolve, reject)
281
+ }
282
+
283
+ @objc
284
+ func enableRTCStats(_ data: NSDictionary) {
285
+ let hms = HmsHelper.getHms(data, hmsCollection)
286
+
287
+ hms?.enableRTCStats()
288
+ }
239
289
 
290
+ @objc
291
+ func disableRTCStats(_ data: NSDictionary) {
292
+ let hms = HmsHelper.getHms(data, hmsCollection)
293
+
294
+ hms?.disableRTCStats()
295
+ }
296
+
240
297
  // @objc
241
298
  // func setLocalVideoSettings(_ data: NSDictionary) {
242
299
  // let hms = HmsHelper.getHms(data, hmsCollection)