@100mslive/react-native-hms 0.8.1 → 0.9.0
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 +6 -6
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- 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 +3 -2
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +226 -256
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +82 -31
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +99 -22
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +368 -221
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +66 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +43 -24
- package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -2
- package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +14 -11
- package/android/src/main/res/layout/hms_view.xml +19 -0
- package/ios/HmsDecoder.swift +91 -22
- package/ios/HmsHelper.swift +34 -3
- package/ios/HmsManager.m +11 -9
- package/ios/HmsManager.swift +32 -18
- package/ios/HmsSDK.swift +193 -43
- package/ios/HmsView.swift +22 -54
- package/lib/commonjs/classes/HMSChangeTrackStateRequest.js +3 -0
- package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +10 -6
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSConfig.js +20 -0
- package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +23 -0
- package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSStreamingState.js +23 -0
- package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSVariant.js +29 -0
- package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -0
- package/lib/commonjs/classes/HMSLocalAudioTrack.js +20 -0
- package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalVideoTrack.js +18 -0
- package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +55 -1
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js +19 -0
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js +19 -0
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRoom.js +3 -0
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +6 -0
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +297 -145
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettings.js +3 -0
- package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +26 -4
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/index.js +70 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSChangeTrackStateRequest.js +3 -0
- package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +10 -6
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSHLSConfig.js +11 -0
- package/lib/module/classes/HMSHLSConfig.js.map +1 -0
- package/lib/module/classes/HMSHLSMeetingURLVariant.js +14 -0
- package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -0
- package/lib/module/classes/HMSHLSStreamingState.js +14 -0
- package/lib/module/classes/HMSHLSStreamingState.js.map +1 -0
- package/lib/module/classes/HMSHLSVariant.js +20 -0
- package/lib/module/classes/HMSHLSVariant.js.map +1 -0
- package/lib/module/classes/HMSLocalAudioTrack.js +17 -0
- package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSLocalVideoTrack.js +15 -0
- package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSLogger.js +55 -1
- package/lib/module/classes/HMSLogger.js.map +1 -1
- package/lib/module/classes/HMSRemoteAudioTrack.js +16 -0
- package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSRemoteVideoTrack.js +16 -0
- package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSRoom.js +3 -0
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRoomUpdate.js +6 -0
- package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +295 -146
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSTrackSettings.js +3 -0
- package/lib/module/classes/HMSTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSVideoCodec.js +4 -4
- package/lib/module/classes/HMSVideoCodec.js.map +1 -1
- package/lib/module/classes/HmsView.js +23 -4
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -0
- package/lib/typescript/classes/HMSHLSConfig.d.ts +7 -0
- package/lib/typescript/classes/HMSHLSMeetingURLVariant.d.ts +8 -0
- package/lib/typescript/classes/HMSHLSStreamingState.d.ts +9 -0
- package/lib/typescript/classes/HMSHLSVariant.d.ts +12 -0
- package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSLogger.d.ts +9 -0
- package/lib/typescript/classes/HMSRoom.d.ts +3 -0
- package/lib/typescript/classes/HMSRoomUpdate.d.ts +7 -1
- package/lib/typescript/classes/HMSSDK.d.ts +22 -13
- package/lib/typescript/classes/HMSTrackSettings.d.ts +2 -0
- package/lib/typescript/classes/HMSVideoCodec.d.ts +4 -4
- package/lib/typescript/index.d.ts +5 -0
- package/package.json +1 -1
- package/react-native-hms.podspec +1 -1
- package/src/classes/HMSChangeTrackStateRequest.ts +7 -1
- package/src/classes/HMSEncoder.ts +5 -1
- package/src/classes/HMSHLSConfig.ts +9 -0
- package/src/classes/HMSHLSMeetingURLVariant.ts +9 -0
- package/src/classes/HMSHLSStreamingState.ts +11 -0
- package/src/classes/HMSHLSVariant.ts +18 -0
- package/src/classes/HMSLocalAudioTrack.ts +16 -0
- package/src/classes/HMSLocalPeer.ts +3 -0
- package/src/classes/HMSLocalVideoTrack.ts +15 -0
- package/src/classes/HMSLogger.ts +28 -1
- package/src/classes/HMSRemoteAudioTrack.ts +16 -0
- package/src/classes/HMSRemoteVideoTrack.ts +16 -0
- package/src/classes/HMSRoom.ts +4 -0
- package/src/classes/HMSRoomUpdate.ts +6 -0
- package/src/classes/HMSSDK.tsx +221 -84
- package/src/classes/HMSTrackSettings.ts +3 -0
- package/src/classes/HMSVideoCodec.ts +4 -4
- package/src/classes/HmsView.tsx +32 -4
- package/src/index.ts +5 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/6.9/javaCompile/classAnalysis.bin +0 -0
- package/android/.gradle/6.9/javaCompile/jarAnalysis.bin +0 -0
- package/android/.gradle/6.9/javaCompile/javaCompile.lock +0 -0
- package/android/.gradle/6.9/javaCompile/taskHistory.bin +0 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.project +0 -34
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package com.reactnativehmssdk
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.content.Intent
|
|
6
|
+
import android.media.projection.MediaProjectionManager
|
|
7
|
+
import android.os.Bundle
|
|
8
|
+
import androidx.activity.ComponentActivity
|
|
9
|
+
import androidx.activity.result.ActivityResultLauncher
|
|
10
|
+
import androidx.activity.result.contract.ActivityResultContracts
|
|
11
|
+
import live.hms.video.error.HMSException
|
|
12
|
+
import live.hms.video.sdk.HMSActionResultListener
|
|
13
|
+
|
|
14
|
+
class HmsScreenshareActivity : ComponentActivity() {
|
|
15
|
+
private var resultLauncher: ActivityResultLauncher<Intent> =
|
|
16
|
+
this.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
|
17
|
+
if (result.resultCode == Activity.RESULT_OK) {
|
|
18
|
+
val mediaProjectionPermissionResultData: Intent? = result.data
|
|
19
|
+
val id = intent.getStringExtra("id")
|
|
20
|
+
HmsModule.hmsCollection[id]?.hmsSDK?.startScreenshare(
|
|
21
|
+
object : HMSActionResultListener {
|
|
22
|
+
override fun onError(error: HMSException) {
|
|
23
|
+
finish()
|
|
24
|
+
HmsModule.hmsCollection[id]?.emitHMSError(error)
|
|
25
|
+
}
|
|
26
|
+
override fun onSuccess() {
|
|
27
|
+
finish()
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
mediaProjectionPermissionResultData
|
|
31
|
+
)
|
|
32
|
+
} else {
|
|
33
|
+
finish()
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
38
|
+
super.onCreate(savedInstanceState)
|
|
39
|
+
startScreenshare()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private fun startScreenshare() {
|
|
43
|
+
val id = intent.getStringExtra("id")
|
|
44
|
+
val isScreenShared = HmsModule.hmsCollection[id]?.hmsSDK?.isScreenShared()
|
|
45
|
+
if (isScreenShared !== null && !isScreenShared) {
|
|
46
|
+
try {
|
|
47
|
+
val mediaProjectionManager =
|
|
48
|
+
getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
|
|
49
|
+
resultLauncher.launch(mediaProjectionManager.createScreenCaptureIntent())
|
|
50
|
+
} catch (e: Exception) {
|
|
51
|
+
println(e)
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
HmsModule.hmsCollection[id]?.emitHMSError(
|
|
55
|
+
HMSException(
|
|
56
|
+
103,
|
|
57
|
+
"SCREENSHARE_IS_ALREADY_RUNNING",
|
|
58
|
+
"SCREENSHARE_IS_ALREADY_RUNNING",
|
|
59
|
+
"SCREENSHARE_IS_ALREADY_RUNNING",
|
|
60
|
+
"SCREENSHARE_IS_ALREADY_RUNNING"
|
|
61
|
+
)
|
|
62
|
+
)
|
|
63
|
+
finish()
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,24 +1,41 @@
|
|
|
1
1
|
package com.reactnativehmssdk
|
|
2
2
|
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.view.LayoutInflater
|
|
3
6
|
import android.widget.FrameLayout
|
|
7
|
+
import com.facebook.react.bridge.Arguments
|
|
4
8
|
import com.facebook.react.bridge.ReactContext
|
|
5
|
-
import
|
|
9
|
+
import com.facebook.react.bridge.WritableMap
|
|
10
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
6
11
|
import live.hms.video.media.tracks.HMSTrackType
|
|
7
12
|
import live.hms.video.media.tracks.HMSVideoTrack
|
|
8
13
|
import live.hms.video.utils.SharedEglContext
|
|
9
14
|
import org.webrtc.RendererCommon
|
|
10
15
|
import org.webrtc.SurfaceViewRenderer
|
|
11
16
|
|
|
17
|
+
@SuppressLint("ViewConstructor")
|
|
12
18
|
class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
13
|
-
private var surfaceView: SurfaceViewRenderer
|
|
19
|
+
private var surfaceView: SurfaceViewRenderer = SurfaceViewRenderer(context)
|
|
14
20
|
private var videoTrack: HMSVideoTrack? = null
|
|
15
21
|
private var localTrack: String? = null
|
|
22
|
+
private var scaleTypeApplied: Boolean = false
|
|
23
|
+
private var currentScaleType: RendererCommon.ScalingType =
|
|
24
|
+
RendererCommon.ScalingType.SCALE_ASPECT_FILL
|
|
16
25
|
|
|
17
26
|
init {
|
|
18
|
-
|
|
27
|
+
val inflater = getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
|
28
|
+
val view = inflater.inflate(R.layout.hms_view, this)
|
|
29
|
+
|
|
30
|
+
surfaceView = view.findViewById(R.id.surfaceView)
|
|
19
31
|
surfaceView.setEnableHardwareScaler(true)
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fun onReceiveNativeEvent() {
|
|
35
|
+
val event: WritableMap = Arguments.createMap()
|
|
36
|
+
event.putString("message", "MyMessage")
|
|
37
|
+
val reactContext = context as ReactContext
|
|
38
|
+
reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "topChange", event)
|
|
22
39
|
}
|
|
23
40
|
|
|
24
41
|
override fun onDetachedFromWindow() {
|
|
@@ -31,6 +48,12 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
31
48
|
super.onAttachedToWindow()
|
|
32
49
|
surfaceView.init(SharedEglContext.context, null)
|
|
33
50
|
videoTrack?.addSink(surfaceView)
|
|
51
|
+
if (!scaleTypeApplied) {
|
|
52
|
+
if (currentScaleType != RendererCommon.ScalingType.SCALE_ASPECT_FILL) {
|
|
53
|
+
onReceiveNativeEvent()
|
|
54
|
+
}
|
|
55
|
+
scaleTypeApplied = true
|
|
56
|
+
}
|
|
34
57
|
}
|
|
35
58
|
|
|
36
59
|
fun updateScaleType(scaleType: String?) {
|
|
@@ -38,14 +61,17 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
38
61
|
when (scaleType) {
|
|
39
62
|
"ASPECT_FIT" -> {
|
|
40
63
|
surfaceView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT)
|
|
64
|
+
currentScaleType = RendererCommon.ScalingType.SCALE_ASPECT_FIT
|
|
41
65
|
return
|
|
42
66
|
}
|
|
43
67
|
"ASPECT_FILL" -> {
|
|
44
68
|
surfaceView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FILL)
|
|
69
|
+
currentScaleType = RendererCommon.ScalingType.SCALE_ASPECT_FILL
|
|
45
70
|
return
|
|
46
71
|
}
|
|
47
72
|
"ASPECT_BALANCED" -> {
|
|
48
73
|
surfaceView.setScalingType((RendererCommon.ScalingType.SCALE_ASPECT_BALANCED))
|
|
74
|
+
currentScaleType = RendererCommon.ScalingType.SCALE_ASPECT_BALANCED
|
|
49
75
|
return
|
|
50
76
|
}
|
|
51
77
|
else -> {
|
|
@@ -58,12 +84,10 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
58
84
|
fun setData(
|
|
59
85
|
id: String?,
|
|
60
86
|
trackId: String?,
|
|
61
|
-
sink: Boolean?,
|
|
62
87
|
hmsCollection: MutableMap<String, HmsSDK>,
|
|
63
88
|
mirror: Boolean?
|
|
64
89
|
) {
|
|
65
|
-
var sdkId
|
|
66
|
-
|
|
90
|
+
var sdkId = "12345"
|
|
67
91
|
if (id != null) {
|
|
68
92
|
sdkId = id
|
|
69
93
|
}
|
|
@@ -81,26 +105,21 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
81
105
|
}
|
|
82
106
|
|
|
83
107
|
val remotePeers = hms.getRemotePeers()
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
val videoTrackId = peer.videoTrack?.trackId
|
|
108
|
+
for (peer in remotePeers) {
|
|
109
|
+
val videoTrackId = peer.videoTrack?.trackId
|
|
87
110
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
!track.isMute
|
|
94
|
-
) {
|
|
95
|
-
videoTrack = track as HMSVideoTrack
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (videoTrackId == localTrack) {
|
|
100
|
-
videoTrack = peer.videoTrack
|
|
111
|
+
val auxiliaryTracks = peer.auxiliaryTracks
|
|
112
|
+
for (track in auxiliaryTracks) {
|
|
113
|
+
val auxTrackId = track.trackId
|
|
114
|
+
if (trackId == auxTrackId && track.type == HMSTrackType.VIDEO && !track.isMute) {
|
|
115
|
+
videoTrack = track as HMSVideoTrack
|
|
101
116
|
return
|
|
102
117
|
}
|
|
103
118
|
}
|
|
119
|
+
if (videoTrackId == localTrack) {
|
|
120
|
+
videoTrack = peer.videoTrack
|
|
121
|
+
return
|
|
122
|
+
}
|
|
104
123
|
}
|
|
105
124
|
}
|
|
106
125
|
}
|
|
@@ -4,7 +4,6 @@ import com.facebook.react.ReactPackage
|
|
|
4
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
-
import java.util.*
|
|
8
7
|
|
|
9
8
|
class HmssdkPackage : ReactPackage {
|
|
10
9
|
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
|
@@ -12,6 +11,6 @@ class HmssdkPackage : ReactPackage {
|
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
15
|
-
return
|
|
14
|
+
return listOf<ViewManager<*, *>>(HmssdkViewManager())
|
|
16
15
|
}
|
|
17
16
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.reactnativehmssdk
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReadableMap
|
|
4
|
+
import com.facebook.react.common.MapBuilder
|
|
4
5
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
5
6
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
7
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
@@ -13,26 +14,29 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
|
|
|
13
14
|
return REACT_CLASS
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
override fun onDropViewInstance(view: HmsView) {
|
|
17
|
-
super.onDropViewInstance(view)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
17
|
public override fun createViewInstance(reactContext: ThemedReactContext): HmsView {
|
|
21
18
|
this.reactContext = reactContext
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
return HmsView(reactContext)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun getExportedCustomBubblingEventTypeConstants(): MutableMap<String, Any>? {
|
|
23
|
+
return MapBuilder.builder<String, Any>()
|
|
24
|
+
.put(
|
|
25
|
+
"topChange",
|
|
26
|
+
MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", "onChange"))
|
|
27
|
+
)
|
|
28
|
+
.build()
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
@ReactProp(name = "data")
|
|
27
32
|
fun setData(view: HmsView, data: ReadableMap) {
|
|
28
33
|
val trackId = data.getString("trackId")
|
|
29
|
-
val sink = data.getBoolean("sink")
|
|
34
|
+
// val sink = data.getBoolean("sink")
|
|
30
35
|
val id = data.getString("id")
|
|
31
36
|
val mirror = data.getBoolean("mirror")
|
|
32
|
-
|
|
33
37
|
val hmsCollection = getHms()
|
|
34
38
|
if (hmsCollection != null) {
|
|
35
|
-
view.setData(id, trackId,
|
|
39
|
+
view.setData(id, trackId, hmsCollection, mirror)
|
|
36
40
|
}
|
|
37
41
|
// do the processing here
|
|
38
42
|
}
|
|
@@ -43,8 +47,7 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
|
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
private fun getHms(): MutableMap<String, HmsSDK>? {
|
|
46
|
-
|
|
47
|
-
return hmsCollection
|
|
50
|
+
return reactContext?.getNativeModule(HmsModule::class.java)?.getHmsInstance()
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
companion object {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
3
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
4
|
+
xmlns:tools="http://schemas.android.com/tools"
|
|
5
|
+
android:layout_width="match_parent"
|
|
6
|
+
android:layout_height="match_parent"
|
|
7
|
+
android:background="#000">
|
|
8
|
+
|
|
9
|
+
<org.webrtc.SurfaceViewRenderer
|
|
10
|
+
android:id="@+id/surfaceView"
|
|
11
|
+
android:layout_width="wrap_content"
|
|
12
|
+
android:layout_height="wrap_content"
|
|
13
|
+
android:layout_gravity="center"
|
|
14
|
+
app:layout_constraintBottom_toBottomOf="parent"
|
|
15
|
+
app:layout_constraintEnd_toEndOf="parent"
|
|
16
|
+
app:layout_constraintStart_toStartOf="parent"
|
|
17
|
+
app:layout_constraintTop_toTopOf="parent" />
|
|
18
|
+
|
|
19
|
+
</FrameLayout>
|
package/ios/HmsDecoder.swift
CHANGED
|
@@ -12,13 +12,14 @@ class HmsDecoder: NSObject {
|
|
|
12
12
|
let browserRecordingState = HmsDecoder.getHMSBrowserRecordingState(hmsRoom?.browserRecordingState)
|
|
13
13
|
let rtmpStreamingState = HmsDecoder.getHMSRtmpStreamingState(hmsRoom?.rtmpStreamingState)
|
|
14
14
|
let serverRecordingState = HmsDecoder.getHMSServerRecordingState(hmsRoom?.serverRecordingState)
|
|
15
|
+
let hlsStreamingState = HmsDecoder.getHlsStreamingState(hmsRoom?.hlsStreamingState)
|
|
15
16
|
var peers = [[String: Any]]()
|
|
16
17
|
|
|
17
18
|
for peer in room.peers {
|
|
18
19
|
peers.append(getHmsPeer(peer))
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState]
|
|
22
|
+
return ["id": id, "name": name, "metaData": metaData, "peers": peers, "browserRecordingState": browserRecordingState, "rtmpHMSRtmpStreamingState": rtmpStreamingState, "serverRecordingState": serverRecordingState, "hlsStreamingState": hlsStreamingState]
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
static func getHmsPeer (_ peer: HMSPeer) -> [String: Any] {
|
|
@@ -33,11 +34,7 @@ class HmsDecoder: NSObject {
|
|
|
33
34
|
let videoTrack = getHmsVideoTrack(peer.videoTrack)
|
|
34
35
|
let role = getHmsRole(peer.role)
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
for track in peer.auxiliaryTracks ?? [] {
|
|
39
|
-
auxiliaryTracks.append(getHmsTrack(track))
|
|
40
|
-
}
|
|
37
|
+
let auxiliaryTracks = getAllTracks(peer.auxiliaryTracks ?? [] )
|
|
41
38
|
|
|
42
39
|
return ["peerID": peerID,
|
|
43
40
|
"name": name,
|
|
@@ -51,6 +48,15 @@ class HmsDecoder: NSObject {
|
|
|
51
48
|
"role": role]
|
|
52
49
|
}
|
|
53
50
|
|
|
51
|
+
static func getAllTracks (_ tracks: [HMSTrack]) -> [[String: Any]] {
|
|
52
|
+
var auxiliaryTracks = [[String: Any]]()
|
|
53
|
+
|
|
54
|
+
for track in tracks {
|
|
55
|
+
auxiliaryTracks.append(getHmsTrack(track))
|
|
56
|
+
}
|
|
57
|
+
return auxiliaryTracks
|
|
58
|
+
}
|
|
59
|
+
|
|
54
60
|
static func getHmsTrack (_ track: HMSTrack?) -> [String: Any] {
|
|
55
61
|
|
|
56
62
|
guard let hmsTrack = track else { return [:] }
|
|
@@ -59,9 +65,9 @@ class HmsDecoder: NSObject {
|
|
|
59
65
|
let source = hmsTrack.source
|
|
60
66
|
let trackDescription = hmsTrack.trackDescription
|
|
61
67
|
let isMute = hmsTrack.isMute()
|
|
62
|
-
let type = HmsHelper.getHmsTrackType(hmsTrack.kind)
|
|
68
|
+
let type = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
63
69
|
|
|
64
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": type]
|
|
70
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": type, "kind": type]
|
|
65
71
|
}
|
|
66
72
|
|
|
67
73
|
static func getHmsAudioTrack (_ hmsAudioTrack: HMSAudioTrack?) -> [String: Any] {
|
|
@@ -72,8 +78,9 @@ class HmsDecoder: NSObject {
|
|
|
72
78
|
let source: String = hmsTrack.source
|
|
73
79
|
let trackDescription: String = hmsTrack.trackDescription
|
|
74
80
|
let isMute: Bool = hmsTrack.isMute()
|
|
81
|
+
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
75
82
|
|
|
76
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute]
|
|
83
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "type": kind, "kind": kind]
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
static func getHmsVideoTrack (_ hmsVideoTrack: HMSVideoTrack?) -> [String: Any] {
|
|
@@ -85,8 +92,9 @@ class HmsDecoder: NSObject {
|
|
|
85
92
|
let trackDescription = hmsTrack.trackDescription
|
|
86
93
|
let isMute = hmsTrack.isMute()
|
|
87
94
|
let isDegraded = hmsTrack.isDegraded()
|
|
95
|
+
let kind: String = HmsHelper.getHmsTrackType(hmsTrack.kind) ?? ""
|
|
88
96
|
|
|
89
|
-
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "isDegraded": isDegraded]
|
|
97
|
+
return ["trackId": trackId, "source": source, "trackDescription": trackDescription, "isMute": isMute, "isDegraded": isDegraded, "type": kind, "kind": kind]
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
static func getHmsLocalPeer(_ hmsLocalPeer: HMSLocalPeer?) -> [String: Any] {
|
|
@@ -113,12 +121,14 @@ class HmsDecoder: NSObject {
|
|
|
113
121
|
|
|
114
122
|
var localAudioTrackData = [String: Any]()
|
|
115
123
|
if let localAudio = localAudioTrack {
|
|
116
|
-
|
|
124
|
+
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
125
|
+
localAudioTrackData = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
var localVideoTrackData = [String: Any]()
|
|
120
129
|
if let localVideo = localVideoTrack {
|
|
121
|
-
|
|
130
|
+
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
131
|
+
localVideoTrackData = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute":localAudioTrack?.isMute() ?? false, "type": type, "kind": type]
|
|
122
132
|
}
|
|
123
133
|
|
|
124
134
|
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]
|
|
@@ -162,11 +172,11 @@ class HmsDecoder: NSObject {
|
|
|
162
172
|
static func getHmsVideoTrackCodec(_ codec : HMSCodec) -> String {
|
|
163
173
|
switch(codec) {
|
|
164
174
|
case HMSCodec.VP8:
|
|
165
|
-
return "
|
|
175
|
+
return "VP8"
|
|
166
176
|
case HMSCodec.H264:
|
|
167
|
-
return "
|
|
177
|
+
return "H264"
|
|
168
178
|
default:
|
|
169
|
-
return "
|
|
179
|
+
return "H264"
|
|
170
180
|
}
|
|
171
181
|
}
|
|
172
182
|
|
|
@@ -222,12 +232,14 @@ class HmsDecoder: NSObject {
|
|
|
222
232
|
|
|
223
233
|
var remoteAudioTrackData = [String: Any]()
|
|
224
234
|
if let remoteAudio = remoteAudioTrack {
|
|
225
|
-
|
|
235
|
+
let type = HmsHelper.getHmsTrackType(remoteAudio.kind) ?? ""
|
|
236
|
+
remoteAudioTrackData = ["trackId": remoteAudio.trackId, "source": remoteAudio.source, "trackDescription": remoteAudio.trackDescription, "playbackAllowed": remoteAudio.isPlaybackAllowed(), "isMute": remoteAudio.isMute(), "type": type, "kind": type]
|
|
226
237
|
}
|
|
227
238
|
|
|
228
239
|
var remoteVideoTrackData = [String: Any]()
|
|
229
240
|
if let remoteVideo = remoteVideoTrack {
|
|
230
|
-
|
|
241
|
+
let type = HmsHelper.getHmsTrackType(remoteVideo.kind) ?? ""
|
|
242
|
+
remoteVideoTrackData = ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute(), "isDegraded": remoteVideo.isDegraded(), "type": type, "kind": type]
|
|
231
243
|
}
|
|
232
244
|
|
|
233
245
|
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]
|
|
@@ -239,12 +251,14 @@ class HmsDecoder: NSObject {
|
|
|
239
251
|
|
|
240
252
|
for track in tracks {
|
|
241
253
|
if let localVideo = track as? HMSLocalVideoTrack {
|
|
242
|
-
let
|
|
254
|
+
let type = HmsHelper.getHmsTrackType(localVideo.kind) ?? ""
|
|
255
|
+
let localVideoTrackData: [String : Any] = ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "kind": type, "type": type]
|
|
243
256
|
hmsTracks["videoTrack"] = localVideoTrackData
|
|
244
257
|
}
|
|
245
258
|
|
|
246
259
|
if let localAudio = track as? HMSLocalAudioTrack {
|
|
247
|
-
let
|
|
260
|
+
let type = HmsHelper.getHmsTrackType(localAudio.kind) ?? ""
|
|
261
|
+
let localAudioTrackData: [String : Any] = ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "kind": type, "type": type]
|
|
248
262
|
hmsTracks["audioTrack"] = localAudioTrackData
|
|
249
263
|
}
|
|
250
264
|
}
|
|
@@ -268,12 +282,13 @@ class HmsDecoder: NSObject {
|
|
|
268
282
|
let name = role.name
|
|
269
283
|
let permissions = getHmsPermissions(role.permissions)
|
|
270
284
|
let publishSettings = getHmsPublishSettings(role.publishSettings)
|
|
285
|
+
let subscribeSettings = getHmsSubscribeSettings(role.subscribeSettings)
|
|
271
286
|
let priority = role.priority
|
|
272
287
|
let generalPermissions = role.generalPermissions ?? [:]
|
|
273
288
|
let internalPlugins = role.internalPlugins ?? [:]
|
|
274
289
|
let externalPlugins = role.externalPlugins ?? [:]
|
|
275
290
|
|
|
276
|
-
return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "priority": priority, "generalPermissions": generalPermissions, "internalPlugins": internalPlugins, "externalPlugins": externalPlugins]
|
|
291
|
+
return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "subscribeSettings": subscribeSettings, "priority": priority, "generalPermissions": generalPermissions, "internalPlugins": internalPlugins, "externalPlugins": externalPlugins]
|
|
277
292
|
}
|
|
278
293
|
|
|
279
294
|
static func getHmsPermissions (_ permissions: HMSPermissions) -> [String: Any] {
|
|
@@ -316,6 +331,30 @@ class HmsDecoder: NSObject {
|
|
|
316
331
|
"screenSimulcastLayers": screenSimulcastLayers,
|
|
317
332
|
"allowed": allowed]
|
|
318
333
|
}
|
|
334
|
+
|
|
335
|
+
static func getHmsSubscribeSettings (_ subscribeSettings: HMSSubscribeSettings?) -> [String: Any] {
|
|
336
|
+
guard let settings = subscribeSettings
|
|
337
|
+
else { return [:] }
|
|
338
|
+
|
|
339
|
+
let maxSubsBitRate = settings.maxSubsBitRate
|
|
340
|
+
let subscribeDegradationParam = getHmsSubscribeDegradationSettings(settings.subscribeDegradation)
|
|
341
|
+
let subscribeTo = settings.subscribeToRoles
|
|
342
|
+
|
|
343
|
+
return ["maxSubsBitRate": maxSubsBitRate, "subscribeDegradationParam": subscribeDegradationParam, "subscribeTo": subscribeTo ?? []]
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
static func getHmsSubscribeDegradationSettings (_ hmsSubscribeDegradationParams: HMSSubscribeDegradationPolicy?) -> [String: Any] {
|
|
347
|
+
guard let params = hmsSubscribeDegradationParams
|
|
348
|
+
else {
|
|
349
|
+
return [:]
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
let degradeGracePeriodSeconds = String(params.degradeGracePeriodSeconds ?? 0)
|
|
353
|
+
let packetLossThreshold = String(params.packetLossThreshold ?? 0)
|
|
354
|
+
let recoverGracePeriodSeconds = String(params.recoverGracePeriodSeconds ?? 0)
|
|
355
|
+
|
|
356
|
+
return ["degradeGracePeriodSeconds": degradeGracePeriodSeconds, "packetLossThreshold": packetLossThreshold, "recoverGracePeriodSeconds": recoverGracePeriodSeconds]
|
|
357
|
+
}
|
|
319
358
|
|
|
320
359
|
static func getWriteableArray(_ array: [String]?) -> [String] {
|
|
321
360
|
var decodedArray = [String]()
|
|
@@ -342,6 +381,8 @@ class HmsDecoder: NSObject {
|
|
|
342
381
|
let width = videoSettings.width
|
|
343
382
|
let height = videoSettings.height
|
|
344
383
|
|
|
384
|
+
|
|
385
|
+
|
|
345
386
|
return ["bitRate": bitRate ?? 0, "codec": codec, "frameRate": frameRate, "width": width, "height": height]
|
|
346
387
|
}
|
|
347
388
|
|
|
@@ -397,14 +438,14 @@ class HmsDecoder: NSObject {
|
|
|
397
438
|
return [:]
|
|
398
439
|
}
|
|
399
440
|
|
|
400
|
-
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest) -> [String: Any] {
|
|
441
|
+
static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest, _ id: String) -> [String: Any] {
|
|
401
442
|
var requestedBy: [String: Any]?
|
|
402
443
|
if let peer = changeTrackStateRequest.requestedBy {
|
|
403
444
|
requestedBy = getHmsPeer(peer)
|
|
404
445
|
}
|
|
405
446
|
let trackType = changeTrackStateRequest.track.kind == .video ? "video" : "audio"
|
|
406
447
|
|
|
407
|
-
var request = ["trackType": trackType] as [String: Any]
|
|
448
|
+
var request = ["trackType": trackType, "id": id, "mute": changeTrackStateRequest.mute] as [String: Any]
|
|
408
449
|
if let requestedBy = requestedBy {
|
|
409
450
|
request["requestedBy"] = requestedBy
|
|
410
451
|
}
|
|
@@ -461,4 +502,32 @@ class HmsDecoder: NSObject {
|
|
|
461
502
|
return [:]
|
|
462
503
|
}
|
|
463
504
|
}
|
|
505
|
+
|
|
506
|
+
static func getHlsStreamingState(_ data: HMSHLSStreamingState?) -> [String: Any] {
|
|
507
|
+
if let streamingState = data {
|
|
508
|
+
let running = streamingState.running
|
|
509
|
+
let variants = HmsDecoder.getHMSHlsVariant(streamingState.variants)
|
|
510
|
+
|
|
511
|
+
return ["running": running, "variants": variants]
|
|
512
|
+
} else {
|
|
513
|
+
return [:]
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
static func getHMSHlsVariant(_ data: [HMSHLSVariant]?) -> [[String: Any]] {
|
|
518
|
+
var variants = [[String: Any]]()
|
|
519
|
+
|
|
520
|
+
if let hlsVariant = data {
|
|
521
|
+
for variant in hlsVariant {
|
|
522
|
+
let meetingUrl = variant.meetingURL.absoluteString
|
|
523
|
+
let metadata = variant.metadata
|
|
524
|
+
let startedAt = variant.startedAt?.timeIntervalSince1970 ?? 0
|
|
525
|
+
let hlsStreamingUrl = variant.url.absoluteString
|
|
526
|
+
|
|
527
|
+
let decodedVariant = ["meetingUrl": meetingUrl, "metadata": metadata, "hlsStreamUrl": hlsStreamingUrl, "startedAt": startedAt] as [String: Any]
|
|
528
|
+
variants.append(decodedVariant)
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
return variants
|
|
532
|
+
}
|
|
464
533
|
}
|
package/ios/HmsHelper.swift
CHANGED
|
@@ -3,7 +3,17 @@ import Foundation
|
|
|
3
3
|
|
|
4
4
|
class HmsHelper: NSObject {
|
|
5
5
|
|
|
6
|
-
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
|
|
6
|
+
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
|
|
7
|
+
|
|
8
|
+
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
9
|
+
if(peerID == localPeer?.peerID) {
|
|
10
|
+
return localPeer
|
|
11
|
+
}
|
|
12
|
+
return peers.first { $0.peerID == peerID }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
static func getRemotePeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
|
|
7
17
|
|
|
8
18
|
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
9
19
|
|
|
@@ -156,9 +166,9 @@ class HmsHelper: NSObject {
|
|
|
156
166
|
|
|
157
167
|
static func getVideoCodec(_ codecString: String?) -> HMSCodec {
|
|
158
168
|
switch codecString {
|
|
159
|
-
case "
|
|
169
|
+
case "H264":
|
|
160
170
|
return HMSCodec.H264
|
|
161
|
-
case "
|
|
171
|
+
case "VP8":
|
|
162
172
|
return HMSCodec.VP8
|
|
163
173
|
default:
|
|
164
174
|
return HMSCodec.H264
|
|
@@ -190,4 +200,25 @@ class HmsHelper: NSObject {
|
|
|
190
200
|
return nil
|
|
191
201
|
}
|
|
192
202
|
}
|
|
203
|
+
|
|
204
|
+
static func getHMSHLSMeetingURLVariants(_ variants: [[String: Any]]?) -> [HMSHLSMeetingURLVariant] {
|
|
205
|
+
var hlsVariants: [HMSHLSMeetingURLVariant] = []
|
|
206
|
+
for variant in variants ?? [] {
|
|
207
|
+
let meetingURLVariant = HmsHelper.getHMSHLSMeetingURLVariant(variant)
|
|
208
|
+
if let extractedVariant = meetingURLVariant {
|
|
209
|
+
hlsVariants.append(extractedVariant)
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return hlsVariants
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
static func getHMSHLSMeetingURLVariant(_ variant: [String: Any]) -> HMSHLSMeetingURLVariant? {
|
|
216
|
+
let meetingUrl = variant["meetingUrl"] as? String
|
|
217
|
+
let metadata = variant["metadata"] as? String
|
|
218
|
+
|
|
219
|
+
if let extractedUrl = meetingUrl, let url = URL(string: extractedUrl) {
|
|
220
|
+
return HMSHLSMeetingURLVariant(meetingURL: url, metadata: metadata ?? "")
|
|
221
|
+
}
|
|
222
|
+
return nil
|
|
223
|
+
}
|
|
193
224
|
}
|
package/ios/HmsManager.m
CHANGED
|
@@ -7,16 +7,16 @@ RCT_EXTERN_METHOD(join: (NSDictionary) credentials)
|
|
|
7
7
|
RCT_EXTERN_METHOD(preview: (NSDictionary) credentials)
|
|
8
8
|
RCT_EXTERN_METHOD(setLocalMute: (NSDictionary) isMute)
|
|
9
9
|
RCT_EXTERN_METHOD(setLocalVideoMute: (NSDictionary) isMute)
|
|
10
|
-
RCT_EXTERN_METHOD(sendBroadcastMessage: (NSDictionary) data)
|
|
11
|
-
RCT_EXTERN_METHOD(sendGroupMessage: (NSDictionary) data)
|
|
12
|
-
RCT_EXTERN_METHOD(sendDirectMessage: (NSDictionary) data)
|
|
10
|
+
RCT_EXTERN_METHOD(sendBroadcastMessage: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
11
|
+
RCT_EXTERN_METHOD(sendGroupMessage: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
12
|
+
RCT_EXTERN_METHOD(sendDirectMessage: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
13
13
|
RCT_EXTERN_METHOD(setPlaybackAllowed: (NSDictionary) data)
|
|
14
|
-
RCT_EXTERN_METHOD(removePeer: (NSDictionary) data)
|
|
15
|
-
RCT_EXTERN_METHOD(endRoom: (NSDictionary) data)
|
|
16
|
-
RCT_EXTERN_METHOD(changeRole: (NSDictionary) data)
|
|
17
|
-
RCT_EXTERN_METHOD(changeTrackState: (NSDictionary) data)
|
|
18
|
-
RCT_EXTERN_METHOD(
|
|
19
|
-
RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data)
|
|
14
|
+
RCT_EXTERN_METHOD(removePeer: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
15
|
+
RCT_EXTERN_METHOD(endRoom: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
16
|
+
RCT_EXTERN_METHOD(changeRole: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
17
|
+
RCT_EXTERN_METHOD(changeTrackState: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
18
|
+
RCT_EXTERN_METHOD(changeTrackStateForRoles: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
19
|
+
RCT_EXTERN_METHOD(acceptRoleChange: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
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)
|
|
@@ -28,4 +28,6 @@ RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBloc
|
|
|
28
28
|
RCT_EXTERN_METHOD(changeMetadata: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
29
29
|
RCT_EXTERN_METHOD(startRTMPOrRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
30
30
|
RCT_EXTERN_METHOD(stopRtmpAndRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
31
|
+
RCT_EXTERN_METHOD(startHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
32
|
+
RCT_EXTERN_METHOD(stopHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
31
33
|
@end
|