Skip to content

Commit 7c9ed81

Browse files
committed
feat: support native 3.5.0.2
1 parent 79ff77a commit 7c9ed81

20 files changed

+338
-61
lines changed

android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ android {
5050
}
5151

5252
dependencies {
53-
api 'com.github.agorabuilder:native-full-sdk:3.4.6'
53+
api 'com.github.agorabuilder:native-full-sdk:3.5.0.2'
5454

5555
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${safeExtGet('kotlin_version', '1.3.72')}"
5656
}

android/src/main/java/io/agora/rtc/base/Annotations.java

+23-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.agora.rtc.RtcEngineConfig;
1111
import io.agora.rtc.video.BeautyOptions;
1212
import io.agora.rtc.video.VideoCanvas;
13+
import io.agora.rtc.video.VirtualBackgroundSource;
1314

1415
@SuppressWarnings("deprecation")
1516
public class Annotations {
@@ -326,10 +327,10 @@ public class Annotations {
326327
Constants.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE,
327328
Constants.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL,
328329
Constants.RELAY_EVENT_VIDEO_PROFILE_UPDATE,
329-
Constants.RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS,
330-
Constants.RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED,
331-
Constants.RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS,
332-
Constants.RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED,
330+
// Constants.RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS,
331+
// Constants.RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED,
332+
// Constants.RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS,
333+
// Constants.RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED,
333334
})
334335
@Retention(RetentionPolicy.SOURCE)
335336
public @interface AgoraChannelMediaRelayEvent {
@@ -968,4 +969,22 @@ public class Annotations {
968969
@Retention(RetentionPolicy.SOURCE)
969970
public @interface AgoraSuperResolutionStateReason {
970971
}
972+
973+
@IntDef({
974+
VirtualBackgroundSource.BACKGROUND_COLOR,
975+
VirtualBackgroundSource.BACKGROUND_IMG,
976+
})
977+
@Retention(RetentionPolicy.SOURCE)
978+
public @interface AgoraVirtualBackgroundSourceType {
979+
}
980+
981+
@IntDef({
982+
Constants.VBS_STATE_REASON_SUCCESS,
983+
Constants.VBS_STATE_REASON_IMAGE_NOT_EXIST,
984+
Constants.VBS_STATE_REASON_COLOR_FORMAT_NOT_SUPPORTED,
985+
Constants.VBS_STATE_REASON_DEVICE_NOT_SUPPORTED,
986+
})
987+
@Retention(RetentionPolicy.SOURCE)
988+
public @interface AgoraVirtualBackgroundSourceStateReason {
989+
}
971990
}

android/src/main/java/io/agora/rtc/base/BeanCovertor.kt

+8
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,11 @@ fun mapToDataStreamConfig(map: Map<*, *>): DataStreamConfig {
255255
(map["ordered"] as? Boolean)?.let { ordered = it }
256256
}
257257
}
258+
259+
fun mapToVirtualBackgroundSource(map: Map<*, *>): VirtualBackgroundSource {
260+
return VirtualBackgroundSource().apply {
261+
(map["backgroundSourceType"] as? Number)?.let { backgroundSourceType = it.toInt() }
262+
(map["color"] as? Map<*, *>)?.let { color = mapToColor(it) }
263+
(map["source"] as? String)?.let { source = it }
264+
}
265+
}

android/src/main/java/io/agora/rtc/base/RtcChannel.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.agora.rtc.base
22

3+
import io.agora.rtc.Constants
34
import io.agora.rtc.IMetadataObserver
45
import io.agora.rtc.RtcChannel
56
import io.agora.rtc.RtcEngine
@@ -345,11 +346,13 @@ class RtcChannelManager(
345346
}
346347

347348
override fun pauseAllChannelMediaRelay(params: Map<String, *>, callback: Callback) {
348-
callback.code(this[params["channelId"] as String]?.pauseAllChannelMediaRelay())
349+
callback.code(-Constants.ERR_NOT_SUPPORTED)
350+
// callback.code(this[params["channelId"] as String]?.pauseAllChannelMediaRelay())
349351
}
350352

351353
override fun resumeAllChannelMediaRelay(params: Map<String, *>, callback: Callback) {
352-
callback.code(this[params["channelId"] as String]?.resumeAllChannelMediaRelay())
354+
callback.code(-Constants.ERR_NOT_SUPPORTED)
355+
// callback.code(this[params["channelId"] as String]?.resumeAllChannelMediaRelay())
353356
}
354357

355358
override fun setRemoteVideoStreamType(params: Map<String, *>, callback: Callback) {

android/src/main/java/io/agora/rtc/base/RtcEngine.kt

+15-2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ class IRtcEngine {
6666
fun uploadLogFile(callback: Callback)
6767

6868
fun setLocalAccessPoint(params: Map<String, *>, callback: Callback)
69+
70+
fun enableVirtualBackground(params: Map<String, *>, callback: Callback)
6971
}
7072

7173
interface RtcUserInfoInterface {
@@ -542,6 +544,15 @@ class RtcEngineManager(
542544
)
543545
}
544546

547+
override fun enableVirtualBackground(params: Map<String, *>, callback: Callback) {
548+
callback.code(
549+
engine?.enableVirtualBackground(
550+
params["enabled"] as Boolean,
551+
mapToVirtualBackgroundSource(params["backgroundSource"] as Map<*, *>)
552+
)
553+
)
554+
}
555+
545556
override fun registerLocalUserAccount(params: Map<String, *>, callback: Callback) {
546557
callback.code(
547558
engine?.registerLocalUserAccount(
@@ -1022,11 +1033,13 @@ class RtcEngineManager(
10221033
}
10231034

10241035
override fun pauseAllChannelMediaRelay(callback: Callback) {
1025-
callback.code(engine?.pauseAllChannelMediaRelay())
1036+
callback.code(-Constants.ERR_NOT_SUPPORTED)
1037+
// callback.code(engine?.pauseAllChannelMediaRelay())
10261038
}
10271039

10281040
override fun resumeAllChannelMediaRelay(callback: Callback) {
1029-
callback.code(engine?.resumeAllChannelMediaRelay())
1041+
callback.code(-Constants.ERR_NOT_SUPPORTED)
1042+
// callback.code(engine?.resumeAllChannelMediaRelay())
10301043
}
10311044

10321045
override fun setDefaultAudioRoutetoSpeakerphone(params: Map<String, *>, callback: Callback) {

android/src/main/java/io/agora/rtc/base/RtcEngineEvent.kt

+10-1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class RtcEngineEvents {
8686
const val RtmpStreamingEvent = "RtmpStreamingEvent"
8787
const val UserSuperResolutionEnabled = "UserSuperResolutionEnabled"
8888
const val UploadLogResult = "UploadLogResult"
89+
const val VirtualBackgroundSourceEnabled = "VirtualBackgroundSourceEnabled"
8990

9091
fun toMap(): Map<String, String> {
9192
return hashMapOf(
@@ -167,7 +168,8 @@ class RtcEngineEvents {
167168
"VideoSubscribeStateChanged" to VideoSubscribeStateChanged,
168169
"RtmpStreamingEvent" to RtmpStreamingEvent,
169170
"UserSuperResolutionEnabled" to UserSuperResolutionEnabled,
170-
"UploadLogResult" to UploadLogResult
171+
"UploadLogResult" to UploadLogResult,
172+
"VirtualBackgroundSourceEnabled" to VirtualBackgroundSourceEnabled
171173
)
172174
}
173175
}
@@ -679,4 +681,11 @@ class RtcEngineEventHandler(
679681
) {
680682
callback(RtcEngineEvents.UploadLogResult, requestId, success, reason)
681683
}
684+
685+
override fun onVirtualBackgroundSourceEnabled(
686+
enabled: Boolean,
687+
@Annotations.AgoraVirtualBackgroundSourceStateReason reason: Int
688+
) {
689+
callback(RtcEngineEvents.VirtualBackgroundSourceEnabled, enabled, reason)
690+
}
682691
}

git.sh

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
git subtree pull --prefix android/src/main/java/io/agora/rtc/base Android "$1" --squash
2+
git subtree pull --prefix ios/Classes/Base iOS "$1" --squash

ios/Classes/Base/BeanCovertor.swift

+16
Original file line numberDiff line numberDiff line change
@@ -416,3 +416,19 @@ func mapToDataStreamConfig(_ map: [String: Any]) -> AgoraDataStreamConfig {
416416
}
417417
return config
418418
}
419+
420+
func mapToVirtualBackgroundSource(_ map: [String: Any]) -> AgoraVirtualBackgroundSource {
421+
let backgroundSource = AgoraVirtualBackgroundSource()
422+
if let backgroundSourceType = map["backgroundSourceType"] as? NSNumber {
423+
if let backgroundSourceType = AgoraVirtualBackgroundSourceType(rawValue: backgroundSourceType.uintValue) {
424+
backgroundSource.backgroundSourceType = backgroundSourceType
425+
}
426+
}
427+
if let color = map["color"] as? [String: Any] {
428+
var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
429+
mapToColor(color).getRed(&red, green: &green, blue: &blue, alpha: &alpha)
430+
backgroundSource.color = UInt(red * 255.0) << 16 + UInt(green * 255.0) << 8 + UInt(blue * 255.0)
431+
}
432+
backgroundSource.source = map["source"] as? String
433+
return backgroundSource
434+
}

ios/Classes/Base/RtcChannel.swift

+11-9
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,11 @@ class RtcChannelManager: NSObject, RtcChannelInterface {
190190
}
191191

192192
@objc func joinChannel(_ params: NSDictionary, _ callback: Callback) {
193-
callback.code(self[params["channelId"] as! String]?.join(byToken: params["token"] as? String, info: params["optionalInfo"] as? String, uid: (params["optionalUid"] as! NSNumber).uintValue, options: mapToChannelMediaOptions(params["options"] as! Dictionary)))
193+
callback.code(self[params["channelId"] as! String]?.join(byToken: params["token"] as? String, info: params["optionalInfo"] as? String, uid: (params["optionalUid"] as! NSNumber).uintValue, options: mapToChannelMediaOptions(params["options"] as! [String: Any])))
194194
}
195195

196196
@objc func joinChannelWithUserAccount(_ params: NSDictionary, _ callback: Callback) {
197-
callback.code(self[params["channelId"] as! String]?.join(byUserAccount: params["userAccount"] as! String, token: params["token"] as? String, options: mapToChannelMediaOptions(params["options"] as! Dictionary)))
197+
callback.code(self[params["channelId"] as! String]?.join(byUserAccount: params["userAccount"] as! String, token: params["token"] as? String, options: mapToChannelMediaOptions(params["options"] as! [String: Any])))
198198
}
199199

200200
@objc func leaveChannel(_ params: NSDictionary, _ callback: Callback) {
@@ -258,7 +258,7 @@ class RtcChannelManager: NSObject, RtcChannelInterface {
258258
}
259259

260260
@objc func setLiveTranscoding(_ params: NSDictionary, _ callback: Callback) {
261-
callback.code(self[params["channelId"] as! String]?.setLiveTranscoding(mapToLiveTranscoding(params["transcoding"] as! Dictionary)))
261+
callback.code(self[params["channelId"] as! String]?.setLiveTranscoding(mapToLiveTranscoding(params["transcoding"] as! [String: Any])))
262262
}
263263

264264
@objc func addPublishStreamUrl(_ params: NSDictionary, _ callback: Callback) {
@@ -270,11 +270,11 @@ class RtcChannelManager: NSObject, RtcChannelInterface {
270270
}
271271

272272
@objc func startChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
273-
callback.code(self[params["channelId"] as! String]?.startMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! Dictionary)))
273+
callback.code(self[params["channelId"] as! String]?.startMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! [String: Any])))
274274
}
275275

276276
@objc func updateChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
277-
callback.code(self[params["channelId"] as! String]?.updateMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! Dictionary)))
277+
callback.code(self[params["channelId"] as! String]?.updateMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! [String: Any])))
278278
}
279279

280280
@objc func stopChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
@@ -350,11 +350,11 @@ class RtcChannelManager: NSObject, RtcChannelInterface {
350350
}
351351

352352
@objc func enableEncryption(_ params: NSDictionary, _ callback: Callback) {
353-
callback.code(self[params["channelId"] as! String]?.enableEncryption(params["enabled"] as! Bool, encryptionConfig: mapToEncryptionConfig(params["config"] as! Dictionary)))
353+
callback.code(self[params["channelId"] as! String]?.enableEncryption(params["enabled"] as! Bool, encryptionConfig: mapToEncryptionConfig(params["config"] as! [String: Any])))
354354
}
355355

356356
@objc func addInjectStreamUrl(_ params: NSDictionary, _ callback: Callback) {
357-
callback.code(self[params["channelId"] as! String]?.addInjectStreamUrl(params["url"] as! String, config: mapToLiveInjectStreamConfig(params["config"] as! Dictionary)))
357+
callback.code(self[params["channelId"] as! String]?.addInjectStreamUrl(params["url"] as! String, config: mapToLiveInjectStreamConfig(params["config"] as! [String: Any])))
358358
}
359359

360360
@objc func removeInjectStreamUrl(_ params: NSDictionary, _ callback: Callback) {
@@ -392,10 +392,12 @@ class RtcChannelManager: NSObject, RtcChannelInterface {
392392
}
393393

394394
@objc func pauseAllChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
395-
callback.code(self[params["channelId"] as! String]?.pauseAllChannelMediaRelay())
395+
callback.code(-Int32(AgoraErrorCode.notSupported.rawValue))
396+
// callback.code(self[params["channelId"] as! String]?.pauseAllChannelMediaRelay())
396397
}
397398

398399
@objc func resumeAllChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
399-
callback.code(self[params["channelId"] as! String]?.resumeAllChannelMediaRelay())
400+
callback.code(-Int32(AgoraErrorCode.notSupported.rawValue))
401+
// callback.code(self[params["channelId"] as! String]?.resumeAllChannelMediaRelay())
400402
}
401403
}

ios/Classes/Base/RtcEngine.swift

+23-15
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ protocol RtcEngineInterface:
8484
func uploadLogFile(_ callback: Callback)
8585

8686
func setLocalAccessPoint(_ params: NSDictionary, _ callback: Callback)
87+
88+
func enableVirtualBackground(_ params: NSDictionary, _ callback: Callback)
8789
}
8890

8991
protocol RtcEngineUserInfoInterface {
@@ -408,7 +410,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
408410
delegate = RtcEngineEventHandler { [weak self] in
409411
self?.emitter($0, $1)
410412
}
411-
engine = AgoraRtcEngineKit.sharedEngine(with: mapToRtcEngineConfig(params["config"] as! Dictionary), delegate: delegate)
413+
engine = AgoraRtcEngineKit.sharedEngine(with: mapToRtcEngineConfig(params["config"] as! [String: Any]), delegate: delegate)
412414
callback.code(engine?.setAppType(AgoraRtcAppType(rawValue: (params["appType"] as! NSNumber).uintValue)!))
413415
}
414416

@@ -587,15 +589,15 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
587589
}
588590

589591
@objc func startRhythmPlayer(_ params: NSDictionary, _ callback: Callback) {
590-
callback.code(engine?.startRhythmPlayer(params["sound1"] as! String, sound2: params["sound2"] as! String, config: mapToRhythmPlayerConfig(params["config"] as! Dictionary)))
592+
callback.code(engine?.startRhythmPlayer(params["sound1"] as! String, sound2: params["sound2"] as! String, config: mapToRhythmPlayerConfig(params["config"] as! [String: Any])))
591593
}
592594

593595
@objc func stopRhythmPlayer(_ callback: Callback) {
594596
callback.code(engine?.stopRhythmPlayer())
595597
}
596598

597599
@objc func configRhythmPlayer(_ params: NSDictionary, _ callback: Callback) {
598-
callback.code(engine?.configRhythmPlayer(mapToRhythmPlayerConfig(params as! Dictionary)))
600+
callback.code(engine?.configRhythmPlayer(mapToRhythmPlayerConfig(params as! [String: Any])))
599601
}
600602

601603
@objc func enableVideo(_ callback: Callback) {
@@ -607,7 +609,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
607609
}
608610

609611
@objc func setVideoEncoderConfiguration(_ params: NSDictionary, _ callback: Callback) {
610-
callback.code(engine?.setVideoEncoderConfiguration(mapToVideoEncoderConfiguration(params["config"] as! Dictionary)))
612+
callback.code(engine?.setVideoEncoderConfiguration(mapToVideoEncoderConfiguration(params["config"] as! [String: Any])))
611613
}
612614

613615
@objc func startPreview(_ callback: Callback) {
@@ -639,7 +641,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
639641
}
640642

641643
@objc func setBeautyEffectOptions(_ params: NSDictionary, _ callback: Callback) {
642-
callback.code(engine?.setBeautyEffectOptions(params["enabled"] as! Bool, options: mapToBeautyOptions(params["options"] as! Dictionary)))
644+
callback.code(engine?.setBeautyEffectOptions(params["enabled"] as! Bool, options: mapToBeautyOptions(params["options"] as! [String: Any])))
643645
}
644646

645647
@objc func startAudioMixing(_ params: NSDictionary, _ callback: Callback) {
@@ -833,7 +835,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
833835
}
834836

835837
@objc func setLiveTranscoding(_ params: NSDictionary, _ callback: Callback) {
836-
callback.code(engine?.setLiveTranscoding(mapToLiveTranscoding(params["transcoding"] as! Dictionary)))
838+
callback.code(engine?.setLiveTranscoding(mapToLiveTranscoding(params["transcoding"] as! [String: Any])))
837839
}
838840

839841
@objc func addPublishStreamUrl(_ params: NSDictionary, _ callback: Callback) {
@@ -845,11 +847,11 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
845847
}
846848

847849
@objc func startChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
848-
callback.code(engine?.startChannelMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! Dictionary)))
850+
callback.code(engine?.startChannelMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! [String: Any])))
849851
}
850852

851853
@objc func updateChannelMediaRelay(_ params: NSDictionary, _ callback: Callback) {
852-
callback.code(engine?.updateChannelMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! Dictionary)))
854+
callback.code(engine?.updateChannelMediaRelay(mapToChannelMediaRelayConfiguration(params["channelMediaRelayConfiguration"] as! [String: Any])))
853855
}
854856

855857
@objc func stopChannelMediaRelay(_ callback: Callback) {
@@ -919,7 +921,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
919921
}
920922

921923
@objc func startLastmileProbeTest(_ params: NSDictionary, _ callback: Callback) {
922-
callback.code(engine?.startLastmileProbeTest(mapToLastmileProbeConfig(params["config"] as! Dictionary)))
924+
callback.code(engine?.startLastmileProbeTest(mapToLastmileProbeConfig(params["config"] as! [String: Any])))
923925
}
924926

925927
@objc func stopLastmileProbeTest(_ callback: Callback) {
@@ -960,7 +962,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
960962
}
961963

962964
@objc func addVideoWatermark(_ params: NSDictionary, _ callback: Callback) {
963-
callback.code(engine?.addVideoWatermark(URL(string: params["watermarkUrl"] as! String)!, options: mapToWatermarkOptions(params["options"] as! Dictionary)))
965+
callback.code(engine?.addVideoWatermark(URL(string: params["watermarkUrl"] as! String)!, options: mapToWatermarkOptions(params["options"] as! [String: Any])))
964966
}
965967

966968
@objc func clearVideoWatermarks(_ callback: Callback) {
@@ -986,7 +988,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
986988
}
987989

988990
@objc func enableEncryption(_ params: NSDictionary, _ callback: Callback) {
989-
callback.code(engine?.enableEncryption(params["enabled"] as! Bool, encryptionConfig: mapToEncryptionConfig(params["config"] as! Dictionary)))
991+
callback.code(engine?.enableEncryption(params["enabled"] as! Bool, encryptionConfig: mapToEncryptionConfig(params["config"] as! [String: Any])))
990992
}
991993

992994
@objc func startAudioRecording(_ params: NSDictionary, _ callback: Callback) {
@@ -1002,7 +1004,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
10021004
}
10031005

10041006
@objc func addInjectStreamUrl(_ params: NSDictionary, _ callback: Callback) {
1005-
callback.code(engine?.addInjectStreamUrl(params["url"] as! String, config: mapToLiveInjectStreamConfig(params["config"] as! Dictionary)))
1007+
callback.code(engine?.addInjectStreamUrl(params["url"] as! String, config: mapToLiveInjectStreamConfig(params["config"] as! [String: Any])))
10061008
}
10071009

10081010
@objc func removeInjectStreamUrl(_ params: NSDictionary, _ callback: Callback) {
@@ -1086,7 +1088,7 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
10861088
}
10871089

10881090
@objc func setCameraCapturerConfiguration(_ params: NSDictionary, _ callback: Callback) {
1089-
callback.code(engine?.setCameraCapturerConfiguration(mapToCameraCapturerConfiguration(params["config"] as! Dictionary)))
1091+
callback.code(engine?.setCameraCapturerConfiguration(mapToCameraCapturerConfiguration(params["config"] as! [String: Any])))
10901092
}
10911093

10921094
@objc func createDataStream(_ params: NSDictionary, _ callback: Callback) {
@@ -1148,10 +1150,16 @@ class RtcEngineManager: NSObject, RtcEngineInterface {
11481150
}
11491151

11501152
@objc func pauseAllChannelMediaRelay(_ callback: Callback) {
1151-
callback.code(engine?.pauseAllChannelMediaRelay())
1153+
callback.code(-Int32(AgoraErrorCode.notSupported.rawValue))
1154+
// callback.code(engine?.pauseAllChannelMediaRelay())
11521155
}
11531156

11541157
@objc func resumeAllChannelMediaRelay(_ callback: Callback) {
1155-
callback.code(engine?.resumeAllChannelMediaRelay())
1158+
callback.code(-Int32(AgoraErrorCode.notSupported.rawValue))
1159+
// callback.code(engine?.resumeAllChannelMediaRelay())
1160+
}
1161+
1162+
@objc func enableVirtualBackground(_ params: NSDictionary, _ callback: Callback) {
1163+
callback.code(engine?.enableVirtualBackground(params["enabled"] as! Bool, backData: mapToVirtualBackgroundSource(params["backgroundSource"] as! [String: Any])))
11561164
}
11571165
}

0 commit comments

Comments
 (0)