@100mslive/react-native-hms 1.7.2 → 1.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/android/build.gradle +3 -3
- package/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +43 -15
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +113 -68
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +17 -4
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +75 -21
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +483 -184
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +587 -177
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +26 -7
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +32 -12
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -0
- package/android/src/main/java/com/reactnativehmssdk/PipActionReceiver.kt +10 -6
- package/android/src/main/res/layout/player_view.xml +3 -2
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +18 -7
- package/ios/HMSHLSPlayerManager.swift +18 -2
- package/ios/HMSHelper.swift +33 -4
- package/ios/HMSManager.m +256 -73
- package/ios/HMSManager.swift +47 -3
- package/ios/HMSRNSDK.swift +224 -140
- package/ios/HMSView.swift +17 -3
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
- package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
- package/lib/commonjs/classes/HMSConstants.js +1 -2
- package/lib/commonjs/classes/HMSConstants.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +6 -0
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
- package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSLayer.js +1 -2
- package/lib/commonjs/classes/HMSLayer.js.map +1 -1
- package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
- package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/commonjs/classes/HMSLogLevel.js +1 -2
- package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +1 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSManagerModule.js +1 -2
- package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
- package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
- package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +15 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
- package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPeersCache.js +8 -2
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
- package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomCache.js +1 -2
- package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +192 -32
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSource.js +1 -2
- package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +1 -2
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
- package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
- package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +3 -4
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +13 -9
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +5 -10
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
- package/lib/commonjs/index.js +1 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
- package/lib/commonjs/stores/hms-store.js +1 -2
- package/lib/commonjs/stores/hms-store.js.map +1 -1
- package/lib/commonjs/types.js +4 -6
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +6 -0
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSPIPListenerActions.js +1 -0
- package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +15 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerListIterator.js +58 -0
- package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/module/classes/HMSPeerUpdate.js +2 -1
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPeersCache.js +7 -0
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +193 -33
- 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/components/HMSHLSPlayer/HMSHLSPlayer.js +11 -6
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/classes/HMSEncoder.d.ts +1 -0
- package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
- package/lib/typescript/classes/HMSPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
- package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
- package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
- package/lib/typescript/classes/HMSSDK.d.ts +69 -13
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/types.d.ts +3 -1
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSEncoder.ts +9 -0
- package/src/classes/HMSPIPListenerActions.ts +1 -0
- package/src/classes/HMSPeer.ts +25 -0
- package/src/classes/HMSPeerListIterator.ts +60 -0
- package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPeersCache.ts +7 -0
- package/src/classes/HMSSDK.tsx +235 -28
- package/src/classes/HMSUpdateListenerActions.ts +1 -0
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +15 -13
- package/src/index.ts +4 -1
- package/src/types.ts +2 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.7.1/gc.properties +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- 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/.gradle/configuration-cache/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
|
@@ -12,7 +12,6 @@ import com.facebook.react.uimanager.ThemedReactContext
|
|
|
12
12
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
13
13
|
|
|
14
14
|
class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
15
|
-
|
|
16
15
|
private var reactContext: ThemedReactContext? = null
|
|
17
16
|
|
|
18
17
|
override fun getName(): String {
|
|
@@ -41,14 +40,22 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
@RequiresApi(Build.VERSION_CODES.N)
|
|
44
|
-
override fun receiveCommand(
|
|
43
|
+
override fun receiveCommand(
|
|
44
|
+
@NonNull root: HMSView,
|
|
45
|
+
commandId: String?,
|
|
46
|
+
args: ReadableArray?,
|
|
47
|
+
) {
|
|
45
48
|
when (commandId) {
|
|
46
49
|
"capture" -> root.captureHmsView(args)
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
@RequiresApi(Build.VERSION_CODES.N)
|
|
51
|
-
override fun receiveCommand(
|
|
54
|
+
override fun receiveCommand(
|
|
55
|
+
@NonNull root: HMSView,
|
|
56
|
+
commandId: Int,
|
|
57
|
+
args: ReadableArray?,
|
|
58
|
+
) {
|
|
52
59
|
when (commandId) {
|
|
53
60
|
1 -> root.captureHmsView(args)
|
|
54
61
|
}
|
|
@@ -60,7 +67,10 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
@ReactProp(name = "data")
|
|
63
|
-
fun setData(
|
|
70
|
+
fun setData(
|
|
71
|
+
view: HMSView,
|
|
72
|
+
data: ReadableMap,
|
|
73
|
+
) {
|
|
64
74
|
val trackId = data.getString("trackId")
|
|
65
75
|
val id = data.getString("id")
|
|
66
76
|
val mirror = data.getBoolean("mirror")
|
|
@@ -72,17 +82,26 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
@ReactProp(name = "scaleType")
|
|
75
|
-
fun setScaleType(
|
|
85
|
+
fun setScaleType(
|
|
86
|
+
view: HMSView,
|
|
87
|
+
data: String?,
|
|
88
|
+
) {
|
|
76
89
|
view.updateScaleType(data)
|
|
77
90
|
}
|
|
78
91
|
|
|
79
92
|
@ReactProp(name = "setZOrderMediaOverlay")
|
|
80
|
-
fun setZOrderMediaOverlay(
|
|
93
|
+
fun setZOrderMediaOverlay(
|
|
94
|
+
view: HMSView,
|
|
95
|
+
data: Boolean?,
|
|
96
|
+
) {
|
|
81
97
|
view.updateZOrderMediaOverlay(data)
|
|
82
98
|
}
|
|
83
99
|
|
|
84
100
|
@ReactProp(name = "autoSimulcast")
|
|
85
|
-
fun setAutoSimulcast(
|
|
101
|
+
fun setAutoSimulcast(
|
|
102
|
+
view: HMSView,
|
|
103
|
+
data: Boolean?,
|
|
104
|
+
) {
|
|
86
105
|
data?.let { view.updateAutoSimulcast(it) }
|
|
87
106
|
}
|
|
88
107
|
|
|
@@ -36,16 +36,21 @@ class HMSView(context: ReactContext) : FrameLayout(context) {
|
|
|
36
36
|
hmsVideoView?.setMirror(false)
|
|
37
37
|
hmsVideoView?.disableAutoSimulcastLayerSelect(disableAutoSimulcastLayerSelect)
|
|
38
38
|
|
|
39
|
-
hmsVideoView?.addVideoViewStateChangeListener(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
hmsVideoView?.addVideoViewStateChangeListener(
|
|
40
|
+
object : VideoViewStateChangeListener {
|
|
41
|
+
override fun onResolutionChange(
|
|
42
|
+
newWidth: Int,
|
|
43
|
+
newHeight: Int,
|
|
44
|
+
) {
|
|
45
|
+
super.onResolutionChange(newWidth, newHeight)
|
|
46
|
+
if (!jsCanApplyStyles) {
|
|
47
|
+
val event: WritableMap = Arguments.createMap()
|
|
48
|
+
context.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "topChange", event)
|
|
49
|
+
jsCanApplyStyles = true
|
|
50
|
+
}
|
|
46
51
|
}
|
|
47
|
-
}
|
|
48
|
-
|
|
52
|
+
},
|
|
53
|
+
)
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
@RequiresApi(Build.VERSION_CODES.N)
|
|
@@ -112,15 +117,30 @@ class HMSView(context: ReactContext) : FrameLayout(context) {
|
|
|
112
117
|
if (id != null) {
|
|
113
118
|
sdkId = id
|
|
114
119
|
}
|
|
115
|
-
val
|
|
120
|
+
val rnSDK = hmsCollection[sdkId]
|
|
121
|
+
val hms = rnSDK?.hmsSDK
|
|
116
122
|
|
|
117
123
|
if (trackId != null && hms != null) {
|
|
118
124
|
if (mirror != null) {
|
|
119
125
|
hmsVideoView?.setMirror(mirror)
|
|
120
126
|
}
|
|
121
127
|
updateScaleType(scaleType)
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
|
|
129
|
+
hms.getRoom()?.let { room ->
|
|
130
|
+
val regularVideoTrack: HMSVideoTrack? = HmsUtilities.getVideoTrack(trackId, room)
|
|
131
|
+
|
|
132
|
+
regularVideoTrack.let { fetchedTrack ->
|
|
133
|
+
if (fetchedTrack == null) {
|
|
134
|
+
rnSDK.previewForRoleVideoTrack?.let {
|
|
135
|
+
if (it.trackId == trackId) {
|
|
136
|
+
videoTrack = it
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
videoTrack = fetchedTrack
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
124
144
|
}
|
|
125
145
|
}
|
|
126
146
|
|
|
@@ -24,6 +24,7 @@ class HmsScreenshareActivity : ComponentActivity() {
|
|
|
24
24
|
HMSManager.hmsCollection[id]?.screenshareCallback?.reject(error)
|
|
25
25
|
HMSManager.hmsCollection[id]?.emitHMSError(error)
|
|
26
26
|
}
|
|
27
|
+
|
|
27
28
|
override fun onSuccess() {
|
|
28
29
|
HMSManager.hmsCollection[id]?.screenshareCallback?.resolve(
|
|
29
30
|
HMSManager.hmsCollection[id]?.emitHMSSuccess(),
|
|
@@ -22,14 +22,18 @@ class PipActionReceiver(
|
|
|
22
22
|
var sdkIdForPIP: String? = null
|
|
23
23
|
private var registered = false
|
|
24
24
|
const val PIP_INTENT_ACTION = "PIP_INTENT_ACTION"
|
|
25
|
-
val PIPActions =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
val PIPActions =
|
|
26
|
+
PIPActions(
|
|
27
|
+
endMeet = PIPAction(title = "End", description = "End Meeting", requestCode = 346),
|
|
28
|
+
localAudio = PIPAction(title = "Mic", description = "Toggle Mic", requestCode = 344),
|
|
29
|
+
localVideo = PIPAction(title = "Camera", description = "Toggle Camera", requestCode = 345),
|
|
30
|
+
)
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
override fun onReceive(
|
|
33
|
+
override fun onReceive(
|
|
34
|
+
context: Context?,
|
|
35
|
+
intent: Intent?,
|
|
36
|
+
) {
|
|
33
37
|
if (intent !== null) {
|
|
34
38
|
if (intent.hasExtra(PIPActions.endMeet.title)) {
|
|
35
39
|
return endMeeting()
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
<androidx.media3.ui.PlayerView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
4
4
|
xmlns:tools="http://schemas.android.com/tools"
|
|
5
|
+
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
5
6
|
android:id="@+id/hls_view"
|
|
6
7
|
android:layout_width="match_parent"
|
|
7
|
-
|
|
8
|
-
android:
|
|
8
|
+
app:resize_mode="zoom"
|
|
9
|
+
android:layout_height="match_parent"
|
|
9
10
|
/>
|
package/ios/HMSConstants.swift
CHANGED
|
@@ -14,6 +14,7 @@ struct HMSConstants {
|
|
|
14
14
|
static let ON_JOIN = "ON_JOIN"
|
|
15
15
|
static let ON_ROOM_UPDATE = "ON_ROOM_UPDATE"
|
|
16
16
|
static let ON_PEER_UPDATE = "3"
|
|
17
|
+
static let ON_PEER_LIST_UPDATED = "ON_PEER_LIST_UPDATED"
|
|
17
18
|
static let ON_TRACK_UPDATE = "ON_TRACK_UPDATE"
|
|
18
19
|
static let ON_ROLE_CHANGE_REQUEST = "ON_ROLE_CHANGE_REQUEST"
|
|
19
20
|
static let ON_CHANGE_TRACK_STATE_REQUEST = "ON_CHANGE_TRACK_STATE_REQUEST"
|
package/ios/HMSDecoder.swift
CHANGED
|
@@ -21,7 +21,7 @@ class HMSDecoder: NSObject {
|
|
|
21
21
|
switch hmsRoomUpdateType {
|
|
22
22
|
case .none:
|
|
23
23
|
return data
|
|
24
|
-
case .
|
|
24
|
+
case .peerCountUpdated:
|
|
25
25
|
data["peerCount"] = room.peerCount
|
|
26
26
|
return data
|
|
27
27
|
case .hlsRecordingStateUpdated:
|
|
@@ -93,6 +93,7 @@ class HMSDecoder: NSObject {
|
|
|
93
93
|
case .nameUpdated: return "5"
|
|
94
94
|
case .metadataUpdated: return "6"
|
|
95
95
|
case .networkQualityUpdated: return "7"
|
|
96
|
+
case .handRaiseUpdated: return "8"
|
|
96
97
|
default: return nil
|
|
97
98
|
}
|
|
98
99
|
}
|
|
@@ -112,6 +113,9 @@ class HMSDecoder: NSObject {
|
|
|
112
113
|
case .metadataUpdated:
|
|
113
114
|
peerDict["metadata"] = peer.metadata ?? ""
|
|
114
115
|
return peerDict
|
|
116
|
+
case .handRaiseUpdated:
|
|
117
|
+
peerDict["isHandRaised"] = peer.isHandRaised
|
|
118
|
+
return peerDict
|
|
115
119
|
case .roleUpdated:
|
|
116
120
|
peerDict["role"] = getHmsRole(peer.role)
|
|
117
121
|
return peerDict
|
|
@@ -138,6 +142,9 @@ class HMSDecoder: NSObject {
|
|
|
138
142
|
case .metadataUpdated:
|
|
139
143
|
peerDict["metadata"] = peer.metadata ?? ""
|
|
140
144
|
return peerDict
|
|
145
|
+
case .handRaiseUpdated:
|
|
146
|
+
peerDict["isHandRaised"] = peer.isHandRaised
|
|
147
|
+
return peerDict
|
|
141
148
|
case .roleUpdated:
|
|
142
149
|
peerDict["role"] = getHmsRole(peer.role)
|
|
143
150
|
return peerDict
|
|
@@ -167,6 +174,7 @@ class HMSDecoder: NSObject {
|
|
|
167
174
|
if let metadata = peer.metadata {
|
|
168
175
|
data["metadata"] = metadata
|
|
169
176
|
}
|
|
177
|
+
data["isHandRaised"] = peer.isHandRaised
|
|
170
178
|
|
|
171
179
|
// joinedAt
|
|
172
180
|
|
|
@@ -352,7 +360,7 @@ class HMSDecoder: NSObject {
|
|
|
352
360
|
|
|
353
361
|
peerDict["peerID"] = peer.peerID
|
|
354
362
|
peerDict["name"] = peer.name
|
|
355
|
-
|
|
363
|
+
|
|
356
364
|
// joinedAt
|
|
357
365
|
|
|
358
366
|
if let audio = peer.audioTrack {
|
|
@@ -883,16 +891,19 @@ class HMSDecoder: NSObject {
|
|
|
883
891
|
}
|
|
884
892
|
|
|
885
893
|
static func getRemoteVideoStats(_ data: HMSRemoteVideoStats) -> [Any] {
|
|
886
|
-
|
|
887
|
-
|
|
894
|
+
|
|
895
|
+
var stats = [Any]()
|
|
896
|
+
|
|
897
|
+
stats = [
|
|
888
898
|
data.bitrate,
|
|
889
|
-
data.bytesReceived,
|
|
899
|
+
Double(data.bytesReceived),
|
|
890
900
|
data.frameRate,
|
|
891
901
|
data.jitter,
|
|
892
|
-
data.packetsLost,
|
|
893
|
-
data.packetsReceived,
|
|
902
|
+
Double(data.packetsLost),
|
|
903
|
+
Double(data.packetsReceived),
|
|
894
904
|
HMSDecoder.getHmsVideoResolution(data.resolution)
|
|
895
905
|
]
|
|
906
|
+
return stats
|
|
896
907
|
}
|
|
897
908
|
|
|
898
909
|
static func getHmsMessageRecipient(_ recipient: HMSMessageRecipient) -> [String: Any] {
|
|
@@ -200,6 +200,9 @@ class HMSHLSPlayer: UIView {
|
|
|
200
200
|
self.addSubview(playerViewController.view)
|
|
201
201
|
|
|
202
202
|
attachPlayerPlaybackListeners()
|
|
203
|
+
|
|
204
|
+
hmsHLSPlayerViewController?.showsPlaybackControls = false
|
|
205
|
+
hmsHLSPlayerViewController?.allowsPictureInPicturePlayback = false
|
|
203
206
|
}
|
|
204
207
|
|
|
205
208
|
required init?(coder: NSCoder) {
|
|
@@ -305,12 +308,16 @@ class HMSHLSPlayer: UIView {
|
|
|
305
308
|
sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_FAILURE_EVENT, data)
|
|
306
309
|
}
|
|
307
310
|
|
|
308
|
-
fileprivate func onPlaybackStateChanged(state: HMSHLSPlaybackState) {
|
|
311
|
+
fileprivate func onPlaybackStateChanged(state: HMSHLSPlaybackState? = nil, videoSizeChanged: Bool = false, aspectRatio: Double? = nil) {
|
|
309
312
|
guard onHmsHlsPlaybackEvent != nil else { return }
|
|
310
313
|
|
|
311
314
|
var data = [String: Any]()
|
|
312
315
|
|
|
313
|
-
data["state"] = state
|
|
316
|
+
data["state"] = videoSizeChanged ? "onVideoSizeChanged" : state?.description
|
|
317
|
+
|
|
318
|
+
if let aspectRatio = aspectRatio {
|
|
319
|
+
data["aspectRatio"] = aspectRatio
|
|
320
|
+
}
|
|
314
321
|
|
|
315
322
|
sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_STATE_CHANGE_EVENT, data)
|
|
316
323
|
}
|
|
@@ -334,6 +341,15 @@ class HLSPlaybackEventController: HMSHLSPlayerDelegate {
|
|
|
334
341
|
func onPlaybackFailure(error: Error) {
|
|
335
342
|
hmsHlsPlayerDelegate?.onPlaybackFailure(error: error)
|
|
336
343
|
}
|
|
344
|
+
|
|
345
|
+
func onResolutionChanged(videoSize: CGSize) {
|
|
346
|
+
if videoSize.width >= videoSize.height {
|
|
347
|
+
hmsHlsPlayerDelegate?.hmsHLSPlayerViewController?.videoGravity = .resizeAspect
|
|
348
|
+
} else {
|
|
349
|
+
hmsHlsPlayerDelegate?.hmsHLSPlayerViewController?.videoGravity = .resizeAspectFill
|
|
350
|
+
}
|
|
351
|
+
hmsHlsPlayerDelegate?.onPlaybackStateChanged(videoSizeChanged: true, aspectRatio: videoSize.width/videoSize.height)
|
|
352
|
+
}
|
|
337
353
|
}
|
|
338
354
|
|
|
339
355
|
enum HMSHLSPlayerConstants {
|
package/ios/HMSHelper.swift
CHANGED
|
@@ -17,7 +17,7 @@ class HMSHelper: NSObject {
|
|
|
17
17
|
return "SEND_ALL_REQUIRED_KEYS"
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
|
|
20
|
+
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer? = nil) -> HMSPeer? {
|
|
21
21
|
|
|
22
22
|
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
23
23
|
if peerID == localPeer?.peerID {
|
|
@@ -26,11 +26,25 @@ class HMSHelper: NSObject {
|
|
|
26
26
|
return peers.first { $0.peerID == peerID }
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
static func getRemotePeerFromPeerId(_ peerID: String?,
|
|
29
|
+
static func getRemotePeerFromPeerId(_ peerID: String?, hmsSDK: HMSSDK?, completion: @escaping (_ peer: HMSPeer?) -> Void) {
|
|
30
|
+
guard let peerID = peerID, let hms = hmsSDK, let peers = hms.remotePeers else {
|
|
31
|
+
completion(nil)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
if let peerFromList = peers.first(where: { $0.peerID == peerID }) {
|
|
36
|
+
completion(peerFromList)
|
|
37
|
+
return
|
|
38
|
+
}
|
|
32
39
|
|
|
33
|
-
|
|
40
|
+
let peerListIterator = hms.getPeerListIterator(options: HMSPeerListIteratorOptions(filterByPeerIds: [peerID], limit: 1))
|
|
41
|
+
peerListIterator.next() { peers, error in
|
|
42
|
+
guard let nonnilPeers = peers, let firstPeer = nonnilPeers.first else {
|
|
43
|
+
completion(nil)
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
completion(firstPeer)
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
static func getRolesFromRoleNames(_ targetedRoles: [String]?, roles: [HMSRole]?) -> [HMSRole] {
|
|
@@ -347,6 +361,21 @@ class HMSHelper: NSObject {
|
|
|
347
361
|
return nil
|
|
348
362
|
}
|
|
349
363
|
|
|
364
|
+
static func getPeerListIteratorOptions(_ data: NSDictionary?) -> HMSPeerListIteratorOptions? {
|
|
365
|
+
guard let config = data else {
|
|
366
|
+
return nil
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
let role = config["byRoleName"] as? String
|
|
370
|
+
let peerIds = config["peerIds"] as? [String]
|
|
371
|
+
|
|
372
|
+
if let limit = config["limit"] as? Int {
|
|
373
|
+
return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds, limit: limit)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds)
|
|
377
|
+
}
|
|
378
|
+
|
|
350
379
|
private static func getAudioMode(from mode: String?) -> HMSAudioMode? {
|
|
351
380
|
switch mode {
|
|
352
381
|
case "voice":
|