@100mslive/react-native-hms 0.9.92 → 0.9.93
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 +13 -7
- package/ios/HMSDecoder.swift +21 -24
- package/ios/HMSHelper.swift +42 -8
- package/ios/HMSManager.m +8 -0
- package/ios/HMSManager.swift +70 -22
- package/ios/HMSRNSDK.swift +237 -89
- package/ios/HMSView.swift +3 -4
- package/lib/commonjs/classes/HMSAudioFilePlayerNode.js +87 -0
- package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -0
- package/lib/commonjs/classes/HMSAudioMixerSource.js +26 -0
- package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -0
- package/lib/commonjs/classes/HMSAudioNode.js +26 -0
- package/lib/commonjs/classes/HMSAudioNode.js.map +1 -0
- package/lib/commonjs/classes/HMSAudioTrackSettings.js +6 -0
- package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +3 -2
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSException.js +7 -0
- package/lib/commonjs/classes/HMSException.js.map +1 -1
- package/lib/commonjs/classes/HMSMicNode.js +35 -0
- package/lib/commonjs/classes/HMSMicNode.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +12 -15
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js +18 -0
- package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -0
- package/lib/commonjs/index.js +70 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSAudioFilePlayerNode.js +75 -0
- package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -0
- package/lib/module/classes/HMSAudioMixerSource.js +17 -0
- package/lib/module/classes/HMSAudioMixerSource.js.map +1 -0
- package/lib/module/classes/HMSAudioNode.js +17 -0
- package/lib/module/classes/HMSAudioNode.js.map +1 -0
- package/lib/module/classes/HMSAudioTrackSettings.js +6 -0
- package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +3 -2
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSException.js +7 -0
- package/lib/module/classes/HMSException.js.map +1 -1
- package/lib/module/classes/HMSMicNode.js +23 -0
- package/lib/module/classes/HMSMicNode.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +11 -14
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js +8 -0
- package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSAudioFilePlayerNode.d.ts +12 -0
- package/lib/typescript/classes/HMSAudioMixerSource.d.ts +8 -0
- package/lib/typescript/classes/HMSAudioNode.d.ts +6 -0
- package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +4 -2
- package/lib/typescript/classes/HMSException.d.ts +8 -6
- package/lib/typescript/classes/HMSMicNode.d.ts +5 -0
- package/lib/typescript/classes/HMSSDK.d.ts +26 -26
- package/lib/typescript/classes/HMSScreenBroadcastAudioReceiverNode.d.ts +4 -0
- package/lib/typescript/index.d.ts +5 -0
- package/package.json +1 -1
- package/react-native-hms.podspec +2 -2
- package/src/classes/HMSAudioFilePlayerNode.ts +75 -0
- package/src/classes/HMSAudioMixerSource.ts +15 -0
- package/src/classes/HMSAudioNode.ts +12 -0
- package/src/classes/HMSAudioTrackSettings.ts +7 -4
- package/src/classes/HMSEncoder.ts +1 -0
- package/src/classes/HMSException.ts +9 -6
- package/src/classes/HMSMicNode.ts +23 -0
- package/src/classes/HMSSDK.tsx +38 -46
- package/src/classes/HMSScreenBroadcastAudioReceiverNode.ts +7 -0
- package/src/index.ts +5 -0
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -19,10 +19,10 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
19
19
|
var rtcStatsAttached = false
|
|
20
20
|
var recentPreviewTracks: [HMSTrack]? = []
|
|
21
21
|
private var reconnectingStage: Bool = false
|
|
22
|
-
private var preferredExtension: String?
|
|
23
|
-
private var systemBroadcastPicker: RPSystemBroadcastPickerView?
|
|
24
|
-
private var startScreenshareResolve: RCTPromiseResolveBlock?
|
|
25
|
-
private var stopScreenshareResolve: RCTPromiseResolveBlock?
|
|
22
|
+
private var preferredExtension: String?
|
|
23
|
+
private var systemBroadcastPicker: RPSystemBroadcastPickerView?
|
|
24
|
+
private var startScreenshareResolve: RCTPromiseResolveBlock?
|
|
25
|
+
private var stopScreenshareResolve: RCTPromiseResolveBlock?
|
|
26
26
|
private var isScreenShared: Bool? = false
|
|
27
27
|
private var previewInProgress = false
|
|
28
28
|
|
|
@@ -46,16 +46,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
46
46
|
|
|
47
47
|
// MARK: - Setup
|
|
48
48
|
init(data: NSDictionary?, delegate manager: HMSManager?, uid id: String) {
|
|
49
|
-
let trackSettings = data?.value(forKey: "trackSettings") as? NSDictionary
|
|
50
|
-
let videoSettings = HMSHelper.getLocalVideoSettings(trackSettings?.value(forKey: "video") as? NSDictionary)
|
|
51
|
-
let audioSettings = HMSHelper.getLocalAudioSettings(trackSettings?.value(forKey: "audio") as? NSDictionary)
|
|
52
49
|
preferredExtension = data?.value(forKey: "preferredExtension") as? String
|
|
53
50
|
|
|
54
51
|
DispatchQueue.main.async { [weak self] in
|
|
55
|
-
let hmsTrackSettings = HMSTrackSettings(videoSettings: videoSettings, audioSettings: audioSettings)
|
|
56
52
|
self?.hms = HMSSDK.build { sdk in
|
|
57
|
-
sdk.trackSettings = hmsTrackSettings
|
|
58
53
|
sdk.appGroup = data?.value(forKey: "appGroup") as? String
|
|
54
|
+
let trackSettings = data?.value(forKey: "trackSettings") as? NSDictionary
|
|
55
|
+
let videoSettings = HMSHelper.getLocalVideoSettings(trackSettings?.value(forKey: "video") as? NSDictionary)
|
|
56
|
+
let audioSettings = HMSHelper.getLocalAudioSettings(trackSettings?.value(forKey: "audio") as? NSDictionary, sdk, self?.delegate, id)
|
|
57
|
+
sdk.trackSettings = HMSTrackSettings(videoSettings: videoSettings, audioSettings: audioSettings)
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
self.delegate = manager
|
|
@@ -66,8 +65,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
66
65
|
func preview(_ credentials: NSDictionary) {
|
|
67
66
|
|
|
68
67
|
guard !previewInProgress else {
|
|
69
|
-
|
|
70
|
-
on(error: error)
|
|
68
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 5000, "description": "Preview is in progress", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
71
69
|
return
|
|
72
70
|
}
|
|
73
71
|
|
|
@@ -81,7 +79,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
81
79
|
|
|
82
80
|
let metadata = credentials.value(forKey: "metadata") as? String
|
|
83
81
|
let captureNetworkQualityInPreview = credentials.value(forKey: "captureNetworkQualityInPreview") as? Bool ?? false
|
|
84
|
-
|
|
82
|
+
|
|
85
83
|
DispatchQueue.main.async { [weak self] in
|
|
86
84
|
guard let strongSelf = self else { return }
|
|
87
85
|
if let endpoint = credentials.value(forKey: "endpoint") as? String {
|
|
@@ -94,7 +92,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
94
92
|
strongSelf.previewInProgress = true
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
|
-
|
|
95
|
+
|
|
98
96
|
func previewForRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
99
97
|
guard let role = data.value(forKey: "role") as? String
|
|
100
98
|
else {
|
|
@@ -103,26 +101,26 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
103
101
|
reject?(errorMessage, errorMessage, nil)
|
|
104
102
|
return
|
|
105
103
|
}
|
|
106
|
-
|
|
104
|
+
|
|
107
105
|
let roleObj = HMSHelper.getRoleFromRoleName(role, roles: hms?.roles)
|
|
108
|
-
|
|
106
|
+
|
|
109
107
|
if let extractedRole = roleObj {
|
|
110
108
|
hms?.preview(role: extractedRole, completion: { tracks, error in
|
|
111
|
-
if
|
|
109
|
+
if error != nil {
|
|
112
110
|
delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
|
|
113
|
-
reject?(error?.
|
|
111
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
114
112
|
return
|
|
115
113
|
}
|
|
116
114
|
self.recentPreviewTracks = tracks
|
|
117
|
-
|
|
115
|
+
|
|
118
116
|
let decodedTracks = HMSDecoder.getAllTracks(tracks ?? [])
|
|
119
|
-
|
|
117
|
+
|
|
120
118
|
resolve?(["success": true, "tracks": decodedTracks])
|
|
121
119
|
return
|
|
122
120
|
})
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
|
-
|
|
123
|
+
|
|
126
124
|
func cancelPreview() {
|
|
127
125
|
self.recentPreviewTracks = []
|
|
128
126
|
hms?.cancelPreview()
|
|
@@ -131,8 +129,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
131
129
|
func join(_ credentials: NSDictionary) {
|
|
132
130
|
|
|
133
131
|
guard !previewInProgress else {
|
|
134
|
-
|
|
135
|
-
on(error: error)
|
|
132
|
+
delegate?.emitEvent("ON_ERROR", ["error": ["code": 5000, "description": "Preview is in progress", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
136
133
|
return
|
|
137
134
|
}
|
|
138
135
|
|
|
@@ -196,7 +193,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
196
193
|
}
|
|
197
194
|
|
|
198
195
|
func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
199
|
-
if
|
|
196
|
+
if reconnectingStage {
|
|
200
197
|
reject?("Still in reconnecting stage", "Still in reconnecting stage", nil)
|
|
201
198
|
} else {
|
|
202
199
|
DispatchQueue.main.async { [weak self] in
|
|
@@ -238,7 +235,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
238
235
|
return
|
|
239
236
|
} else {
|
|
240
237
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
241
|
-
reject?(error?.
|
|
238
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
242
239
|
return
|
|
243
240
|
}
|
|
244
241
|
})
|
|
@@ -264,7 +261,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
264
261
|
return
|
|
265
262
|
} else {
|
|
266
263
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
267
|
-
reject?(error?.
|
|
264
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
268
265
|
return
|
|
269
266
|
}
|
|
270
267
|
})
|
|
@@ -290,7 +287,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
290
287
|
return
|
|
291
288
|
} else {
|
|
292
289
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
293
|
-
reject?(error?.
|
|
290
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
294
291
|
return
|
|
295
292
|
}
|
|
296
293
|
})
|
|
@@ -314,7 +311,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
314
311
|
resolve?(["success": success])
|
|
315
312
|
} else {
|
|
316
313
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
317
|
-
reject?(error?.
|
|
314
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
318
315
|
}
|
|
319
316
|
})
|
|
320
317
|
self?.recentPreviewTracks = []
|
|
@@ -345,7 +342,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
345
342
|
resolve?(["success": success])
|
|
346
343
|
} else {
|
|
347
344
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
348
|
-
reject?(error?.
|
|
345
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
349
346
|
}
|
|
350
347
|
})
|
|
351
348
|
}
|
|
@@ -366,9 +363,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
366
363
|
DispatchQueue.main.async { [weak self] in
|
|
367
364
|
guard let remotePeers = self?.hms?.remotePeers,
|
|
368
365
|
let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
|
|
369
|
-
else {
|
|
366
|
+
else {
|
|
370
367
|
reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
|
|
371
|
-
return
|
|
368
|
+
return
|
|
372
369
|
}
|
|
373
370
|
|
|
374
371
|
self?.hms?.changeTrackState(for: track, mute: mute, completion: { success, error in
|
|
@@ -376,7 +373,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
376
373
|
resolve?(["success": success])
|
|
377
374
|
} else {
|
|
378
375
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
379
|
-
reject?(error?.
|
|
376
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
380
377
|
}
|
|
381
378
|
})
|
|
382
379
|
}
|
|
@@ -411,7 +408,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
411
408
|
resolve?(["success": success])
|
|
412
409
|
} else {
|
|
413
410
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
414
|
-
reject?(error?.
|
|
411
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
415
412
|
}
|
|
416
413
|
})
|
|
417
414
|
}
|
|
@@ -434,9 +431,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
434
431
|
guard let remotePeers = self?.hms?.remotePeers,
|
|
435
432
|
let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
|
|
436
433
|
else {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
|
|
434
|
+
strongSelf.delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": "Track not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": strongSelf.id])
|
|
435
|
+
reject?("Track not found", "Track not found", nil)
|
|
440
436
|
return
|
|
441
437
|
}
|
|
442
438
|
let mute = track.isMute()
|
|
@@ -464,9 +460,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
464
460
|
|
|
465
461
|
guard let remotePeers = self?.hms?.remotePeers,
|
|
466
462
|
let peer = HMSHelper.getRemotePeerFromPeerId(peerId, remotePeers: remotePeers)
|
|
467
|
-
else {
|
|
463
|
+
else {
|
|
468
464
|
reject?("PEER_NOT_FOUND", "PEER_NOT_FOUND", nil)
|
|
469
|
-
return
|
|
465
|
+
return
|
|
470
466
|
}
|
|
471
467
|
|
|
472
468
|
self?.hms?.removePeer(peer, reason: reason ?? "Removed from room", completion: { success, error in
|
|
@@ -474,7 +470,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
474
470
|
resolve?(["success": success])
|
|
475
471
|
} else {
|
|
476
472
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
477
|
-
reject?(error?.
|
|
473
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
478
474
|
}
|
|
479
475
|
})
|
|
480
476
|
}
|
|
@@ -497,7 +493,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
497
493
|
resolve?(["success": success])
|
|
498
494
|
} else {
|
|
499
495
|
self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
|
|
500
|
-
reject?(error?.
|
|
496
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
501
497
|
}
|
|
502
498
|
})
|
|
503
499
|
}
|
|
@@ -582,7 +578,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
582
578
|
return
|
|
583
579
|
} else {
|
|
584
580
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
585
|
-
reject?(error?.
|
|
581
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
586
582
|
return
|
|
587
583
|
}
|
|
588
584
|
})
|
|
@@ -606,8 +602,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
606
602
|
if remoteAudioTrack != nil {
|
|
607
603
|
remoteAudioTrack?.setVolume(volume)
|
|
608
604
|
} else {
|
|
609
|
-
|
|
610
|
-
strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
|
|
605
|
+
strongSelf.delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": "Track not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": strongSelf.id])
|
|
611
606
|
}
|
|
612
607
|
}
|
|
613
608
|
}
|
|
@@ -628,9 +623,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
628
623
|
if let meetLink = URL(string: meetingString) {
|
|
629
624
|
meetingUrl = meetLink
|
|
630
625
|
} else {
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
reject?("INVALID_MEETING_URL_PASSED", "INVALID_MEETING_URL_PASSED", nil)
|
|
626
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "Invalid meeting url passed", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
627
|
+
reject?("Invalid meeting url passed", "Invalid meeting url passed", nil)
|
|
634
628
|
}
|
|
635
629
|
|
|
636
630
|
let URLs = HMSHelper.getRtmpUrls(rtmpStrings)
|
|
@@ -648,7 +642,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
648
642
|
return
|
|
649
643
|
} else {
|
|
650
644
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
651
|
-
reject?(error?.
|
|
645
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
652
646
|
return
|
|
653
647
|
}
|
|
654
648
|
})
|
|
@@ -667,7 +661,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
667
661
|
return
|
|
668
662
|
} else {
|
|
669
663
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
670
|
-
reject?(error?.
|
|
664
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
671
665
|
return
|
|
672
666
|
}
|
|
673
667
|
})
|
|
@@ -675,9 +669,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
675
669
|
|
|
676
670
|
func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
677
671
|
let recordConfig = HMSHelper.getHlsRecordingConfig(data.value(forKey: "hlsRecordingConfig") as? NSDictionary)
|
|
678
|
-
let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(data.value(forKey: "meetingURLVariants") as? [[String
|
|
679
|
-
var config: HMSHLSConfig?
|
|
680
|
-
if
|
|
672
|
+
let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(data.value(forKey: "meetingURLVariants") as? [[String: Any]])
|
|
673
|
+
var config: HMSHLSConfig?
|
|
674
|
+
if !hlsMeetingUrlVariant.isEmpty || recordConfig !== nil {
|
|
681
675
|
config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
|
|
682
676
|
}
|
|
683
677
|
|
|
@@ -693,7 +687,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
693
687
|
return
|
|
694
688
|
} else {
|
|
695
689
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
696
|
-
reject?(error?.
|
|
690
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
697
691
|
return
|
|
698
692
|
}
|
|
699
693
|
})
|
|
@@ -712,12 +706,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
712
706
|
return
|
|
713
707
|
} else {
|
|
714
708
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
715
|
-
reject?(error?.
|
|
709
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
716
710
|
return
|
|
717
711
|
}
|
|
718
712
|
})
|
|
719
713
|
}
|
|
720
|
-
|
|
714
|
+
|
|
721
715
|
func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
722
716
|
guard let name = data.value(forKey: "name") as? String
|
|
723
717
|
else {
|
|
@@ -732,14 +726,14 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
732
726
|
resolve?(["success": success])
|
|
733
727
|
} else {
|
|
734
728
|
self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
|
|
735
|
-
reject?(error?.
|
|
729
|
+
reject?(error?.localizedDescription, error?.localizedDescription, nil)
|
|
736
730
|
}
|
|
737
731
|
}
|
|
738
732
|
}
|
|
739
|
-
|
|
733
|
+
|
|
740
734
|
func remoteMuteAllAudio(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
741
735
|
let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
|
|
742
|
-
var customError:
|
|
736
|
+
var customError: Error?
|
|
743
737
|
for audioTrack in allAudioTracks {
|
|
744
738
|
self.hms?.changeTrackState(for: audioTrack, mute: true, completion: { success, error in
|
|
745
739
|
if success {
|
|
@@ -748,10 +742,10 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
748
742
|
}
|
|
749
743
|
})
|
|
750
744
|
}
|
|
751
|
-
if
|
|
745
|
+
if customError == nil {
|
|
752
746
|
resolve?(["success": true])
|
|
753
747
|
} else {
|
|
754
|
-
reject?(customError?.
|
|
748
|
+
reject?(customError?.localizedDescription, customError?.localizedDescription, nil)
|
|
755
749
|
}
|
|
756
750
|
}
|
|
757
751
|
|
|
@@ -775,20 +769,19 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
775
769
|
|
|
776
770
|
self.delegate?.emitEvent(ON_PEER_UPDATE, ["event": ON_PEER_UPDATE, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
|
|
777
771
|
}
|
|
778
|
-
|
|
772
|
+
|
|
779
773
|
func enableRTCStats() {
|
|
780
774
|
rtcStatsAttached = true
|
|
781
775
|
}
|
|
782
|
-
|
|
776
|
+
|
|
783
777
|
func disableRTCStats() {
|
|
784
778
|
rtcStatsAttached = false
|
|
785
779
|
}
|
|
786
780
|
|
|
787
781
|
func startScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
788
782
|
guard let preferredExtension = preferredExtension else {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
reject?(error.message, error.localizedDescription, nil)
|
|
783
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "Could not start screen share, preferredExtension not passed in Build method", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
784
|
+
reject?("Could not start screen share, preferredExtension not passed in Build method", "Could not start screen share, preferredExtension not passed in Build method", nil)
|
|
792
785
|
return
|
|
793
786
|
}
|
|
794
787
|
DispatchQueue.main.async { [weak self] in
|
|
@@ -797,7 +790,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
797
790
|
self?.systemBroadcastPicker!.preferredExtension = preferredExtension
|
|
798
791
|
self?.systemBroadcastPicker!.showsMicrophoneButton = false
|
|
799
792
|
}
|
|
800
|
-
|
|
793
|
+
|
|
801
794
|
for view in self!.systemBroadcastPicker!.subviews {
|
|
802
795
|
if let button = view as? UIButton {
|
|
803
796
|
button.sendActions(for: .allEvents)
|
|
@@ -806,12 +799,11 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
806
799
|
self?.startScreenshareResolve = resolve
|
|
807
800
|
}
|
|
808
801
|
}
|
|
809
|
-
|
|
802
|
+
|
|
810
803
|
func stopScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
811
804
|
guard let preferredExtension = preferredExtension else {
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
reject?(error.message, error.localizedDescription, nil)
|
|
805
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "Could not start screen share, preferredExtension not passed in Build method", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
806
|
+
reject?("Could not start screen share, preferredExtension not passed in Build method", "Could not start screen share, preferredExtension not passed in Build method", nil)
|
|
815
807
|
return
|
|
816
808
|
}
|
|
817
809
|
DispatchQueue.main.async { [weak self] in
|
|
@@ -820,7 +812,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
820
812
|
self?.systemBroadcastPicker!.preferredExtension = preferredExtension
|
|
821
813
|
self?.systemBroadcastPicker!.showsMicrophoneButton = false
|
|
822
814
|
}
|
|
823
|
-
|
|
815
|
+
|
|
824
816
|
for view in self!.systemBroadcastPicker!.subviews {
|
|
825
817
|
if let button = view as? UIButton {
|
|
826
818
|
button.sendActions(for: .allEvents)
|
|
@@ -829,11 +821,167 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
829
821
|
self?.stopScreenshareResolve = resolve
|
|
830
822
|
}
|
|
831
823
|
}
|
|
832
|
-
|
|
824
|
+
|
|
833
825
|
func isScreenShared(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
834
826
|
resolve?(isScreenShared)
|
|
835
827
|
}
|
|
836
828
|
|
|
829
|
+
func playAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
830
|
+
guard let fileUrl = data.value(forKey: "fileUrl") as? String,
|
|
831
|
+
let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
832
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
833
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
834
|
+
else {
|
|
835
|
+
let errorMessage = "playAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode", "fileUrl"])
|
|
836
|
+
emitRequiredKeysError(errorMessage)
|
|
837
|
+
reject?(errorMessage, errorMessage, nil)
|
|
838
|
+
return
|
|
839
|
+
}
|
|
840
|
+
let loops = data.value(forKey: "loops") as? Bool ?? false
|
|
841
|
+
let interrupts = data.value(forKey: "interrupts") as? Bool ?? false
|
|
842
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
843
|
+
if let url = URL(string: fileUrl) {
|
|
844
|
+
do {
|
|
845
|
+
try audioFilePlayerNode.play(fileUrl: url, loops: loops, interrupts: interrupts)
|
|
846
|
+
resolve?(["success": true])
|
|
847
|
+
} catch {
|
|
848
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
849
|
+
reject?(error.localizedDescription, error.localizedDescription, nil)
|
|
850
|
+
}
|
|
851
|
+
} else {
|
|
852
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "Incorrect url", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
853
|
+
reject?("Incorrect URL", "Incorrect URL", nil)
|
|
854
|
+
}
|
|
855
|
+
} else {
|
|
856
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
857
|
+
reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
func setAudioShareVolume(_ data: NSDictionary) {
|
|
862
|
+
guard let volume = data.value(forKey: "volume") as? NSNumber,
|
|
863
|
+
let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
864
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
865
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
866
|
+
else {
|
|
867
|
+
let errorMessage = "setAudioShareVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode", "volume"])
|
|
868
|
+
emitRequiredKeysError(errorMessage)
|
|
869
|
+
return
|
|
870
|
+
}
|
|
871
|
+
if let audioMicNode = playerNode as? HMSMicNode {
|
|
872
|
+
audioMicNode.volume = volume.floatValue
|
|
873
|
+
}
|
|
874
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
875
|
+
audioFilePlayerNode.volume = volume.floatValue
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
func stopAudioShare(_ data: NSDictionary) {
|
|
880
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
881
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
882
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
883
|
+
else {
|
|
884
|
+
let errorMessage = "stopAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
885
|
+
emitRequiredKeysError(errorMessage)
|
|
886
|
+
return
|
|
887
|
+
}
|
|
888
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
889
|
+
audioFilePlayerNode.stop()
|
|
890
|
+
} else {
|
|
891
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
func resumeAudioShare(_ data: NSDictionary) {
|
|
896
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
897
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
898
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
899
|
+
else {
|
|
900
|
+
let errorMessage = "resumeAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
901
|
+
emitRequiredKeysError(errorMessage)
|
|
902
|
+
return
|
|
903
|
+
}
|
|
904
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
905
|
+
do {
|
|
906
|
+
try audioFilePlayerNode.resume()
|
|
907
|
+
} catch {
|
|
908
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
909
|
+
}
|
|
910
|
+
} else {
|
|
911
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
func pauseAudioShare(_ data: NSDictionary) {
|
|
916
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
917
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
918
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
919
|
+
else {
|
|
920
|
+
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
921
|
+
emitRequiredKeysError(errorMessage)
|
|
922
|
+
return
|
|
923
|
+
}
|
|
924
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
925
|
+
audioFilePlayerNode.pause()
|
|
926
|
+
} else {
|
|
927
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
func audioShareIsPlaying(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
932
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
933
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
934
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
935
|
+
else {
|
|
936
|
+
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
937
|
+
emitRequiredKeysError(errorMessage)
|
|
938
|
+
reject?(errorMessage, errorMessage, nil)
|
|
939
|
+
return
|
|
940
|
+
}
|
|
941
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
942
|
+
resolve?(audioFilePlayerNode.isPlaying)
|
|
943
|
+
} else {
|
|
944
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
945
|
+
reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
func audioShareCurrentTime(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
950
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
951
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
952
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
953
|
+
else {
|
|
954
|
+
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
955
|
+
emitRequiredKeysError(errorMessage)
|
|
956
|
+
reject?(errorMessage, errorMessage, nil)
|
|
957
|
+
return
|
|
958
|
+
}
|
|
959
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
960
|
+
resolve?(audioFilePlayerNode.currentTime)
|
|
961
|
+
} else {
|
|
962
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
963
|
+
reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
func audioShareDuration(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
968
|
+
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
969
|
+
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
970
|
+
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
971
|
+
else {
|
|
972
|
+
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
973
|
+
emitRequiredKeysError(errorMessage)
|
|
974
|
+
reject?(errorMessage, errorMessage, nil)
|
|
975
|
+
return
|
|
976
|
+
}
|
|
977
|
+
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
978
|
+
resolve?(audioFilePlayerNode.duration)
|
|
979
|
+
} else {
|
|
980
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
981
|
+
reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
|
|
837
985
|
// MARK: - HMS SDK Delegate Callbacks
|
|
838
986
|
func on(join room: HMSRoom) {
|
|
839
987
|
let roomData = HMSDecoder.getHmsRoom(room)
|
|
@@ -898,11 +1046,11 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
898
1046
|
stopScreenshareResolve = nil
|
|
899
1047
|
}
|
|
900
1048
|
}
|
|
901
|
-
|
|
1049
|
+
|
|
902
1050
|
self.delegate?.emitEvent(ON_TRACK_UPDATE, ["event": ON_TRACK_UPDATE, "id": self.id, "room": roomData, "type": type, "localPeer": localPeerData, "remotePeers": remotePeerData, "peer": hmsPeer, "track": hmsTrack])
|
|
903
1051
|
}
|
|
904
1052
|
|
|
905
|
-
func on(error:
|
|
1053
|
+
func on(error: Error) {
|
|
906
1054
|
if previewInProgress { previewInProgress = false }
|
|
907
1055
|
self.delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
|
|
908
1056
|
}
|
|
@@ -921,7 +1069,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
921
1069
|
|
|
922
1070
|
func onReconnecting() {
|
|
923
1071
|
reconnectingStage = true
|
|
924
|
-
self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "error": ["code":
|
|
1072
|
+
self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "error": ["code": 1003, "description": "Network connection lost ", "isTerminal": false, "canRetry": true], "id": self.id ])
|
|
925
1073
|
}
|
|
926
1074
|
|
|
927
1075
|
func onReconnected() {
|
|
@@ -950,59 +1098,59 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
950
1098
|
let roomEnded = notification.roomEnded
|
|
951
1099
|
self.delegate?.emitEvent(ON_REMOVED_FROM_ROOM, ["event": ON_REMOVED_FROM_ROOM, "id": self.id, "requestedBy": decodedRequestedBy as Any, "reason": reason, "roomEnded": roomEnded ])
|
|
952
1100
|
}
|
|
953
|
-
|
|
1101
|
+
|
|
954
1102
|
func on(rtcStats: HMSRTCStatsReport) {
|
|
955
|
-
if
|
|
1103
|
+
if !rtcStatsAttached {
|
|
956
1104
|
return
|
|
957
1105
|
}
|
|
958
1106
|
let video = HMSDecoder.getHMSRTCStats(rtcStats.video)
|
|
959
1107
|
let audio = HMSDecoder.getHMSRTCStats(rtcStats.audio)
|
|
960
1108
|
let combined = HMSDecoder.getHMSRTCStats(rtcStats.combined)
|
|
961
|
-
|
|
1109
|
+
|
|
962
1110
|
self.delegate?.emitEvent(ON_RTC_STATS, ["video": video, "audio": audio, "combined": combined, "id": self.id])
|
|
963
1111
|
}
|
|
964
|
-
|
|
1112
|
+
|
|
965
1113
|
func on(localAudioStats: HMSLocalAudioStats, track: HMSLocalAudioTrack, peer: HMSPeer) {
|
|
966
|
-
if
|
|
1114
|
+
if !rtcStatsAttached {
|
|
967
1115
|
return
|
|
968
1116
|
}
|
|
969
1117
|
let localStats = HMSDecoder.getLocalAudioStats(localAudioStats)
|
|
970
1118
|
let localTrack = HMSDecoder.getHmsLocalAudioTrack(track)
|
|
971
1119
|
let decodedPeer = HMSDecoder.getHmsPeer(peer)
|
|
972
|
-
|
|
1120
|
+
|
|
973
1121
|
self.delegate?.emitEvent(ON_LOCAL_AUDIO_STATS, ["localAudioStats": localStats, "track": localTrack, "peer": decodedPeer, "id": self.id])
|
|
974
1122
|
}
|
|
975
|
-
|
|
1123
|
+
|
|
976
1124
|
func on(localVideoStats: HMSLocalVideoStats, track: HMSLocalVideoTrack, peer: HMSPeer) {
|
|
977
|
-
if
|
|
1125
|
+
if !rtcStatsAttached {
|
|
978
1126
|
return
|
|
979
1127
|
}
|
|
980
1128
|
let localStats = HMSDecoder.getLocalVideoStats(localVideoStats)
|
|
981
1129
|
let decodedPeer = HMSDecoder.getHmsPeer(peer)
|
|
982
1130
|
let localTrack = HMSDecoder.getHmsLocalVideoTrack(track)
|
|
983
|
-
|
|
1131
|
+
|
|
984
1132
|
self.delegate?.emitEvent(ON_LOCAL_VIDEO_STATS, ["localVideoStats": localStats, "track": localTrack, "peer": decodedPeer, "id": self.id])
|
|
985
1133
|
}
|
|
986
|
-
|
|
1134
|
+
|
|
987
1135
|
func on(remoteAudioStats: HMSRemoteAudioStats, track: HMSRemoteAudioTrack, peer: HMSPeer) {
|
|
988
|
-
if
|
|
1136
|
+
if !rtcStatsAttached {
|
|
989
1137
|
return
|
|
990
1138
|
}
|
|
991
1139
|
let remoteStats = HMSDecoder.getRemoteAudioStats(remoteAudioStats)
|
|
992
1140
|
let remoteTrack = HMSDecoder.getHMSRemoteAudioTrack(track)
|
|
993
1141
|
let decodedPeer = HMSDecoder.getHmsPeer(peer)
|
|
994
|
-
|
|
1142
|
+
|
|
995
1143
|
self.delegate?.emitEvent(ON_REMOTE_AUDIO_STATS, ["remoteAudioStats": remoteStats, "track": remoteTrack, "peer": decodedPeer, "id": self.id])
|
|
996
1144
|
}
|
|
997
|
-
|
|
1145
|
+
|
|
998
1146
|
func on(remoteVideoStats: HMSRemoteVideoStats, track: HMSRemoteVideoTrack, peer: HMSPeer) {
|
|
999
|
-
if
|
|
1147
|
+
if !rtcStatsAttached {
|
|
1000
1148
|
return
|
|
1001
1149
|
}
|
|
1002
1150
|
let remoteStats = HMSDecoder.getRemoteVideoStats(remoteVideoStats)
|
|
1003
1151
|
let decodedPeer = HMSDecoder.getHmsPeer(peer)
|
|
1004
1152
|
let remoteTrack = HMSDecoder.getHMSRemoteVideoTrack(track)
|
|
1005
|
-
|
|
1153
|
+
|
|
1006
1154
|
self.delegate?.emitEvent(ON_REMOTE_VIDEO_STATS, ["remoteVideoStats": remoteStats, "track": remoteTrack, "peer": decodedPeer, "id": self.id])
|
|
1007
1155
|
}
|
|
1008
1156
|
|
|
@@ -1069,6 +1217,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1069
1217
|
}
|
|
1070
1218
|
|
|
1071
1219
|
func emitRequiredKeysError(_ error: String) {
|
|
1072
|
-
delegate?.emitEvent(ON_ERROR, ["error": ["code":
|
|
1220
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": 6002, "description": error, "isTerminal": false, "canRetry": true], "id": id])
|
|
1073
1221
|
}
|
|
1074
1222
|
}
|