@100mslive/react-native-hms 0.9.7 → 0.9.91
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 +63 -44
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- 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/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +6 -1
- package/android/.idea/jarRepositories.xml +40 -0
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_4_1_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_4_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_3_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_7_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_4_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_4_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_69_1_debug_aar.xml +14 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_3.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_3.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_3_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_github_100mslive_android_sdk_lib_2_4_7_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_hms_1_1_aar.xml +11 -0
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_2.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_6_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_6_0.xml +13 -0
- package/android/.idea/misc.xml +1 -1
- package/android/.idea/modules/android.androidTest.iml +201 -0
- package/android/.idea/modules/android.iml +28 -6
- package/android/.idea/modules/android.main.iml +196 -0
- package/android/.idea/modules/android.unitTest.iml +195 -0
- package/android/.idea/modules.xml +3 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +84 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +79 -10
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +130 -27
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +88 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +307 -82
- package/ios/HMSDecoder.swift +9 -8
- package/ios/HMSHelper.swift +18 -8
- package/ios/HMSManager.m +1 -1
- package/ios/HMSManager.swift +7 -6
- package/ios/HMSRNSDK.swift +198 -173
- package/lib/commonjs/classes/HMSAudioDevice.js +17 -0
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -0
- package/lib/commonjs/classes/HMSAudioMixingMode.js +15 -0
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -0
- package/lib/commonjs/classes/HMSAudioMode.js +17 -0
- package/lib/commonjs/classes/HMSAudioMode.js.map +1 -0
- package/lib/commonjs/classes/HMSEncoder.js +15 -0
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSException.js +18 -13
- package/lib/commonjs/classes/HMSException.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +2 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +7 -4
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js +3 -0
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpVideoResolution.js +23 -0
- package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +268 -48
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +1 -0
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/index.js +56 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSAudioDevice.js +10 -0
- package/lib/module/classes/HMSAudioDevice.js.map +1 -0
- package/lib/module/classes/HMSAudioMixingMode.js +8 -0
- package/lib/module/classes/HMSAudioMixingMode.js.map +1 -0
- package/lib/module/classes/HMSAudioMode.js +10 -0
- package/lib/module/classes/HMSAudioMode.js.map +1 -0
- package/lib/module/classes/HMSEncoder.js +14 -0
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSException.js +18 -13
- package/lib/module/classes/HMSException.js.map +1 -1
- package/lib/module/classes/HMSHLSConfig.js.map +1 -1
- package/lib/module/classes/HMSLogger.js +2 -2
- package/lib/module/classes/HMSLogger.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +7 -4
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js +3 -0
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/module/classes/HMSRtmpVideoResolution.js +14 -0
- package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +267 -42
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSAudioDevice.d.ts +7 -0
- package/lib/typescript/classes/HMSAudioMixingMode.d.ts +5 -0
- package/lib/typescript/classes/HMSAudioMode.d.ts +7 -0
- package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
- package/lib/typescript/classes/HMSException.d.ts +8 -14
- package/lib/typescript/classes/HMSHLSConfig.d.ts +2 -2
- package/lib/typescript/classes/HMSLogger.d.ts +1 -1
- package/lib/typescript/classes/HMSPermissions.d.ts +6 -4
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +3 -0
- package/lib/typescript/classes/HMSRtmpVideoResolution.d.ts +8 -0
- package/lib/typescript/classes/HMSSDK.d.ts +109 -11
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
- package/lib/typescript/index.d.ts +4 -0
- package/package.json +1 -19
- package/react-native-hms.podspec +1 -1
- package/src/classes/HMSAudioDevice.ts +7 -0
- package/src/classes/HMSAudioMixingMode.ts +5 -0
- package/src/classes/HMSAudioMode.ts +7 -0
- package/src/classes/HMSEncoder.ts +12 -0
- package/src/classes/HMSException.ts +15 -24
- package/src/classes/HMSHLSConfig.ts +2 -2
- package/src/classes/HMSLogger.ts +2 -2
- package/src/classes/HMSPermissions.ts +9 -6
- package/src/classes/HMSRTMPConfig.ts +5 -0
- package/src/classes/HMSRtmpVideoResolution.ts +9 -0
- package/src/classes/HMSSDK.tsx +341 -49
- package/src/classes/HMSUpdateListenerActions.ts +1 -0
- package/src/index.ts +4 -0
|
@@ -6,12 +6,13 @@ import com.facebook.react.bridge.*
|
|
|
6
6
|
import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
|
|
7
7
|
import java.util.*
|
|
8
8
|
import kotlinx.coroutines.launch
|
|
9
|
+
import live.hms.video.audio.HMSAudioManager
|
|
10
|
+
import live.hms.video.connection.stats.*
|
|
9
11
|
import live.hms.video.error.HMSException
|
|
10
|
-
import live.hms.video.media.tracks
|
|
11
|
-
import live.hms.video.media.tracks.HMSTrack
|
|
12
|
-
import live.hms.video.media.tracks.HMSTrackType
|
|
12
|
+
import live.hms.video.media.tracks.*
|
|
13
13
|
import live.hms.video.sdk.*
|
|
14
14
|
import live.hms.video.sdk.models.*
|
|
15
|
+
import live.hms.video.sdk.models.enums.AudioMixingMode
|
|
15
16
|
import live.hms.video.sdk.models.enums.HMSPeerUpdate
|
|
16
17
|
import live.hms.video.sdk.models.enums.HMSRoomUpdate
|
|
17
18
|
import live.hms.video.sdk.models.enums.HMSTrackUpdate
|
|
@@ -27,10 +28,15 @@ class HMSRNSDK(
|
|
|
27
28
|
) {
|
|
28
29
|
var hmsSDK: HMSSDK? = null
|
|
29
30
|
var screenshareCallback: Promise? = null
|
|
31
|
+
var audioshareCallback: Promise? = null
|
|
32
|
+
var isAudioSharing: Boolean = false
|
|
30
33
|
var delegate: HMSManager = HmsDelegate
|
|
31
34
|
private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
|
|
32
35
|
private var context: ReactApplicationContext = reactApplicationContext
|
|
33
36
|
private var previewInProgress: Boolean = false
|
|
37
|
+
private var reconnectingStage: Boolean = false
|
|
38
|
+
private var rtcStatsAttached: Boolean = false
|
|
39
|
+
private var audioMixingMode: AudioMixingMode = AudioMixingMode.TALK_AND_MUSIC
|
|
34
40
|
private var id: String = sdkId
|
|
35
41
|
private var self = this
|
|
36
42
|
|
|
@@ -45,8 +51,7 @@ class HMSRNSDK(
|
|
|
45
51
|
|
|
46
52
|
private fun emitCustomError(message: String) {
|
|
47
53
|
val data: WritableMap = Arguments.createMap()
|
|
48
|
-
val hmsError = HMSException(
|
|
49
|
-
data.putString("event", "ON_ERROR")
|
|
54
|
+
val hmsError = HMSException(6002, message, message, message, message, null, false)
|
|
50
55
|
data.putString("id", id)
|
|
51
56
|
data.putMap("error", HMSDecoder.getError(hmsError))
|
|
52
57
|
delegate.emitEvent("ON_ERROR", data)
|
|
@@ -55,20 +60,26 @@ class HMSRNSDK(
|
|
|
55
60
|
private fun emitRequiredKeysError(message: String) {
|
|
56
61
|
val data: WritableMap = Arguments.createMap()
|
|
57
62
|
val hmsError =
|
|
58
|
-
HMSException(
|
|
59
|
-
|
|
63
|
+
HMSException(
|
|
64
|
+
6002,
|
|
65
|
+
"REQUIRED_KEYS_NOT_FOUND",
|
|
66
|
+
"SEND_ALL_REQUIRED_KEYS",
|
|
67
|
+
message,
|
|
68
|
+
message,
|
|
69
|
+
null,
|
|
70
|
+
false
|
|
71
|
+
)
|
|
60
72
|
data.putString("id", id)
|
|
61
73
|
data.putMap("error", HMSDecoder.getError(hmsError))
|
|
62
74
|
delegate.emitEvent("ON_ERROR", data)
|
|
63
75
|
}
|
|
64
76
|
|
|
65
77
|
private fun rejectCallback(callback: Promise?, message: String) {
|
|
66
|
-
callback?.reject("
|
|
78
|
+
callback?.reject("6002", message)
|
|
67
79
|
}
|
|
68
80
|
|
|
69
81
|
fun emitHMSError(error: HMSException) {
|
|
70
82
|
val data: WritableMap = Arguments.createMap()
|
|
71
|
-
data.putString("event", "ON_ERROR")
|
|
72
83
|
data.putString("id", id)
|
|
73
84
|
data.putMap("error", HMSDecoder.getError(error))
|
|
74
85
|
delegate.emitEvent("ON_ERROR", data)
|
|
@@ -85,7 +96,7 @@ class HMSRNSDK(
|
|
|
85
96
|
|
|
86
97
|
fun preview(credentials: ReadableMap) {
|
|
87
98
|
if (previewInProgress) {
|
|
88
|
-
self.emitCustomError("
|
|
99
|
+
self.emitCustomError("PREVIEW_IS_IN_PROGRESS")
|
|
89
100
|
return
|
|
90
101
|
}
|
|
91
102
|
val requiredKeys =
|
|
@@ -181,6 +192,7 @@ class HMSRNSDK(
|
|
|
181
192
|
arrayOf(Pair("username", "String"), Pair("authToken", "String"))
|
|
182
193
|
)
|
|
183
194
|
if (requiredKeys === null) {
|
|
195
|
+
reconnectingStage = false
|
|
184
196
|
val config = HMSHelper.getHmsConfig(credentials)
|
|
185
197
|
|
|
186
198
|
HMSCoroutineScope.launch {
|
|
@@ -312,6 +324,7 @@ class HMSRNSDK(
|
|
|
312
324
|
}
|
|
313
325
|
|
|
314
326
|
override fun onReconnected() {
|
|
327
|
+
reconnectingStage = false
|
|
315
328
|
val data: WritableMap = Arguments.createMap()
|
|
316
329
|
data.putString("event", "RECONNECTED")
|
|
317
330
|
data.putString("id", id)
|
|
@@ -319,7 +332,9 @@ class HMSRNSDK(
|
|
|
319
332
|
}
|
|
320
333
|
|
|
321
334
|
override fun onReconnecting(error: HMSException) {
|
|
335
|
+
reconnectingStage = true
|
|
322
336
|
val data: WritableMap = Arguments.createMap()
|
|
337
|
+
data.putMap("error", HMSDecoder.getError(error))
|
|
323
338
|
data.putString("event", "RECONNECTING")
|
|
324
339
|
data.putString("id", id)
|
|
325
340
|
delegate.emitEvent("RECONNECTING", data)
|
|
@@ -356,6 +371,109 @@ class HMSRNSDK(
|
|
|
356
371
|
}
|
|
357
372
|
}
|
|
358
373
|
)
|
|
374
|
+
|
|
375
|
+
hmsSDK?.addRtcStatsObserver(
|
|
376
|
+
object : HMSStatsObserver {
|
|
377
|
+
override fun onLocalAudioStats(
|
|
378
|
+
audioStats: HMSLocalAudioStats,
|
|
379
|
+
hmsTrack: HMSTrack?,
|
|
380
|
+
hmsPeer: HMSPeer?
|
|
381
|
+
) {
|
|
382
|
+
if (!rtcStatsAttached) {
|
|
383
|
+
return
|
|
384
|
+
}
|
|
385
|
+
val localAudioStats = HMSDecoder.getLocalAudioStats(audioStats)
|
|
386
|
+
val track = HMSDecoder.getHmsLocalAudioTrack(hmsTrack as HMSLocalAudioTrack)
|
|
387
|
+
val peer = HMSDecoder.getHmsPeer(hmsPeer)
|
|
388
|
+
|
|
389
|
+
val data: WritableMap = Arguments.createMap()
|
|
390
|
+
data.putMap("localAudioStats", localAudioStats)
|
|
391
|
+
data.putMap("track", track)
|
|
392
|
+
data.putMap("peer", peer)
|
|
393
|
+
data.putString("id", id)
|
|
394
|
+
delegate.emitEvent("ON_LOCAL_AUDIO_STATS", data)
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
override fun onLocalVideoStats(
|
|
398
|
+
videoStats: HMSLocalVideoStats,
|
|
399
|
+
hmsTrack: HMSTrack?,
|
|
400
|
+
hmsPeer: HMSPeer?
|
|
401
|
+
) {
|
|
402
|
+
if (!rtcStatsAttached) {
|
|
403
|
+
return
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
val localVideoStats = HMSDecoder.getLocalVideoStats(videoStats)
|
|
407
|
+
val track = HMSDecoder.getHmsLocalVideoTrack(hmsTrack as HMSLocalVideoTrack)
|
|
408
|
+
val peer = HMSDecoder.getHmsPeer(hmsPeer)
|
|
409
|
+
|
|
410
|
+
val data: WritableMap = Arguments.createMap()
|
|
411
|
+
data.putMap("localVideoStats", localVideoStats)
|
|
412
|
+
data.putMap("track", track)
|
|
413
|
+
data.putMap("peer", peer)
|
|
414
|
+
data.putString("id", id)
|
|
415
|
+
delegate.emitEvent("ON_LOCAL_VIDEO_STATS", data)
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
override fun onRTCStats(rtcStats: HMSRTCStatsReport) {
|
|
419
|
+
if (!rtcStatsAttached) {
|
|
420
|
+
return
|
|
421
|
+
}
|
|
422
|
+
val video = HMSDecoder.getHMSRTCStats(rtcStats.video)
|
|
423
|
+
val audio = HMSDecoder.getHMSRTCStats(rtcStats.audio)
|
|
424
|
+
val combined = HMSDecoder.getHMSRTCStats(rtcStats.combined)
|
|
425
|
+
|
|
426
|
+
val data: WritableMap = Arguments.createMap()
|
|
427
|
+
data.putMap("video", video)
|
|
428
|
+
data.putMap("audio", audio)
|
|
429
|
+
data.putMap("combined", combined)
|
|
430
|
+
data.putString("id", id)
|
|
431
|
+
delegate.emitEvent("ON_RTC_STATS", data)
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
override fun onRemoteAudioStats(
|
|
435
|
+
audioStats: HMSRemoteAudioStats,
|
|
436
|
+
hmsTrack: HMSTrack?,
|
|
437
|
+
hmsPeer: HMSPeer?
|
|
438
|
+
) {
|
|
439
|
+
if (!rtcStatsAttached) {
|
|
440
|
+
return
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
val remoteAudioStats = HMSDecoder.getRemoteAudioStats(audioStats)
|
|
444
|
+
val track = HMSDecoder.getHmsRemoteAudioTrack(hmsTrack as HMSRemoteAudioTrack)
|
|
445
|
+
val peer = HMSDecoder.getHmsPeer(hmsPeer)
|
|
446
|
+
|
|
447
|
+
val data: WritableMap = Arguments.createMap()
|
|
448
|
+
data.putMap("remoteAudioStats", remoteAudioStats)
|
|
449
|
+
data.putMap("track", track)
|
|
450
|
+
data.putMap("peer", peer)
|
|
451
|
+
data.putString("id", id)
|
|
452
|
+
delegate.emitEvent("ON_REMOTE_AUDIO_STATS", data)
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
override fun onRemoteVideoStats(
|
|
456
|
+
videoStats: HMSRemoteVideoStats,
|
|
457
|
+
hmsTrack: HMSTrack?,
|
|
458
|
+
hmsPeer: HMSPeer?
|
|
459
|
+
) {
|
|
460
|
+
if (!rtcStatsAttached) {
|
|
461
|
+
return
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
val remoteVideoStats = HMSDecoder.getRemoteVideoStats(videoStats)
|
|
465
|
+
val track = HMSDecoder.getHmsRemoteVideoTrack(hmsTrack as HMSRemoteVideoTrack)
|
|
466
|
+
val peer = HMSDecoder.getHmsPeer(hmsPeer)
|
|
467
|
+
|
|
468
|
+
val data: WritableMap = Arguments.createMap()
|
|
469
|
+
data.putMap("remoteVideoStats", remoteVideoStats)
|
|
470
|
+
data.putMap("track", track)
|
|
471
|
+
data.putMap("peer", peer)
|
|
472
|
+
data.putString("id", id)
|
|
473
|
+
delegate.emitEvent("ON_REMOTE_VIDEO_STATS", data)
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
)
|
|
359
477
|
}
|
|
360
478
|
} else {
|
|
361
479
|
val errorMessage = "join: $requiredKeys"
|
|
@@ -380,19 +498,25 @@ class HMSRNSDK(
|
|
|
380
498
|
}
|
|
381
499
|
|
|
382
500
|
fun leave(callback: Promise?) {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
501
|
+
if (reconnectingStage) {
|
|
502
|
+
callback?.reject("101", "Still in reconnecting stage")
|
|
503
|
+
} else {
|
|
504
|
+
hmsSDK?.leave(
|
|
505
|
+
object : HMSActionResultListener {
|
|
506
|
+
override fun onSuccess() {
|
|
507
|
+
isAudioSharing = false
|
|
508
|
+
screenshareCallback = null
|
|
509
|
+
audioshareCallback = null
|
|
510
|
+
callback?.resolve(emitHMSSuccess())
|
|
511
|
+
}
|
|
389
512
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
513
|
+
override fun onError(error: HMSException) {
|
|
514
|
+
callback?.reject(error.code.toString(), error.message)
|
|
515
|
+
self.emitHMSError(error)
|
|
516
|
+
}
|
|
393
517
|
}
|
|
394
|
-
|
|
395
|
-
|
|
518
|
+
)
|
|
519
|
+
}
|
|
396
520
|
}
|
|
397
521
|
|
|
398
522
|
fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
|
|
@@ -611,17 +735,11 @@ class HMSRNSDK(
|
|
|
611
735
|
val requiredKeys = HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("trackId", "String")))
|
|
612
736
|
if (requiredKeys === null) {
|
|
613
737
|
val trackId = data.getString("trackId")
|
|
614
|
-
val
|
|
615
|
-
if (
|
|
616
|
-
|
|
617
|
-
if (track != null) {
|
|
618
|
-
val mute = track.isMute
|
|
619
|
-
callback?.resolve(mute)
|
|
620
|
-
} else {
|
|
621
|
-
callback?.reject("101", "NOT_FOUND")
|
|
622
|
-
}
|
|
738
|
+
val track = HMSHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
739
|
+
if (track == null) {
|
|
740
|
+
callback?.reject("101", "TRACK_NOT_FOUND")
|
|
623
741
|
} else {
|
|
624
|
-
val mute =
|
|
742
|
+
val mute = track.isMute
|
|
625
743
|
callback?.resolve(mute)
|
|
626
744
|
}
|
|
627
745
|
} else {
|
|
@@ -709,13 +827,13 @@ class HMSRNSDK(
|
|
|
709
827
|
)
|
|
710
828
|
recentRoleChangeRequest = null
|
|
711
829
|
} else {
|
|
712
|
-
val errorMessage = "acceptRoleChange: recentRoleChangeRequest
|
|
830
|
+
val errorMessage = "acceptRoleChange: recentRoleChangeRequest not found"
|
|
713
831
|
self.emitRequiredKeysError(errorMessage)
|
|
714
832
|
rejectCallback(callback, errorMessage)
|
|
715
833
|
}
|
|
716
834
|
}
|
|
717
835
|
|
|
718
|
-
fun remoteMuteAllAudio() {
|
|
836
|
+
fun remoteMuteAllAudio(callback: Promise?) {
|
|
719
837
|
val allAudioTracks = hmsSDK?.getRoom()?.let { HmsUtilities.getAllAudioTracks(it) }
|
|
720
838
|
if (allAudioTracks != null) {
|
|
721
839
|
var customError: HMSException? = null
|
|
@@ -731,10 +849,13 @@ class HMSRNSDK(
|
|
|
731
849
|
}
|
|
732
850
|
)
|
|
733
851
|
}
|
|
734
|
-
if (customError
|
|
735
|
-
|
|
852
|
+
if (customError === null) {
|
|
853
|
+
callback?.resolve(emitHMSSuccess())
|
|
854
|
+
} else {
|
|
855
|
+
rejectCallback(callback, customError!!.message)
|
|
736
856
|
}
|
|
737
857
|
}
|
|
858
|
+
rejectCallback(callback, "Audio tracks not found")
|
|
738
859
|
}
|
|
739
860
|
|
|
740
861
|
fun setPlaybackForAllAudio(data: ReadableMap) {
|
|
@@ -802,7 +923,7 @@ class HMSRNSDK(
|
|
|
802
923
|
callback?.resolve(isPlaybackAllowed)
|
|
803
924
|
}
|
|
804
925
|
else -> {
|
|
805
|
-
callback?.reject("101", "
|
|
926
|
+
callback?.reject("101", "TRACK_NOT_FOUND")
|
|
806
927
|
}
|
|
807
928
|
}
|
|
808
929
|
} else {
|
|
@@ -850,7 +971,7 @@ class HMSRNSDK(
|
|
|
850
971
|
}
|
|
851
972
|
}
|
|
852
973
|
}
|
|
853
|
-
this.emitCustomError("
|
|
974
|
+
this.emitCustomError("TRACK_NOT_FOUND")
|
|
854
975
|
} else {
|
|
855
976
|
this.emitCustomError("REMOTE_PEERS_NOT_FOUND")
|
|
856
977
|
}
|
|
@@ -914,27 +1035,25 @@ class HMSRNSDK(
|
|
|
914
1035
|
arrayOf(Pair("record", "Boolean"), Pair("meetingURL", "String"))
|
|
915
1036
|
)
|
|
916
1037
|
if (requiredKeys === null) {
|
|
917
|
-
val
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
callback?.reject(error.code.toString(), error.message)
|
|
934
|
-
self.emitHMSError(error)
|
|
1038
|
+
val config = HMSHelper.getRtmpConfig(data)
|
|
1039
|
+
if (config === null) {
|
|
1040
|
+
val errorMessage = "startRTMPOrRecording: INVALID_MEETING_URL_PASSED"
|
|
1041
|
+
self.emitRequiredKeysError(errorMessage)
|
|
1042
|
+
rejectCallback(callback, errorMessage)
|
|
1043
|
+
} else {
|
|
1044
|
+
hmsSDK?.startRtmpOrRecording(
|
|
1045
|
+
config,
|
|
1046
|
+
object : HMSActionResultListener {
|
|
1047
|
+
override fun onSuccess() {
|
|
1048
|
+
callback?.resolve(emitHMSSuccess())
|
|
1049
|
+
}
|
|
1050
|
+
override fun onError(error: HMSException) {
|
|
1051
|
+
callback?.reject(error.code.toString(), error.message)
|
|
1052
|
+
self.emitHMSError(error)
|
|
1053
|
+
}
|
|
935
1054
|
}
|
|
936
|
-
|
|
937
|
-
|
|
1055
|
+
)
|
|
1056
|
+
}
|
|
938
1057
|
} else {
|
|
939
1058
|
val errorMessage = "startRTMPOrRecording: $requiredKeys"
|
|
940
1059
|
self.emitRequiredKeysError(errorMessage)
|
|
@@ -987,32 +1106,19 @@ class HMSRNSDK(
|
|
|
987
1106
|
}
|
|
988
1107
|
|
|
989
1108
|
fun startHLSStreaming(data: ReadableMap, callback: Promise?) {
|
|
990
|
-
val
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
val hlsRecordingConfig = HMSHelper.getHlsRecordingConfig(data)
|
|
997
|
-
val config = HMSHLSConfig(hlsMeetingUrlVariant, hlsRecordingConfig)
|
|
998
|
-
|
|
999
|
-
hmsSDK?.startHLSStreaming(
|
|
1000
|
-
config,
|
|
1001
|
-
object : HMSActionResultListener {
|
|
1002
|
-
override fun onSuccess() {
|
|
1003
|
-
callback?.resolve(emitHMSSuccess())
|
|
1004
|
-
}
|
|
1005
|
-
override fun onError(error: HMSException) {
|
|
1006
|
-
callback?.reject(error.code.toString(), error.message)
|
|
1007
|
-
self.emitHMSError(error)
|
|
1008
|
-
}
|
|
1109
|
+
val hlsConfig = HMSHelper.getHLSConfig(data)
|
|
1110
|
+
hmsSDK?.startHLSStreaming(
|
|
1111
|
+
hlsConfig,
|
|
1112
|
+
object : HMSActionResultListener {
|
|
1113
|
+
override fun onSuccess() {
|
|
1114
|
+
callback?.resolve(emitHMSSuccess())
|
|
1009
1115
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1116
|
+
override fun onError(error: HMSException) {
|
|
1117
|
+
callback?.reject(error.code.toString(), error.message)
|
|
1118
|
+
self.emitHMSError(error)
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
)
|
|
1016
1122
|
}
|
|
1017
1123
|
|
|
1018
1124
|
fun stopHLSStreaming(callback: Promise?) {
|
|
@@ -1079,4 +1185,123 @@ class HMSRNSDK(
|
|
|
1079
1185
|
rejectCallback(callback, errorMessage)
|
|
1080
1186
|
}
|
|
1081
1187
|
}
|
|
1188
|
+
|
|
1189
|
+
fun enableRTCStats() {
|
|
1190
|
+
rtcStatsAttached = true
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
fun disableRTCStats() {
|
|
1194
|
+
rtcStatsAttached = false
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
fun getAudioDevicesList(callback: Promise?) {
|
|
1198
|
+
callback?.resolve(HMSHelper.getAudioDevicesList(hmsSDK?.getAudioDevicesList()))
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
fun getAudioOutputRouteType(callback: Promise?) {
|
|
1202
|
+
callback?.resolve(hmsSDK?.getAudioOutputRouteType()?.name)
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
fun switchAudioOutput(data: ReadableMap) {
|
|
1206
|
+
val requiredKeys =
|
|
1207
|
+
HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioDevice", "String")))
|
|
1208
|
+
if (requiredKeys === null) {
|
|
1209
|
+
val audioDevice = data.getString("audioDevice")
|
|
1210
|
+
hmsSDK?.switchAudioOutput(HMSHelper.getAudioDevice(audioDevice))
|
|
1211
|
+
} else {
|
|
1212
|
+
val errorMessage = "switchAudioOutput: $requiredKeys"
|
|
1213
|
+
self.emitRequiredKeysError(errorMessage)
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
fun setAudioMode(data: ReadableMap) {
|
|
1218
|
+
val requiredKeys = HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioMode", "Int")))
|
|
1219
|
+
if (requiredKeys === null) {
|
|
1220
|
+
val audioMode = data.getInt("audioMode")
|
|
1221
|
+
hmsSDK?.setAudioMode(audioMode)
|
|
1222
|
+
} else {
|
|
1223
|
+
val errorMessage = "setAudioMode: $requiredKeys"
|
|
1224
|
+
self.emitRequiredKeysError(errorMessage)
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
fun setAudioDeviceChangeListener() {
|
|
1229
|
+
hmsSDK?.setAudioDeviceChangeListener(
|
|
1230
|
+
object : HMSAudioManager.AudioManagerDeviceChangeListener {
|
|
1231
|
+
override fun onAudioDeviceChanged(
|
|
1232
|
+
device: HMSAudioManager.AudioDevice?,
|
|
1233
|
+
audioDevicesList: Set<HMSAudioManager.AudioDevice>?
|
|
1234
|
+
) {
|
|
1235
|
+
val data: WritableMap = Arguments.createMap()
|
|
1236
|
+
data.putString("device", device?.name)
|
|
1237
|
+
data.putArray("audioDevicesList", HMSHelper.getAudioDevicesSet(audioDevicesList))
|
|
1238
|
+
data.putString("id", id)
|
|
1239
|
+
delegate.emitEvent("ON_AUDIO_DEVICE_CHANGED", data)
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
override fun onError(error: HMSException) {
|
|
1243
|
+
self.emitHMSError(error)
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
)
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
fun startAudioshare(data: ReadableMap, callback: Promise?) {
|
|
1250
|
+
val requiredKeys =
|
|
1251
|
+
HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioMixingMode", "String")))
|
|
1252
|
+
if (requiredKeys === null) {
|
|
1253
|
+
audioshareCallback = callback
|
|
1254
|
+
runOnUiThread {
|
|
1255
|
+
val intent = Intent(context, HMSAudioshareActivity::class.java)
|
|
1256
|
+
intent.flags = FLAG_ACTIVITY_NEW_TASK
|
|
1257
|
+
intent.putExtra("id", id)
|
|
1258
|
+
intent.putExtra("audioMixingMode", data.getString("audioMixingMode"))
|
|
1259
|
+
context.startActivity(intent)
|
|
1260
|
+
}
|
|
1261
|
+
} else {
|
|
1262
|
+
val errorMessage = "startAudioshare: $requiredKeys"
|
|
1263
|
+
self.emitRequiredKeysError(errorMessage)
|
|
1264
|
+
rejectCallback(callback, errorMessage)
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
fun isAudioShared(callback: Promise?) {
|
|
1269
|
+
callback?.resolve(isAudioSharing)
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
fun stopAudioshare(callback: Promise?) {
|
|
1273
|
+
hmsSDK?.stopAudioshare(
|
|
1274
|
+
object : HMSActionResultListener {
|
|
1275
|
+
override fun onError(error: HMSException) {
|
|
1276
|
+
audioshareCallback = null
|
|
1277
|
+
callback?.reject(error.code.toString(), error.message)
|
|
1278
|
+
self.emitHMSError(error)
|
|
1279
|
+
}
|
|
1280
|
+
override fun onSuccess() {
|
|
1281
|
+
isAudioSharing = false
|
|
1282
|
+
audioshareCallback = null
|
|
1283
|
+
callback?.resolve(emitHMSSuccess())
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
)
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
fun getAudioMixingMode(): AudioMixingMode {
|
|
1290
|
+
return audioMixingMode
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
fun setAudioMixingMode(data: ReadableMap, callback: Promise?) {
|
|
1294
|
+
val requiredKeys =
|
|
1295
|
+
HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioMixingMode", "String")))
|
|
1296
|
+
if (requiredKeys === null) {
|
|
1297
|
+
val mode = HMSHelper.getAudioMixingMode(data.getString("audioMixingMode"))
|
|
1298
|
+
audioMixingMode = mode
|
|
1299
|
+
hmsSDK?.setAudioMixingMode(mode)
|
|
1300
|
+
callback?.resolve(emitHMSSuccess())
|
|
1301
|
+
} else {
|
|
1302
|
+
val errorMessage = "setAudioMixingMode: $requiredKeys"
|
|
1303
|
+
self.emitRequiredKeysError(errorMessage)
|
|
1304
|
+
rejectCallback(callback, errorMessage)
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1082
1307
|
}
|
package/ios/HMSDecoder.swift
CHANGED
|
@@ -320,16 +320,18 @@ class HMSDecoder: NSObject {
|
|
|
320
320
|
|
|
321
321
|
let endRoom = permissions.endRoom ?? false
|
|
322
322
|
let removeOthers = permissions.removeOthers ?? false
|
|
323
|
-
let
|
|
324
|
-
let
|
|
323
|
+
let browserRecording = permissions.browserRecording ?? false
|
|
324
|
+
let hlsStreaming = permissions.hlsStreaming ?? false
|
|
325
|
+
let rtmpStreaming = permissions.rtmpStreaming ?? false
|
|
325
326
|
let mute = permissions.mute ?? false
|
|
326
327
|
let unmute = permissions.unmute ?? false
|
|
327
328
|
let changeRole = permissions.changeRole ?? false
|
|
328
329
|
|
|
329
330
|
return ["endRoom": endRoom,
|
|
330
331
|
"removeOthers": removeOthers,
|
|
331
|
-
"
|
|
332
|
-
"
|
|
332
|
+
"browserRecording": browserRecording,
|
|
333
|
+
"hlsStreaming": hlsStreaming,
|
|
334
|
+
"rtmpStreaming": rtmpStreaming,
|
|
333
335
|
"mute": mute,
|
|
334
336
|
"unmute": unmute,
|
|
335
337
|
"changeRole": changeRole]
|
|
@@ -478,16 +480,15 @@ class HMSDecoder: NSObject {
|
|
|
478
480
|
|
|
479
481
|
static func getError(_ errorObj: HMSError?) -> [String: Any]? {
|
|
480
482
|
if let error = errorObj {
|
|
481
|
-
let code = error.code
|
|
483
|
+
let code = error.code.rawValue
|
|
482
484
|
let description = error.description
|
|
483
|
-
let localizedDescription = error.localizedDescription
|
|
484
|
-
let debugDescription = error.debugDescription
|
|
485
485
|
let message = error.message
|
|
486
486
|
let name = error.id
|
|
487
487
|
let id = error.id
|
|
488
488
|
let action = error.action
|
|
489
|
+
let isTerminal = false
|
|
489
490
|
|
|
490
|
-
return ["code": code, "description": description, "
|
|
491
|
+
return ["code": code, "description": description, "message": message, "name": name, "action": action, "id": id, "isTerminal": isTerminal]
|
|
491
492
|
} else {
|
|
492
493
|
return nil
|
|
493
494
|
}
|
package/ios/HMSHelper.swift
CHANGED
|
@@ -3,6 +3,19 @@ import Foundation
|
|
|
3
3
|
|
|
4
4
|
class HMSHelper: NSObject {
|
|
5
5
|
|
|
6
|
+
static func getUnavailableRequiredKey(_ data: NSDictionary, _ requiredKeys: [String]) -> String {
|
|
7
|
+
for (key) in requiredKeys {
|
|
8
|
+
let value = data.object(forKey: key)
|
|
9
|
+
if (value == nil) {
|
|
10
|
+
return key + "_Is_Required"
|
|
11
|
+
}
|
|
12
|
+
if (value is NSNull) {
|
|
13
|
+
return key + "_Is_Null"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return "SEND_ALL_REQUIRED_KEYS"
|
|
17
|
+
}
|
|
18
|
+
|
|
6
19
|
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
|
|
7
20
|
|
|
8
21
|
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
@@ -215,18 +228,15 @@ class HMSHelper: NSObject {
|
|
|
215
228
|
return hlsVariants
|
|
216
229
|
}
|
|
217
230
|
|
|
218
|
-
static func getHlsRecordingConfig(_
|
|
219
|
-
guard let
|
|
220
|
-
else {
|
|
221
|
-
return nil
|
|
222
|
-
}
|
|
223
|
-
guard let singleFilePerLayer = meetingURLVariants.value(forKey: "singleFilePerLayer") as? Bool ,
|
|
224
|
-
let videoOnDemand = meetingURLVariants.value(forKey: "videoOnDemand") as? Bool
|
|
231
|
+
static func getHlsRecordingConfig(_ config: NSDictionary?) -> HMSHLSRecordingConfig? {
|
|
232
|
+
guard let hlsRecordingConfig = config
|
|
225
233
|
else {
|
|
226
234
|
return nil
|
|
227
235
|
}
|
|
236
|
+
let singleFilePerLayer = hlsRecordingConfig.value(forKey: "singleFilePerLayer") as? Bool
|
|
237
|
+
let videoOnDemand = hlsRecordingConfig.value(forKey: "videoOnDemand") as? Bool
|
|
228
238
|
|
|
229
|
-
return HMSHLSRecordingConfig(singleFilePerLayer: singleFilePerLayer, enableVOD: videoOnDemand)
|
|
239
|
+
return HMSHLSRecordingConfig(singleFilePerLayer: singleFilePerLayer ?? false, enableVOD: videoOnDemand ?? false)
|
|
230
240
|
}
|
|
231
241
|
|
|
232
242
|
static func getHMSHLSMeetingURLVariant(_ variant: [String: Any]) -> HMSHLSMeetingURLVariant? {
|
package/ios/HMSManager.m
CHANGED
|
@@ -26,7 +26,7 @@ RCT_EXTERN_METHOD(setVolume: (NSDictionary) data)
|
|
|
26
26
|
RCT_EXTERN_METHOD(build : (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
27
27
|
RCT_EXTERN_METHOD(leave: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
28
28
|
RCT_EXTERN_METHOD(setPlaybackForAllAudio: (NSDictionary) mute)
|
|
29
|
-
RCT_EXTERN_METHOD(remoteMuteAllAudio: (NSDictionary) data)
|
|
29
|
+
RCT_EXTERN_METHOD(remoteMuteAllAudio: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
30
30
|
RCT_EXTERN_METHOD(isPlaybackAllowed: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
31
31
|
RCT_EXTERN_METHOD(changeMetadata: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
32
32
|
RCT_EXTERN_METHOD(startRTMPOrRecording: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
package/ios/HMSManager.swift
CHANGED
|
@@ -23,6 +23,7 @@ class HMSManager: RCTEventEmitter {
|
|
|
23
23
|
let ON_LOCAL_VIDEO_STATS = "ON_LOCAL_VIDEO_STATS"
|
|
24
24
|
let ON_REMOTE_AUDIO_STATS = "ON_REMOTE_AUDIO_STATS"
|
|
25
25
|
let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
|
|
26
|
+
let ON_AUDIO_DEVICE_CHANGED = "ON_AUDIO_DEVICE_CHANGED"
|
|
26
27
|
|
|
27
28
|
// MARK: - Setup
|
|
28
29
|
|
|
@@ -30,12 +31,12 @@ class HMSManager: RCTEventEmitter {
|
|
|
30
31
|
super.init()
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
35
|
+
true
|
|
36
|
+
}
|
|
36
37
|
|
|
37
38
|
override func supportedEvents() -> [String]! {
|
|
38
|
-
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS]
|
|
39
|
+
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED]
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// MARK: - HMS SDK Actions
|
|
@@ -225,10 +226,10 @@ class HMSManager: RCTEventEmitter {
|
|
|
225
226
|
}
|
|
226
227
|
|
|
227
228
|
@objc
|
|
228
|
-
func remoteMuteAllAudio(_ data: NSDictionary) {
|
|
229
|
+
func remoteMuteAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
229
230
|
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
230
231
|
|
|
231
|
-
hms?.remoteMuteAllAudio()
|
|
232
|
+
hms?.remoteMuteAllAudio(resolve, reject)
|
|
232
233
|
}
|
|
233
234
|
|
|
234
235
|
@objc
|