@100mslive/react-native-hms 1.10.3 → 1.10.5
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 +9 -2
- package/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +11 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +94 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +32 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +38 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +6 -4
- package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSInteractivityDecoder.kt +50 -25
- package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSRNInteractivityCenter.kt +69 -1
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +22 -2
- package/ios/HMSHLSPlayerManager.m +6 -0
- package/ios/HMSHLSPlayerManager.swift +144 -2
- package/ios/HMSInteractivityDecoder.swift +41 -0
- package/ios/HMSManager.m +12 -0
- package/ios/HMSManager.swift +20 -1
- package/ios/HMSRNInteractivityCenter.swift +41 -0
- 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/HMSEncoder.js +11 -1
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSPlaylistType.js +12 -0
- package/lib/commonjs/classes/HMSHLSPlaylistType.js.map +1 -0
- package/lib/commonjs/classes/HMSHLSVariant.js +2 -0
- package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
- package/lib/commonjs/classes/HMSInteractivityCenter.js +58 -4
- package/lib/commonjs/classes/HMSInteractivityCenter.js.map +1 -1
- package/lib/commonjs/classes/HMSInteractivityEncoder.js +6 -0
- package/lib/commonjs/classes/HMSInteractivityEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js +1 -0
- package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +2 -0
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/whiteboard/HMSWhiteboard.js +6 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboard.js.map +1 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardListenerActions.js +11 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardListenerActions.js.map +1 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardState.js +12 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardState.js.map +1 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardUpdateType.js +12 -0
- package/lib/commonjs/classes/whiteboard/HMSWhiteboardUpdateType.js.map +1 -0
- package/lib/commonjs/classes/whiteboard/index.js +39 -0
- package/lib/commonjs/classes/whiteboard/index.js.map +1 -0
- package/lib/commonjs/classes/whiteboard/registerCallbacks.js +26 -0
- package/lib/commonjs/classes/whiteboard/registerCallbacks.js.map +1 -0
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +98 -2
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +16 -6
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js +15 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/commonjs/index.js +24 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-playback-slice.js +6 -0
- package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/commonjs/stores/hls-player-stats-store.js +27 -15
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
- package/lib/commonjs/stores/types.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +11 -1
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSHLSPlaylistType.js +6 -0
- package/lib/module/classes/HMSHLSPlaylistType.js.map +1 -0
- package/lib/module/classes/HMSHLSVariant.js +2 -0
- package/lib/module/classes/HMSHLSVariant.js.map +1 -1
- package/lib/module/classes/HMSInteractivityCenter.js +58 -4
- package/lib/module/classes/HMSInteractivityCenter.js.map +1 -1
- package/lib/module/classes/HMSInteractivityEncoder.js +6 -0
- package/lib/module/classes/HMSInteractivityEncoder.js.map +1 -1
- package/lib/module/classes/HMSNoiseCancellationPlugin.js +1 -0
- package/lib/module/classes/HMSNoiseCancellationPlugin.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +2 -0
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/whiteboard/HMSWhiteboard.js +2 -0
- package/lib/module/classes/whiteboard/HMSWhiteboard.js.map +1 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardListenerActions.js +5 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardListenerActions.js.map +1 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardState.js +6 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardState.js.map +1 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardUpdateType.js +6 -0
- package/lib/module/classes/whiteboard/HMSWhiteboardUpdateType.js.map +1 -0
- package/lib/module/classes/whiteboard/index.js +4 -0
- package/lib/module/classes/whiteboard/index.js.map +1 -0
- package/lib/module/classes/whiteboard/registerCallbacks.js +18 -0
- package/lib/module/classes/whiteboard/registerCallbacks.js.map +1 -0
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +101 -5
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/hooks.js +12 -4
- package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/hls-player-playback-slice.js +6 -0
- package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/module/stores/hls-player-stats-store.js +27 -15
- package/lib/module/stores/hls-player-stats-store.js.map +1 -1
- package/lib/module/stores/types.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
- package/lib/typescript/classes/HMSHLSPlaylistType.d.ts +4 -0
- package/lib/typescript/classes/HMSHLSVariant.d.ts +3 -0
- package/lib/typescript/classes/HMSInteractivityCenter.d.ts +19 -2
- package/lib/typescript/classes/HMSInteractivityEncoder.d.ts +2 -0
- package/lib/typescript/classes/HMSNoiseCancellationPlugin.d.ts +1 -0
- package/lib/typescript/classes/HMSPermissions.d.ts +7 -0
- package/lib/typescript/classes/whiteboard/HMSWhiteboard.d.ts +10 -0
- package/lib/typescript/classes/whiteboard/HMSWhiteboardListenerActions.d.ts +3 -0
- package/lib/typescript/classes/whiteboard/HMSWhiteboardState.d.ts +4 -0
- package/lib/typescript/classes/whiteboard/HMSWhiteboardUpdateType.d.ts +4 -0
- package/lib/typescript/classes/whiteboard/index.d.ts +3 -0
- package/lib/typescript/classes/whiteboard/registerCallbacks.d.ts +8 -0
- package/lib/typescript/components/HMSHLSPlayer/HMSHLSPlayer.d.ts +6 -0
- package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +5 -1
- package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +3 -0
- package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/stores/hls-player-stats-store.d.ts +4 -3
- package/lib/typescript/stores/types.d.ts +7 -1
- package/lib/typescript/types.d.ts +9 -0
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSEncoder.ts +13 -0
- package/src/classes/HMSHLSPlaylistType.ts +4 -0
- package/src/classes/HMSHLSVariant.ts +5 -0
- package/src/classes/HMSInteractivityCenter.ts +89 -10
- package/src/classes/HMSInteractivityEncoder.ts +8 -0
- package/src/classes/HMSNoiseCancellationPlugin.ts +1 -0
- package/src/classes/HMSPermissions.ts +9 -0
- package/src/classes/whiteboard/HMSWhiteboard.tsx +16 -0
- package/src/classes/whiteboard/HMSWhiteboardListenerActions.ts +3 -0
- package/src/classes/whiteboard/HMSWhiteboardState.tsx +4 -0
- package/src/classes/whiteboard/HMSWhiteboardUpdateType.tsx +4 -0
- package/src/classes/whiteboard/index.ts +3 -0
- package/src/classes/whiteboard/registerCallbacks.ts +34 -0
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +158 -4
- package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +12 -0
- package/src/components/HMSHLSPlayer/hooks.ts +16 -4
- package/src/components/HMSHLSPlayer/index.ts +2 -0
- package/src/index.ts +2 -0
- package/src/stores/hls-player-playback-slice.ts +8 -0
- package/src/stores/hls-player-stats-store.ts +28 -18
- package/src/stores/types.ts +9 -1
- package/src/types.ts +15 -0
|
@@ -87,6 +87,46 @@ class HMSHLSPlayerManager: RCTViewManager {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
@objc func areClosedCaptionSupported(_ node: NSNumber, requestId: NSNumber) {
|
|
92
|
+
DispatchQueue.main.async {
|
|
93
|
+
if let component = self.bridge.uiManager.view(forReactTag: node) as? HMSHLSPlayer {
|
|
94
|
+
component.areClosedCaptionSupported(requestId: UInt(truncating: requestId))
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@objc func isClosedCaptionEnabled(_ node: NSNumber, requestId: NSNumber) {
|
|
100
|
+
DispatchQueue.main.async {
|
|
101
|
+
if let component = self.bridge.uiManager.view(forReactTag: node) as? HMSHLSPlayer {
|
|
102
|
+
component.isClosedCaptionEnabled(requestId: UInt(truncating: requestId))
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@objc func enableClosedCaption(_ node: NSNumber) {
|
|
108
|
+
DispatchQueue.main.async {
|
|
109
|
+
if let component = self.bridge.uiManager.view(forReactTag: node) as? HMSHLSPlayer {
|
|
110
|
+
component.enableClosedCaption()
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@objc func disableClosedCaption(_ node: NSNumber) {
|
|
116
|
+
DispatchQueue.main.async {
|
|
117
|
+
if let component = self.bridge.uiManager.view(forReactTag: node) as? HMSHLSPlayer {
|
|
118
|
+
component.disableClosedCaption()
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@objc func getPlayerDurationDetails(_ node: NSNumber, requestId: NSNumber) {
|
|
124
|
+
DispatchQueue.main.async {
|
|
125
|
+
if let component = self.bridge.uiManager.view(forReactTag: node) as? HMSHLSPlayer {
|
|
126
|
+
component.getPlayerDurationDetails(requestId: UInt(truncating: requestId))
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
90
130
|
}
|
|
91
131
|
|
|
92
132
|
class HMSHLSPlayer: UIView {
|
|
@@ -105,6 +145,8 @@ class HMSHLSPlayer: UIView {
|
|
|
105
145
|
|
|
106
146
|
// MARK: Handle HMSHLSPlayer RN Component props
|
|
107
147
|
|
|
148
|
+
@objc var onDataReturned: RCTDirectEventBlock?
|
|
149
|
+
|
|
108
150
|
@objc var onHmsHlsPlaybackEvent: RCTDirectEventBlock?
|
|
109
151
|
|
|
110
152
|
@objc var onHmsHlsStatsEvent: RCTDirectEventBlock?
|
|
@@ -158,6 +200,97 @@ class HMSHLSPlayer: UIView {
|
|
|
158
200
|
hmsHLSPlayer.stop()
|
|
159
201
|
}
|
|
160
202
|
|
|
203
|
+
private func isCCSupported() -> Bool {
|
|
204
|
+
guard let playerItem = hmsHLSPlayer._nativePlayer.currentItem else {
|
|
205
|
+
return false
|
|
206
|
+
}
|
|
207
|
+
guard let mediaSelectionGroup = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
|
208
|
+
return false
|
|
209
|
+
}
|
|
210
|
+
guard let firstMediaSelectionGroupOption = mediaSelectionGroup.options.first else {
|
|
211
|
+
return false
|
|
212
|
+
}
|
|
213
|
+
return firstMediaSelectionGroupOption.mediaType == .subtitle
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
private func isCCEnabled() -> Bool {
|
|
217
|
+
guard let playerItem = hmsHLSPlayer._nativePlayer.currentItem else {
|
|
218
|
+
return false
|
|
219
|
+
}
|
|
220
|
+
guard let subtitle = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
|
221
|
+
return false
|
|
222
|
+
}
|
|
223
|
+
let selectedOption = playerItem.currentMediaSelection.selectedMediaOption(in: subtitle)
|
|
224
|
+
return selectedOption != nil
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@objc func areClosedCaptionSupported(requestId: UInt) {
|
|
228
|
+
let supported = isCCSupported()
|
|
229
|
+
|
|
230
|
+
sendRequestedDataToJS(requestId, supported)
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
@objc func isClosedCaptionEnabled(requestId: UInt) {
|
|
234
|
+
let enabled = isCCEnabled()
|
|
235
|
+
|
|
236
|
+
sendRequestedDataToJS(requestId, enabled)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@objc func enableClosedCaption() {
|
|
240
|
+
if !isCCSupported() {
|
|
241
|
+
print("#func Closed Caption is not supported")
|
|
242
|
+
return
|
|
243
|
+
}
|
|
244
|
+
if isCCEnabled() {
|
|
245
|
+
print("#func Closed Caption already enabled!")
|
|
246
|
+
return
|
|
247
|
+
}
|
|
248
|
+
guard let playerItem = hmsHLSPlayer._nativePlayer.currentItem else {
|
|
249
|
+
return
|
|
250
|
+
}
|
|
251
|
+
guard let subtitle = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
|
252
|
+
return
|
|
253
|
+
}
|
|
254
|
+
guard let firstSubtitleTrack = subtitle.options.first(where: {$0.mediaType == .subtitle}) else {
|
|
255
|
+
return
|
|
256
|
+
}
|
|
257
|
+
playerItem.select(firstSubtitleTrack, in: subtitle)
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
@objc func disableClosedCaption() {
|
|
261
|
+
if !isCCSupported() {
|
|
262
|
+
print("#func Closed Caption is not supported")
|
|
263
|
+
return
|
|
264
|
+
}
|
|
265
|
+
if !isCCEnabled() {
|
|
266
|
+
print("#func Closed Caption already disabled!")
|
|
267
|
+
return
|
|
268
|
+
}
|
|
269
|
+
guard let playerItem = hmsHLSPlayer._nativePlayer.currentItem else {
|
|
270
|
+
return
|
|
271
|
+
}
|
|
272
|
+
guard let subtitle = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else {
|
|
273
|
+
return
|
|
274
|
+
}
|
|
275
|
+
playerItem.select(nil, in: subtitle)
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
@objc func getPlayerDurationDetails(requestId: UInt) {
|
|
279
|
+
var map = [String: Any?]()
|
|
280
|
+
guard let playerItem = hmsHLSPlayer._nativePlayer.currentItem else {
|
|
281
|
+
sendRequestedDataToJS(requestId, map)
|
|
282
|
+
return
|
|
283
|
+
}
|
|
284
|
+
// If duration is known
|
|
285
|
+
if !playerItem.duration.isIndefinite {
|
|
286
|
+
map["streamDuration"] = playerItem.duration.seconds
|
|
287
|
+
}
|
|
288
|
+
if let timeRange = playerItem.seekableTimeRanges.last as? CMTimeRange {
|
|
289
|
+
map["rollingWindowTime"] = timeRange.duration.seconds * 1000
|
|
290
|
+
}
|
|
291
|
+
sendRequestedDataToJS(requestId, map)
|
|
292
|
+
}
|
|
293
|
+
|
|
161
294
|
@objc func pause() {
|
|
162
295
|
hmsHLSPlayer.pause()
|
|
163
296
|
}
|
|
@@ -182,7 +315,7 @@ class HMSHLSPlayer: UIView {
|
|
|
182
315
|
hmsHLSPlayer.volume = level
|
|
183
316
|
}
|
|
184
317
|
|
|
185
|
-
// MARK:
|
|
318
|
+
// MARK: Lifecycle methods
|
|
186
319
|
|
|
187
320
|
override init(frame: CGRect) {
|
|
188
321
|
super.init(frame: frame)
|
|
@@ -206,7 +339,10 @@ class HMSHLSPlayer: UIView {
|
|
|
206
339
|
attachPlayerPlaybackListeners()
|
|
207
340
|
|
|
208
341
|
hmsHLSPlayerViewController?.showsPlaybackControls = false
|
|
209
|
-
hmsHLSPlayerViewController?.allowsPictureInPicturePlayback =
|
|
342
|
+
hmsHLSPlayerViewController?.allowsPictureInPicturePlayback = true
|
|
343
|
+
if #available(iOS 14.2, *) {
|
|
344
|
+
hmsHLSPlayerViewController?.canStartPictureInPictureAutomaticallyFromInline = true
|
|
345
|
+
}
|
|
210
346
|
}
|
|
211
347
|
|
|
212
348
|
required init?(coder: NSCoder) {
|
|
@@ -234,6 +370,12 @@ class HMSHLSPlayer: UIView {
|
|
|
234
370
|
onHmsHlsPlaybackEvent(["event": eventName, "data": data])
|
|
235
371
|
}
|
|
236
372
|
|
|
373
|
+
private func sendRequestedDataToJS(_ requestId: UInt, _ data: Any) {
|
|
374
|
+
guard let onDataReturned = onDataReturned else { return }
|
|
375
|
+
|
|
376
|
+
onDataReturned(["requestId": requestId, "data": data])
|
|
377
|
+
}
|
|
378
|
+
|
|
237
379
|
private func sendHLSStatsEventToJS(_ eventName: String, _ data: [String: Any]) {
|
|
238
380
|
guard let onHmsHlsStatsEvent = onHmsHlsStatsEvent else { return }
|
|
239
381
|
|
|
@@ -270,4 +270,45 @@ class HMSInteractivityDecoder {
|
|
|
270
270
|
|
|
271
271
|
return result
|
|
272
272
|
}
|
|
273
|
+
|
|
274
|
+
static func getHMSWhiteboard(_ hmsWhiteboard: HMSWhiteboard) -> [String: Any] {
|
|
275
|
+
var result: [String: Any] = [
|
|
276
|
+
"id": hmsWhiteboard.id,
|
|
277
|
+
"state": getWhiteboardState(hmsWhiteboard.state)
|
|
278
|
+
]
|
|
279
|
+
if let owner = hmsWhiteboard.owner {
|
|
280
|
+
result["owner"] = HMSDecoder.getHmsPeerSubset(owner)
|
|
281
|
+
}
|
|
282
|
+
if let title = hmsWhiteboard.title {
|
|
283
|
+
result["title"] = title
|
|
284
|
+
}
|
|
285
|
+
if let urlString = hmsWhiteboard.url?.absoluteString {
|
|
286
|
+
result["url"] = urlString
|
|
287
|
+
}
|
|
288
|
+
return result
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
static func getWhiteboardState(_ state: HMSWhiteboard.WhiteboardState) -> String {
|
|
292
|
+
switch state {
|
|
293
|
+
case .started:
|
|
294
|
+
return "STARTED"
|
|
295
|
+
case .stopped:
|
|
296
|
+
return "STOPPED"
|
|
297
|
+
@unknown default:
|
|
298
|
+
print("@unknown default case: Invalid HMSWhiteboardUpdateType")
|
|
299
|
+
return "STOPPED"
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
static func getWhiteboardUpdateType(_ type: HMSWhiteboardUpdateType) -> String {
|
|
304
|
+
switch type {
|
|
305
|
+
case .started:
|
|
306
|
+
return "STARTED"
|
|
307
|
+
case .stopped:
|
|
308
|
+
return "STOPPED"
|
|
309
|
+
@unknown default:
|
|
310
|
+
print("@unknown default case: Invalid HMSWhiteboardUpdateType")
|
|
311
|
+
return "STOPPED"
|
|
312
|
+
}
|
|
313
|
+
}
|
|
273
314
|
}
|
package/ios/HMSManager.m
CHANGED
|
@@ -353,4 +353,16 @@ RCT_EXTERN_METHOD(isNoiseCancellationPluginAvailable
|
|
|
353
353
|
: (RCTPromiseResolveBlock)resolve
|
|
354
354
|
: (RCTPromiseRejectBlock)reject)
|
|
355
355
|
|
|
356
|
+
#pragma mark - Interactivity Center - Whiteboard
|
|
357
|
+
|
|
358
|
+
RCT_EXTERN_METHOD(startWhiteboard
|
|
359
|
+
: (NSDictionary)data
|
|
360
|
+
: (RCTPromiseResolveBlock)resolve
|
|
361
|
+
: (RCTPromiseRejectBlock)reject)
|
|
362
|
+
|
|
363
|
+
RCT_EXTERN_METHOD(stopWhiteboard
|
|
364
|
+
: (NSDictionary)data
|
|
365
|
+
: (RCTPromiseResolveBlock)resolve
|
|
366
|
+
: (RCTPromiseRejectBlock)reject)
|
|
367
|
+
|
|
356
368
|
@end
|
package/ios/HMSManager.swift
CHANGED
|
@@ -37,7 +37,7 @@ class HMSManager: RCTEventEmitter {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
override func supportedEvents() -> [String]! {
|
|
40
|
-
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, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED, HMSConstants.ON_PEER_LIST_UPDATED, HMSConstants.ON_POLL_UPDATE]
|
|
40
|
+
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, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED, HMSConstants.ON_PEER_LIST_UPDATED, HMSConstants.ON_POLL_UPDATE, HMSConstants.ON_WHITEBOARD_UPDATE]
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// MARK: - HMS SDK Delegate Callbacks
|
|
@@ -762,4 +762,23 @@ class HMSManager: RCTEventEmitter {
|
|
|
762
762
|
}
|
|
763
763
|
rnsdk.isNoiseCancellationPluginAvailable(data, resolve, reject)
|
|
764
764
|
}
|
|
765
|
+
|
|
766
|
+
// MARK: - Interactivity Center - Whiteboard
|
|
767
|
+
@objc
|
|
768
|
+
func startWhiteboard(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
769
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection), let interactivity = rnsdk.interactivity else {
|
|
770
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
771
|
+
return
|
|
772
|
+
}
|
|
773
|
+
interactivity.startWhiteboard(resolve, reject)
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
@objc
|
|
777
|
+
func stopWhiteboard(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
778
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection), let interactivity = rnsdk.interactivity else {
|
|
779
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
780
|
+
return
|
|
781
|
+
}
|
|
782
|
+
interactivity.stopWhiteboard(resolve, reject)
|
|
783
|
+
}
|
|
765
784
|
}
|
|
@@ -27,8 +27,27 @@ class HMSRNInteractivityCenter {
|
|
|
27
27
|
["update": update.rawValue, "updatedPoll": HMSInteractivityDecoder.getHMSPoll(updatedPoll)]
|
|
28
28
|
)
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
hmssdk.interactivityCenter.addWhiteboardUpdateListener { [weak self] hmsWhiteboard, hmsWhiteboardUpdateType in
|
|
32
|
+
guard let self = self else { return }
|
|
33
|
+
guard let enabledEvents = self.hmsrnsdk?.eventsEnableStatus, enabledEvents[HMSConstants.ON_WHITEBOARD_UPDATE] == true else {
|
|
34
|
+
print("HMSConstants.ON_WHITEBOARD_UPDATE event is not enabled")
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
var hmsWhiteboardDict = HMSInteractivityDecoder.getHMSWhiteboard(hmsWhiteboard)
|
|
38
|
+
hmsWhiteboardDict["isOwner"] = hmsWhiteboard.owner?.peerID == self.hmssdk?.localPeer?.peerID
|
|
39
|
+
|
|
40
|
+
self.hmsrnsdk?.delegate?.emitEvent(
|
|
41
|
+
HMSConstants.ON_WHITEBOARD_UPDATE,
|
|
42
|
+
[
|
|
43
|
+
"hmsWhiteboard": hmsWhiteboardDict,
|
|
44
|
+
"updateType": HMSInteractivityDecoder.getWhiteboardUpdateType(hmsWhiteboardUpdateType)
|
|
45
|
+
]
|
|
46
|
+
)
|
|
47
|
+
}
|
|
30
48
|
}
|
|
31
49
|
|
|
50
|
+
// MARK: Poll Methods
|
|
32
51
|
func quickStartPoll(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
33
52
|
let pollBuilder = HMSInteractivityHelper.getPollBuilderFromDict(data, sdkRoles: hmssdk?.roles)
|
|
34
53
|
|
|
@@ -117,4 +136,26 @@ class HMSRNInteractivityCenter {
|
|
|
117
136
|
}
|
|
118
137
|
}
|
|
119
138
|
}
|
|
139
|
+
|
|
140
|
+
// MARK: - Whiteboard Methods
|
|
141
|
+
|
|
142
|
+
func startWhiteboard(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
143
|
+
self.hmssdk?.interactivityCenter.startWhiteboard { success, error in
|
|
144
|
+
if let error = error {
|
|
145
|
+
reject?("6004", error.localizedDescription, nil)
|
|
146
|
+
return
|
|
147
|
+
}
|
|
148
|
+
resolve?(success)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
func stopWhiteboard(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
153
|
+
self.hmssdk?.interactivityCenter.stopWhiteboard { success, error in
|
|
154
|
+
if let error = error {
|
|
155
|
+
reject?("6004", error.localizedDescription, nil)
|
|
156
|
+
return
|
|
157
|
+
}
|
|
158
|
+
resolve?(success)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
120
161
|
}
|
|
Binary file
|
package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>Hmssdk.xcscheme_^#shared#^_</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>orderHint</key>
|
|
10
|
+
<integer>0</integer>
|
|
11
|
+
</dict>
|
|
12
|
+
</dict>
|
|
13
|
+
</dict>
|
|
14
|
+
</plist>
|
|
@@ -45,6 +45,7 @@ var _HMSLayer = require("./HMSLayer");
|
|
|
45
45
|
var _HMSSimulcastLayerDefinition = require("./HMSSimulcastLayerDefinition");
|
|
46
46
|
var _HMSQualityLimitationReasons = require("./HMSQualityLimitationReasons");
|
|
47
47
|
var _HMSTrackType = require("./HMSTrackType");
|
|
48
|
+
var _HMSHLSPlaylistType = require("./HMSHLSPlaylistType");
|
|
48
49
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
49
50
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
50
51
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
@@ -420,12 +421,21 @@ class HMSEncoder {
|
|
|
420
421
|
hlsStreamUrl: item.hlsStreamUrl,
|
|
421
422
|
meetingUrl: item.meetingUrl,
|
|
422
423
|
metadata: item !== null && item !== void 0 && item.metaData ? item === null || item === void 0 ? void 0 : item.metadata : undefined,
|
|
423
|
-
startedAt: HMSEncoder.encodeDate(item === null || item === void 0 ? void 0 : item.startedAt)
|
|
424
|
+
startedAt: HMSEncoder.encodeDate(item === null || item === void 0 ? void 0 : item.startedAt),
|
|
425
|
+
playlistType: item !== null && item !== void 0 && item.playlistType ? this.getHLSVariantPlaylistType(item.playlistType.toUpperCase()) : undefined
|
|
424
426
|
});
|
|
425
427
|
variants.push(variant);
|
|
426
428
|
});
|
|
427
429
|
return variants;
|
|
428
430
|
}
|
|
431
|
+
static getHLSVariantPlaylistType(type) {
|
|
432
|
+
switch (type) {
|
|
433
|
+
case 'DVR':
|
|
434
|
+
return _HMSHLSPlaylistType.HMSHLSPlaylistType.DVR;
|
|
435
|
+
default:
|
|
436
|
+
return _HMSHLSPlaylistType.HMSHLSPlaylistType.noDVR;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
429
439
|
static encodeHMSNetworkQuality(data) {
|
|
430
440
|
if (data) {
|
|
431
441
|
return new _HMSNetworkQuality.HMSNetworkQuality({
|