@100mslive/react-native-hms 0.9.91 → 0.9.92
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/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +1 -1
- package/ios/HMSManager.m +3 -0
- package/ios/HMSManager.swift +21 -0
- package/ios/HMSRNSDK.swift +91 -50
- package/lib/commonjs/classes/HMSSDK.js +20 -29
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +20 -29
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/typescript/classes/HMSSDK.d.ts +4 -2
- package/package.json +1 -1
- package/react-native-hms.podspec +1 -0
- package/src/classes/HMSSDK.tsx +17 -20
|
@@ -41,7 +41,7 @@ class HMSRNSDK(
|
|
|
41
41
|
private var self = this
|
|
42
42
|
|
|
43
43
|
init {
|
|
44
|
-
val trackSettings = HMSHelper.getTrackSettings(data)
|
|
44
|
+
val trackSettings = HMSHelper.getTrackSettings(data?.getMap("trackSettings"))
|
|
45
45
|
if (trackSettings == null) {
|
|
46
46
|
this.hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
|
|
47
47
|
} else {
|
package/ios/HMSManager.m
CHANGED
|
@@ -37,4 +37,7 @@ RCT_EXTERN_METHOD(changeName: (NSDictionary) data :(RCTPromiseResolveBlock) reso
|
|
|
37
37
|
RCT_EXTERN_METHOD(enableRTCStats: (NSDictionary) data)
|
|
38
38
|
RCT_EXTERN_METHOD(disableRTCStats: (NSDictionary) data)
|
|
39
39
|
RCT_EXTERN_METHOD(destroy: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
40
|
+
RCT_EXTERN_METHOD(startScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
41
|
+
RCT_EXTERN_METHOD(stopScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
42
|
+
RCT_EXTERN_METHOD(isScreenShared: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
40
43
|
@end
|
package/ios/HMSManager.swift
CHANGED
|
@@ -302,6 +302,27 @@ class HMSManager: RCTEventEmitter {
|
|
|
302
302
|
resolve?(["success": id + " removed"])
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
+
@objc
|
|
306
|
+
func startScreenshare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
307
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
308
|
+
|
|
309
|
+
hms?.startScreenshare(resolve, reject)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@objc
|
|
313
|
+
func stopScreenshare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
314
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
315
|
+
|
|
316
|
+
hms?.stopScreenshare(resolve, reject)
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
@objc
|
|
320
|
+
func isScreenShared(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
321
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
322
|
+
|
|
323
|
+
hms?.isScreenShared(resolve, reject)
|
|
324
|
+
}
|
|
325
|
+
|
|
305
326
|
// @objc
|
|
306
327
|
// func setLocalVideoSettings(_ data: NSDictionary) {
|
|
307
328
|
// let hms = HMSHelper.getHms(data, hmsCollection)
|
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
9
9
|
import HMSSDK
|
|
10
|
+
import ReplayKit
|
|
10
11
|
|
|
11
12
|
class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
12
13
|
|
|
@@ -18,6 +19,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
18
19
|
var rtcStatsAttached = false
|
|
19
20
|
var recentPreviewTracks: [HMSTrack]? = []
|
|
20
21
|
private var reconnectingStage: Bool = false
|
|
22
|
+
private var preferredExtension: String? = nil
|
|
23
|
+
private var systemBroadcastPicker: RPSystemBroadcastPickerView? = nil
|
|
24
|
+
private var startScreenshareResolve: RCTPromiseResolveBlock? = nil
|
|
25
|
+
private var stopScreenshareResolve: RCTPromiseResolveBlock? = nil
|
|
26
|
+
private var isScreenShared: Bool? = false
|
|
27
|
+
private var previewInProgress = false
|
|
21
28
|
|
|
22
29
|
let ON_PREVIEW = "ON_PREVIEW"
|
|
23
30
|
let ON_JOIN = "ON_JOIN"
|
|
@@ -38,14 +45,17 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
38
45
|
let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
|
|
39
46
|
|
|
40
47
|
// MARK: - Setup
|
|
41
|
-
|
|
42
48
|
init(data: NSDictionary?, delegate manager: HMSManager?, uid id: String) {
|
|
43
|
-
let
|
|
44
|
-
let
|
|
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
|
+
preferredExtension = data?.value(forKey: "preferredExtension") as? String
|
|
53
|
+
|
|
45
54
|
DispatchQueue.main.async { [weak self] in
|
|
46
55
|
let hmsTrackSettings = HMSTrackSettings(videoSettings: videoSettings, audioSettings: audioSettings)
|
|
47
56
|
self?.hms = HMSSDK.build { sdk in
|
|
48
57
|
sdk.trackSettings = hmsTrackSettings
|
|
58
|
+
sdk.appGroup = data?.value(forKey: "appGroup") as? String
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
61
|
self.delegate = manager
|
|
@@ -53,13 +63,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
// MARK: - HMS SDK Actions
|
|
56
|
-
|
|
57
|
-
private var previewInProgress = false
|
|
58
|
-
|
|
59
|
-
func emitRequiredKeysError(_ error: String) {
|
|
60
|
-
delegate?.emitEvent(ON_ERROR, ["error": ["code": HMSErrorCode.genericErrorUnknown.rawValue, "description": error, "message": error, "name": "REQUIRED_KEYS_NOT_FOUND", "action": "SEND_ALL_REQUIRED_KEYS", "id": 102, "isTerminal": false], "id": id])
|
|
61
|
-
}
|
|
62
|
-
|
|
63
66
|
func preview(_ credentials: NSDictionary) {
|
|
64
67
|
|
|
65
68
|
guard !previewInProgress else {
|
|
@@ -194,18 +197,23 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
194
197
|
|
|
195
198
|
func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
196
199
|
if(reconnectingStage) {
|
|
197
|
-
reject?("
|
|
200
|
+
reject?("Still in reconnecting stage", "Still in reconnecting stage", nil)
|
|
198
201
|
} else {
|
|
199
202
|
DispatchQueue.main.async { [weak self] in
|
|
200
203
|
guard let strongSelf = self else { return }
|
|
201
204
|
self?.config = nil
|
|
202
205
|
self?.recentRoleChangeRequest = nil
|
|
206
|
+
self?.systemBroadcastPicker = nil
|
|
207
|
+
self?.preferredExtension = nil
|
|
208
|
+
self?.stopScreenshareResolve = nil
|
|
209
|
+
self?.startScreenshareResolve = nil
|
|
210
|
+
self?.isScreenShared = false
|
|
203
211
|
self?.hms?.leave({ success, error in
|
|
204
212
|
if success {
|
|
205
213
|
resolve?(["success": success])
|
|
206
214
|
} else {
|
|
207
215
|
strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
|
|
208
|
-
reject?(
|
|
216
|
+
reject?("error in leave", "error in leave", nil)
|
|
209
217
|
}
|
|
210
218
|
})
|
|
211
219
|
}
|
|
@@ -359,7 +367,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
359
367
|
guard let remotePeers = self?.hms?.remotePeers,
|
|
360
368
|
let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
|
|
361
369
|
else {
|
|
362
|
-
reject?(
|
|
370
|
+
reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
|
|
363
371
|
return
|
|
364
372
|
}
|
|
365
373
|
|
|
@@ -428,7 +436,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
428
436
|
else {
|
|
429
437
|
let error = HMSError(id: "120", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_NOT_FOUND")
|
|
430
438
|
strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
|
|
431
|
-
reject?(
|
|
439
|
+
reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
|
|
432
440
|
return
|
|
433
441
|
}
|
|
434
442
|
let mute = track.isMute()
|
|
@@ -457,7 +465,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
457
465
|
guard let remotePeers = self?.hms?.remotePeers,
|
|
458
466
|
let peer = HMSHelper.getRemotePeerFromPeerId(peerId, remotePeers: remotePeers)
|
|
459
467
|
else {
|
|
460
|
-
reject?(
|
|
468
|
+
reject?("PEER_NOT_FOUND", "PEER_NOT_FOUND", nil)
|
|
461
469
|
return
|
|
462
470
|
}
|
|
463
471
|
|
|
@@ -506,7 +514,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
506
514
|
DispatchQueue.main.async { [weak self] in
|
|
507
515
|
guard let remotePeers = self?.hms?.remotePeers
|
|
508
516
|
else {
|
|
509
|
-
reject?(
|
|
517
|
+
reject?("REMOTE_PEERS_NOT_FOUND", "REMOTE_PEERS_NOT_FOUND", nil)
|
|
510
518
|
return
|
|
511
519
|
}
|
|
512
520
|
let remoteAudioTrack = HMSHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
|
|
@@ -520,7 +528,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
520
528
|
resolve?(isPlaybackAllowed)
|
|
521
529
|
return
|
|
522
530
|
} else {
|
|
523
|
-
reject?(
|
|
531
|
+
reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
|
|
524
532
|
return
|
|
525
533
|
}
|
|
526
534
|
}
|
|
@@ -776,34 +784,57 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
776
784
|
rtcStatsAttached = false
|
|
777
785
|
}
|
|
778
786
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
787
|
+
func startScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
788
|
+
guard let preferredExtension = preferredExtension else {
|
|
789
|
+
let error = HMSError(id: "103", code: .genericErrorUnknown, message: "Could not start Screen share, preferredExtension not passed in Build Method", params: ["function": #function])
|
|
790
|
+
on(error: error)
|
|
791
|
+
reject?(error.message, error.localizedDescription, nil)
|
|
792
|
+
return
|
|
793
|
+
}
|
|
794
|
+
DispatchQueue.main.async { [weak self] in
|
|
795
|
+
if self?.systemBroadcastPicker == nil {
|
|
796
|
+
self?.systemBroadcastPicker = RPSystemBroadcastPickerView()
|
|
797
|
+
self?.systemBroadcastPicker!.preferredExtension = preferredExtension
|
|
798
|
+
self?.systemBroadcastPicker!.showsMicrophoneButton = false
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
for view in self!.systemBroadcastPicker!.subviews {
|
|
802
|
+
if let button = view as? UIButton {
|
|
803
|
+
button.sendActions(for: .allEvents)
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
self?.startScreenshareResolve = resolve
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
func stopScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
811
|
+
guard let preferredExtension = preferredExtension else {
|
|
812
|
+
let error = HMSError(id: "103", code: .genericErrorUnknown, message: "Could not start Screen share, preferredExtension not passed in Build Method", params: ["function": #function])
|
|
813
|
+
on(error: error)
|
|
814
|
+
reject?(error.message, error.localizedDescription, nil)
|
|
815
|
+
return
|
|
816
|
+
}
|
|
817
|
+
DispatchQueue.main.async { [weak self] in
|
|
818
|
+
if self?.systemBroadcastPicker == nil {
|
|
819
|
+
self?.systemBroadcastPicker = RPSystemBroadcastPickerView()
|
|
820
|
+
self?.systemBroadcastPicker!.preferredExtension = preferredExtension
|
|
821
|
+
self?.systemBroadcastPicker!.showsMicrophoneButton = false
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
for view in self!.systemBroadcastPicker!.subviews {
|
|
825
|
+
if let button = view as? UIButton {
|
|
826
|
+
button.sendActions(for: .allEvents)
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
self?.stopScreenshareResolve = resolve
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
func isScreenShared(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
834
|
+
resolve?(isScreenShared)
|
|
835
|
+
}
|
|
793
836
|
|
|
794
|
-
//
|
|
795
|
-
// let localVideoTrack = self.hms?.localPeer?.localVideoTrack()
|
|
796
|
-
//
|
|
797
|
-
// guard let settings = HMSHelper.getLocalVideoSettings(data)
|
|
798
|
-
// else {
|
|
799
|
-
// let errorMessage = "setLocalVideoSettings: " + HMSHelper.getUnavailableRequiredKey(data)
|
|
800
|
-
// emitRequiredKeysError(errorMessage)
|
|
801
|
-
// return
|
|
802
|
-
// }
|
|
803
|
-
// localVideoTrack?.settings = settings
|
|
804
|
-
// }
|
|
805
|
-
|
|
806
|
-
// MARK: - HMS SDK Delegate Callbacks
|
|
837
|
+
// MARK: - HMS SDK Delegate Callbacks
|
|
807
838
|
func on(join room: HMSRoom) {
|
|
808
839
|
let roomData = HMSDecoder.getHmsRoom(room)
|
|
809
840
|
let localPeerData = HMSDecoder.getHmsLocalPeer(hms?.localPeer)
|
|
@@ -856,6 +887,18 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
856
887
|
let hmsPeer = HMSDecoder.getHmsPeer(peer)
|
|
857
888
|
let hmsTrack = HMSDecoder.getHmsTrack(track)
|
|
858
889
|
|
|
890
|
+
if peer.isLocal && track.source.uppercased() == "SCREEN" && track.kind == HMSTrackKind.video {
|
|
891
|
+
if update == .trackAdded {
|
|
892
|
+
isScreenShared = true
|
|
893
|
+
startScreenshareResolve?(["success": true])
|
|
894
|
+
startScreenshareResolve = nil
|
|
895
|
+
} else if update == .trackRemoved {
|
|
896
|
+
isScreenShared = false
|
|
897
|
+
stopScreenshareResolve?(["success": true])
|
|
898
|
+
stopScreenshareResolve = nil
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
|
|
859
902
|
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])
|
|
860
903
|
}
|
|
861
904
|
|
|
@@ -1024,10 +1067,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1024
1067
|
return ""
|
|
1025
1068
|
}
|
|
1026
1069
|
}
|
|
1027
|
-
}
|
|
1028
1070
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
// }
|
|
1071
|
+
func emitRequiredKeysError(_ error: String) {
|
|
1072
|
+
delegate?.emitEvent(ON_ERROR, ["error": ["code": HMSErrorCode.genericErrorUnknown.rawValue, "description": error, "message": error, "name": "REQUIRED_KEYS_NOT_FOUND", "action": "SEND_ALL_REQUIRED_KEYS", "id": 102, "isTerminal": false], "id": id])
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
@@ -499,45 +499,27 @@ class HMSSDK {
|
|
|
499
499
|
_HMSLogger.logger === null || _HMSLogger.logger === void 0 ? void 0 : _HMSLogger.logger.verbose('#Function startScreenshare', {
|
|
500
500
|
id: this.id
|
|
501
501
|
});
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
id: this.id
|
|
506
|
-
});
|
|
507
|
-
} else {
|
|
508
|
-
console.log('API currently not available for iOS');
|
|
509
|
-
return 'API currently not available for iOS';
|
|
510
|
-
}
|
|
502
|
+
return await HMSManager.startScreenshare({
|
|
503
|
+
id: this.id
|
|
504
|
+
});
|
|
511
505
|
});
|
|
512
506
|
|
|
513
507
|
_defineProperty(this, "isScreenShared", async () => {
|
|
514
508
|
_HMSLogger.logger === null || _HMSLogger.logger === void 0 ? void 0 : _HMSLogger.logger.verbose('#Function isScreenShared', {
|
|
515
509
|
id: this.id
|
|
516
510
|
});
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
id: this.id
|
|
521
|
-
});
|
|
522
|
-
} else {
|
|
523
|
-
console.log('API currently not available for iOS');
|
|
524
|
-
return 'API currently not available for iOS';
|
|
525
|
-
}
|
|
511
|
+
return await HMSManager.isScreenShared({
|
|
512
|
+
id: this.id
|
|
513
|
+
});
|
|
526
514
|
});
|
|
527
515
|
|
|
528
516
|
_defineProperty(this, "stopScreenshare", async () => {
|
|
529
517
|
_HMSLogger.logger === null || _HMSLogger.logger === void 0 ? void 0 : _HMSLogger.logger.verbose('#Function stopScreenshare', {
|
|
530
518
|
id: this.id
|
|
531
519
|
});
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
id: this.id
|
|
536
|
-
});
|
|
537
|
-
} else {
|
|
538
|
-
console.log('API currently not available for iOS');
|
|
539
|
-
return 'API currently not available for iOS';
|
|
540
|
-
}
|
|
520
|
+
return await HMSManager.stopScreenshare({
|
|
521
|
+
id: this.id
|
|
522
|
+
});
|
|
541
523
|
});
|
|
542
524
|
|
|
543
525
|
_defineProperty(this, "enableRTCStats", () => {
|
|
@@ -1369,8 +1351,17 @@ class HMSSDK {
|
|
|
1369
1351
|
*/
|
|
1370
1352
|
|
|
1371
1353
|
|
|
1372
|
-
static async build(
|
|
1373
|
-
let
|
|
1354
|
+
static async build(_ref) {
|
|
1355
|
+
let {
|
|
1356
|
+
trackSettings,
|
|
1357
|
+
appGroup,
|
|
1358
|
+
preferredExtension
|
|
1359
|
+
} = _ref;
|
|
1360
|
+
let id = await HMSManager.build({
|
|
1361
|
+
trackSettings: trackSettings,
|
|
1362
|
+
appGroup: appGroup,
|
|
1363
|
+
preferredExtension: preferredExtension
|
|
1364
|
+
});
|
|
1374
1365
|
HmsSdk = new HMSSDK(id);
|
|
1375
1366
|
HmsSdk.attachPreviewListener();
|
|
1376
1367
|
HmsSdk.attachListeners();
|