@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.
- package/README.md +37 -39
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +91 -17
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +106 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +38 -3
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +342 -183
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +4 -1
- package/ios/HmsDecoder.swift +105 -18
- package/ios/HmsHelper.swift +92 -0
- package/ios/HmsManager.m +5 -1
- package/ios/HmsManager.swift +41 -6
- package/ios/HmsSDK.swift +199 -60
- package/ios/HmsView.swift +1 -1
- package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
- package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
- package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
- package/lib/commonjs/classes/HMSConfig.js +3 -1
- package/lib/commonjs/classes/HMSConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +20 -3
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSException.js +30 -0
- package/lib/commonjs/classes/HMSException.js.map +1 -0
- package/lib/commonjs/classes/HMSHelper.js +2 -2
- package/lib/commonjs/classes/HMSHelper.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalAudioTrack.js +12 -0
- package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +3 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +6 -0
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
- package/lib/commonjs/classes/HMSRoom.js +9 -0
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
- package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +129 -70
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
- package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
- package/lib/commonjs/classes/HMSTrack.js +2 -19
- package/lib/commonjs/classes/HMSTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
- package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
- package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/commonjs/index.js +84 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
- package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
- package/lib/module/classes/HMSCameraFacing.js +7 -0
- package/lib/module/classes/HMSCameraFacing.js.map +1 -0
- package/lib/module/classes/HMSConfig.js +3 -1
- package/lib/module/classes/HMSConfig.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +19 -3
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSException.js +21 -0
- package/lib/module/classes/HMSException.js.map +1 -0
- package/lib/module/classes/HMSHelper.js +2 -2
- package/lib/module/classes/HMSHelper.js.map +1 -1
- package/lib/module/classes/HMSLocalAudioTrack.js +13 -1
- package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +3 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerUpdate.js +1 -0
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +6 -0
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js +17 -0
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
- package/lib/module/classes/HMSRemotePeer.js.map +1 -1
- package/lib/module/classes/HMSRoom.js +9 -0
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
- package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +130 -70
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSServerRecordingState.js +14 -0
- package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
- package/lib/module/classes/HMSTrack.js +2 -17
- package/lib/module/classes/HMSTrack.js.map +1 -1
- package/lib/module/classes/HMSVideoResolution.js +14 -0
- package/lib/module/classes/HMSVideoResolution.js.map +1 -0
- package/lib/module/classes/HMSVideoSettings.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
- package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
- package/lib/typescript/classes/HMSConfig.d.ts +2 -0
- package/lib/typescript/classes/HMSEncoder.d.ts +3 -1
- package/lib/typescript/classes/HMSException.d.ts +22 -0
- package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +1 -0
- package/lib/typescript/classes/HMSLocalPeer.d.ts +1 -0
- package/lib/typescript/classes/HMSPeer.d.ts +2 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
- package/lib/typescript/classes/HMSPermissions.d.ts +4 -0
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
- package/lib/typescript/classes/HMSRemotePeer.d.ts +1 -0
- package/lib/typescript/classes/HMSRoom.d.ts +9 -0
- package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
- package/lib/typescript/classes/HMSSDK.d.ts +10 -1
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
- package/lib/typescript/classes/HMSTrack.d.ts +1 -1
- package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
- package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
- package/lib/typescript/index.d.ts +6 -0
- package/package.json +1 -1
- package/src/classes/HMSAudioTrackSettings.ts +9 -1
- package/src/classes/HMSBrowserRecordingState.ts +11 -0
- package/src/classes/HMSCameraFacing.ts +4 -0
- package/src/classes/HMSConfig.ts +3 -1
- package/src/classes/HMSEncoder.ts +19 -2
- package/src/classes/HMSException.ts +33 -0
- package/src/classes/HMSHelper.ts +2 -2
- package/src/classes/HMSLocalAudioTrack.ts +13 -1
- package/src/classes/HMSLocalPeer.ts +1 -0
- package/src/classes/HMSPeer.ts +3 -0
- package/src/classes/HMSPeerUpdate.ts +1 -0
- package/src/classes/HMSPermissions.ts +6 -0
- package/src/classes/HMSRTMPConfig.ts +15 -0
- package/src/classes/HMSRemotePeer.ts +1 -0
- package/src/classes/HMSRoom.ts +12 -0
- package/src/classes/HMSRtmpStreamingState.ts +11 -0
- package/src/classes/HMSSDK.tsx +40 -2
- package/src/classes/HMSServerRecordingState.ts +11 -0
- package/src/classes/HMSTrack.ts +2 -15
- package/src/classes/HMSVideoResolution.ts +9 -0
- package/src/classes/HMSVideoSettings.ts +3 -3
- package/src/classes/HMSVideoTrackSettings.ts +13 -10
- 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 &&
|
|
91
|
+
if (trackId == auxTrackId &&
|
|
92
|
+
track.type == HMSTrackType.VIDEO &&
|
|
93
|
+
!track.isMute
|
|
94
|
+
) {
|
|
92
95
|
videoTrack = track as HMSVideoTrack
|
|
93
96
|
return
|
|
94
97
|
}
|
package/ios/HmsDecoder.swift
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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(_
|
|
366
|
-
let
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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
|
}
|
package/ios/HmsHelper.swift
CHANGED
|
@@ -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(
|
|
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
|
package/ios/HmsManager.swift
CHANGED
|
@@ -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
|
}
|