@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.
- 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/.project +34 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +129 -29
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +124 -2
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +138 -495
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +899 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +26 -8
- package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +8 -6
- package/ios/HmsDecoder.swift +142 -20
- package/ios/HmsHelper.swift +110 -0
- package/ios/HmsManager.m +13 -7
- package/ios/HmsManager.swift +115 -375
- package/ios/HmsSDK.swift +716 -0
- package/ios/HmsView.swift +16 -8
- package/lib/commonjs/classes/HMSAudioTrack.js.map +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 -7
- package/lib/commonjs/classes/HMSConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +60 -32
- 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 +19 -1
- package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalVideoTrack.js +10 -2
- package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.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 +7 -7
- 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/HMSRemoteAudioTrack.js +2 -0
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js +2 -0
- package/lib/commonjs/classes/HMSRemoteVideoTrack.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 +336 -109
- 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 +8 -18
- package/lib/commonjs/classes/HMSTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +14 -0
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -0
- 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/HMSVideoTrack.js +2 -0
- package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +10 -7
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/index.js +98 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSAudioTrack.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 -7
- package/lib/module/classes/HMSConfig.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +59 -32
- 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 +20 -2
- package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSLocalVideoTrack.js +10 -2
- package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSLogger.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 +7 -7
- 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/HMSRemoteAudioTrack.js +2 -0
- package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSRemotePeer.js.map +1 -1
- package/lib/module/classes/HMSRemoteVideoTrack.js +2 -0
- package/lib/module/classes/HMSRemoteVideoTrack.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 +328 -109
- 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 +8 -16
- package/lib/module/classes/HMSTrack.js.map +1 -1
- package/lib/module/classes/HMSTrackType.js +7 -0
- package/lib/module/classes/HMSTrackType.js.map +1 -0
- 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/HMSVideoTrack.js +2 -0
- package/lib/module/classes/HMSVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/classes/HmsView.js +10 -7
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSAudioTrack.d.ts +3 -0
- 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 -4
- package/lib/typescript/classes/HMSEncoder.d.ts +14 -12
- package/lib/typescript/classes/HMSException.d.ts +22 -0
- package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +5 -0
- package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +4 -0
- package/lib/typescript/classes/HMSLogger.d.ts +4 -4
- 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 +6 -6
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
- package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +4 -0
- package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -0
- package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +4 -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 +36 -6
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
- package/lib/typescript/classes/HMSTrack.d.ts +6 -1
- package/lib/typescript/classes/HMSTrackType.d.ts +4 -0
- package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
- package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
- package/lib/typescript/classes/HMSVideoTrack.d.ts +5 -1
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
- package/lib/typescript/classes/HmsView.d.ts +2 -1
- package/lib/typescript/index.d.ts +7 -0
- package/package.json +1 -1
- package/src/classes/HMSAudioTrack.ts +3 -0
- 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 -7
- package/src/classes/HMSEncoder.ts +62 -28
- package/src/classes/HMSException.ts +33 -0
- package/src/classes/HMSHelper.ts +2 -2
- package/src/classes/HMSLocalAudioTrack.ts +19 -2
- package/src/classes/HMSLocalPeer.ts +3 -0
- package/src/classes/HMSLocalVideoTrack.ts +7 -2
- package/src/classes/HMSLogger.ts +5 -5
- package/src/classes/HMSPeer.ts +3 -0
- package/src/classes/HMSPeerUpdate.ts +1 -0
- package/src/classes/HMSPermissions.ts +9 -9
- package/src/classes/HMSRTMPConfig.ts +15 -0
- package/src/classes/HMSRemoteAudioTrack.ts +13 -2
- package/src/classes/HMSRemotePeer.ts +3 -0
- package/src/classes/HMSRemoteVideoTrack.ts +13 -2
- package/src/classes/HMSRoom.ts +12 -0
- package/src/classes/HMSRtmpStreamingState.ts +11 -0
- package/src/classes/{HMSSDK.ts → HMSSDK.tsx} +284 -42
- package/src/classes/HMSServerRecordingState.ts +11 -0
- package/src/classes/HMSTrack.ts +9 -15
- package/src/classes/HMSTrackType.ts +4 -0
- package/src/classes/HMSVideoResolution.ts +9 -0
- package/src/classes/HMSVideoSettings.ts +3 -3
- package/src/classes/HMSVideoTrack.ts +6 -1
- package/src/classes/HMSVideoTrackSettings.ts +13 -10
- package/src/classes/HmsView.tsx +4 -0
- package/src/index.ts +7 -0
- package/ios/Hmssdk.m +0 -8
- 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(
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
77
|
+
localTrack = trackId
|
|
78
|
+
val localTrackId = hms.getLocalPeer()?.videoTrack?.trackId
|
|
64
79
|
if (localTrackId == localTrack) {
|
|
65
|
-
videoTrack = hms
|
|
80
|
+
videoTrack = hms.getLocalPeer()?.videoTrack
|
|
66
81
|
}
|
|
67
82
|
|
|
68
|
-
val remotePeers = hms
|
|
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 &&
|
|
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
|
|
34
|
-
|
|
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():
|
|
44
|
-
val
|
|
45
|
-
return
|
|
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 {
|
package/ios/HmsDecoder.swift
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
|
331
|
-
|
|
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 [
|
|
397
|
+
return [:]
|
|
334
398
|
}
|
|
335
399
|
|
|
336
400
|
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest) -> [String: Any] {
|
|
337
|
-
|
|
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
|
-
|
|
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
|
}
|
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 {
|
|
@@ -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: (
|
|
9
|
-
RCT_EXTERN_METHOD(setLocalVideoMute: (
|
|
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(
|
|
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(
|
|
22
|
-
RCT_EXTERN_METHOD(
|
|
23
|
-
RCT_EXTERN_METHOD(
|
|
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
|