matrixbirds пре 5 година
родитељ
комит
a16a1c28d4

+ 50
- 6
android/build.gradle Прегледај датотеку

@@ -1,12 +1,27 @@
1 1
 apply plugin: 'com.android.library'
2 2
 
3
+buildscript {
4
+    repositories {
5
+        google()
6
+        jcenter()
7
+    }
8
+    dependencies {
9
+        classpath 'com.android.tools.build:gradle:3.1.2'
10
+    }
11
+}
12
+
13
+def DEFAULT_COMPILE_SDK_VERSION = 27
14
+def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3"
15
+def DEFAULT_TARGET_SDK_VERSION = 27
16
+def DEFAULT_ANDROID_SUPPORT_VERSION = "27.1.0"
17
+
3 18
 android {
4
-    compileSdkVersion 23
5
-    buildToolsVersion "23.0.1"
19
+    compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
20
+    buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION
6 21
 
7 22
     defaultConfig {
8 23
         minSdkVersion 16
9
-        targetSdkVersion 22
24
+        targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION
10 25
         versionCode 1
11 26
         versionName "1.0"
12 27
 
@@ -19,13 +34,42 @@ android {
19 34
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
20 35
         }
21 36
     }
37
+
38
+    splits {
39
+        abi {
40
+            enable true
41
+
42
+            reset()
43
+
44
+            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
45
+            // Specify that we do not want an additional universal SDK
46
+            universalApk false
47
+        }
48
+    }
22 49
 }
23 50
 
24 51
 dependencies {
25
-    implementation "com.facebook.react:react-native:+"
52
+    def androidSupportVersion = rootProject.hasProperty("androidSupportVersion")  ? rootProject.androidSupportVersion : DEFAULT_ANDROID_SUPPORT_VERSION
53
+    // from internet
26 54
     implementation fileTree(dir: 'libs', include: ['*.jar'])
55
+    implementation "com.android.support:appcompat-v7:$androidSupportVersion"
56
+    implementation "io.agora.rtc:full-sdk:2.3.3"
57
+    // from node_modules
58
+    implementation "com.facebook.react:react-native:+"
59
+    implementation 'com.google.code.gson:gson:2.8.5'
27 60
 }
61
+//
62
+//configurations.all {
63
+//    exclude group: 'com.facebook.react', module: 'react-native'
64
+//}
28 65
 
29
-configurations.all {
30
-    exclude group: 'com.facebook.react', module: 'react-native'
66
+repositories {
67
+    mavenCentral()
68
+    mavenLocal()
69
+    maven {
70
+        url "file:///Users/ly/GithubPremium/react-native-agora/node_modules/react-native"
71
+    }
72
+    jcenter()
73
+    google()
31 74
 }
75
+

BIN
android/gradle/wrapper/gradle-wrapper.jar Прегледај датотеку


+ 5
- 0
android/gradle/wrapper/gradle-wrapper.properties Прегледај датотеку

@@ -0,0 +1,5 @@
1
+distributionBase=GRADLE_USER_HOME
2
+distributionPath=wrapper/dists
3
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
4
+zipStoreBase=GRADLE_USER_HOME
5
+zipStorePath=wrapper/dists

+ 172
- 0
android/gradlew Прегледај датотеку

@@ -0,0 +1,172 @@
1
+#!/usr/bin/env sh
2
+
3
+##############################################################################
4
+##
5
+##  Gradle start up script for UN*X
6
+##
7
+##############################################################################
8
+
9
+# Attempt to set APP_HOME
10
+# Resolve links: $0 may be a link
11
+PRG="$0"
12
+# Need this for relative symlinks.
13
+while [ -h "$PRG" ] ; do
14
+    ls=`ls -ld "$PRG"`
15
+    link=`expr "$ls" : '.*-> \(.*\)$'`
16
+    if expr "$link" : '/.*' > /dev/null; then
17
+        PRG="$link"
18
+    else
19
+        PRG=`dirname "$PRG"`"/$link"
20
+    fi
21
+done
22
+SAVED="`pwd`"
23
+cd "`dirname \"$PRG\"`/" >/dev/null
24
+APP_HOME="`pwd -P`"
25
+cd "$SAVED" >/dev/null
26
+
27
+APP_NAME="Gradle"
28
+APP_BASE_NAME=`basename "$0"`
29
+
30
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31
+DEFAULT_JVM_OPTS=""
32
+
33
+# Use the maximum available, or set MAX_FD != -1 to use that value.
34
+MAX_FD="maximum"
35
+
36
+warn () {
37
+    echo "$*"
38
+}
39
+
40
+die () {
41
+    echo
42
+    echo "$*"
43
+    echo
44
+    exit 1
45
+}
46
+
47
+# OS specific support (must be 'true' or 'false').
48
+cygwin=false
49
+msys=false
50
+darwin=false
51
+nonstop=false
52
+case "`uname`" in
53
+  CYGWIN* )
54
+    cygwin=true
55
+    ;;
56
+  Darwin* )
57
+    darwin=true
58
+    ;;
59
+  MINGW* )
60
+    msys=true
61
+    ;;
62
+  NONSTOP* )
63
+    nonstop=true
64
+    ;;
65
+esac
66
+
67
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68
+
69
+# Determine the Java command to use to start the JVM.
70
+if [ -n "$JAVA_HOME" ] ; then
71
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72
+        # IBM's JDK on AIX uses strange locations for the executables
73
+        JAVACMD="$JAVA_HOME/jre/sh/java"
74
+    else
75
+        JAVACMD="$JAVA_HOME/bin/java"
76
+    fi
77
+    if [ ! -x "$JAVACMD" ] ; then
78
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79
+
80
+Please set the JAVA_HOME variable in your environment to match the
81
+location of your Java installation."
82
+    fi
83
+else
84
+    JAVACMD="java"
85
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86
+
87
+Please set the JAVA_HOME variable in your environment to match the
88
+location of your Java installation."
89
+fi
90
+
91
+# Increase the maximum file descriptors if we can.
92
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93
+    MAX_FD_LIMIT=`ulimit -H -n`
94
+    if [ $? -eq 0 ] ; then
95
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96
+            MAX_FD="$MAX_FD_LIMIT"
97
+        fi
98
+        ulimit -n $MAX_FD
99
+        if [ $? -ne 0 ] ; then
100
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
101
+        fi
102
+    else
103
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104
+    fi
105
+fi
106
+
107
+# For Darwin, add options to specify how the application appears in the dock
108
+if $darwin; then
109
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110
+fi
111
+
112
+# For Cygwin, switch paths to Windows format before running java
113
+if $cygwin ; then
114
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116
+    JAVACMD=`cygpath --unix "$JAVACMD"`
117
+
118
+    # We build the pattern for arguments to be converted via cygpath
119
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120
+    SEP=""
121
+    for dir in $ROOTDIRSRAW ; do
122
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
123
+        SEP="|"
124
+    done
125
+    OURCYGPATTERN="(^($ROOTDIRS))"
126
+    # Add a user-defined pattern to the cygpath arguments
127
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129
+    fi
130
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
131
+    i=0
132
+    for arg in "$@" ; do
133
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
135
+
136
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
137
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138
+        else
139
+            eval `echo args$i`="\"$arg\""
140
+        fi
141
+        i=$((i+1))
142
+    done
143
+    case $i in
144
+        (0) set -- ;;
145
+        (1) set -- "$args0" ;;
146
+        (2) set -- "$args0" "$args1" ;;
147
+        (3) set -- "$args0" "$args1" "$args2" ;;
148
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154
+    esac
155
+fi
156
+
157
+# Escape application args
158
+save () {
159
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160
+    echo " "
161
+}
162
+APP_ARGS=$(save "$@")
163
+
164
+# Collect all arguments for the java command, following the shell quoting and substitution rules
165
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166
+
167
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169
+  cd "$(dirname "$0")"
170
+fi
171
+
172
+exec "$JAVACMD" "$@"

+ 84
- 0
android/gradlew.bat Прегледај датотеку

@@ -0,0 +1,84 @@
1
+@if "%DEBUG%" == "" @echo off
2
+@rem ##########################################################################
3
+@rem
4
+@rem  Gradle startup script for Windows
5
+@rem
6
+@rem ##########################################################################
7
+
8
+@rem Set local scope for the variables with windows NT shell
9
+if "%OS%"=="Windows_NT" setlocal
10
+
11
+set DIRNAME=%~dp0
12
+if "%DIRNAME%" == "" set DIRNAME=.
13
+set APP_BASE_NAME=%~n0
14
+set APP_HOME=%DIRNAME%
15
+
16
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17
+set DEFAULT_JVM_OPTS=
18
+
19
+@rem Find java.exe
20
+if defined JAVA_HOME goto findJavaFromJavaHome
21
+
22
+set JAVA_EXE=java.exe
23
+%JAVA_EXE% -version >NUL 2>&1
24
+if "%ERRORLEVEL%" == "0" goto init
25
+
26
+echo.
27
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28
+echo.
29
+echo Please set the JAVA_HOME variable in your environment to match the
30
+echo location of your Java installation.
31
+
32
+goto fail
33
+
34
+:findJavaFromJavaHome
35
+set JAVA_HOME=%JAVA_HOME:"=%
36
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37
+
38
+if exist "%JAVA_EXE%" goto init
39
+
40
+echo.
41
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42
+echo.
43
+echo Please set the JAVA_HOME variable in your environment to match the
44
+echo location of your Java installation.
45
+
46
+goto fail
47
+
48
+:init
49
+@rem Get command-line arguments, handling Windows variants
50
+
51
+if not "%OS%" == "Windows_NT" goto win9xME_args
52
+
53
+:win9xME_args
54
+@rem Slurp the command line arguments.
55
+set CMD_LINE_ARGS=
56
+set _SKIP=2
57
+
58
+:win9xME_args_slurp
59
+if "x%~1" == "x" goto execute
60
+
61
+set CMD_LINE_ARGS=%*
62
+
63
+:execute
64
+@rem Setup the command line
65
+
66
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67
+
68
+@rem Execute Gradle
69
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70
+
71
+:end
72
+@rem End local scope for the variables with windows NT shell
73
+if "%ERRORLEVEL%"=="0" goto mainEnd
74
+
75
+:fail
76
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77
+rem the _cmd.exe /c_ return code!
78
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79
+exit /b 1
80
+
81
+:mainEnd
82
+if "%OS%"=="Windows_NT" endlocal
83
+
84
+:omega

BIN
android/libs/agora-rtc-sdk.jar Прегледај датотеку


BIN
ios/RCTAgora.xcodeproj/project.xcworkspace/xcuserdata/ly.xcuserdatad/UserInterfaceState.xcuserstate Прегледај датотеку


+ 81
- 24
ios/RCTAgora/RCTAgora.m Прегледај датотеку

@@ -316,6 +316,10 @@ RCT_EXPORT_METHOD(setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeaker){
316 316
   [self.rtcEngine setDefaultAudioRouteToSpeakerphone:defaultToSpeaker];
317 317
 }
318 318
 
319
+RCT_EXPORT_METHOD(setDefaultMuteAllRemoteAudioStreams:(BOOL)defaultToSpeaker){
320
+  [self.rtcEngine setDefaultMuteAllRemoteAudioStreams:defaultToSpeaker];
321
+}
322
+
319 323
 // enable video
320 324
 RCT_EXPORT_METHOD(enableVideo) {
321 325
   [self.rtcEngine enableVideo];
@@ -346,6 +350,10 @@ RCT_EXPORT_METHOD(muteRemoteVideoStream:(NSUInteger)uid mute:(BOOL)mute){
346 350
   [self.rtcEngine muteRemoteVideoStream:uid mute:mute];
347 351
 }
348 352
 
353
+RCT_EXPORT_METHOD(setDefaultMuteAllRemoteVideoStreams:(BOOL)mute) {
354
+  [self.rtcEngine setDefaultMuteAllRemoteVideoStreams:mute];
355
+}
356
+
349 357
 // enable audio
350 358
 RCT_EXPORT_METHOD(enableAudio) {
351 359
   [self.rtcEngine enableAudio];
@@ -376,15 +384,15 @@ RCT_EXPORT_METHOD(muteRemoteAudioStream:(NSUInteger)uid muted:(BOOL)mute){
376 384
   [self.rtcEngine muteRemoteAudioStream:uid mute:mute];
377 385
 }
378 386
 
379
-// start recoding service
380
-RCT_EXPORT_METHOD(startAudioRecording:(NSDictionary*)options){
381
-  [self.rtcEngine startAudioRecording:options[@"path"] quality:(AgoraAudioRecordingQuality)[options[@"quality"] integerValue]];
382
-}
383
-
384
-// stop recoding service
385
-RCT_EXPORT_METHOD(stopAudioRecording:(NSString*)recordingKey){
386
-  [self.rtcEngine stopAudioRecording];
387
-}
387
+//// start recoding service
388
+//RCT_EXPORT_METHOD(startAudioRecording:(NSDictionary*)options){
389
+//  [self.rtcEngine startAudioRecording:options[@"path"] quality:(AgoraAudioRecordingQuality)[options[@"quality"] integerValue]];
390
+//}
391
+//
392
+//// stop recoding service
393
+//RCT_EXPORT_METHOD(stopAudioRecording:(NSString*)recordingKey){
394
+//  [self.rtcEngine stopAudioRecording];
395
+//}
388 396
 
389 397
 // adjust recorcding signal volume
390 398
 RCT_EXPORT_METHOD(adjustRecordingSignalVolume: (NSInteger) volume){
@@ -435,7 +443,7 @@ RCT_EXPORT_METHOD(setLocalVoicePitch:(double) pitch) {
435 443
 }
436 444
 
437 445
 // set local video equalization of band frequency
438
-RCT_EXPORT_METHOD(setLocalVoiceEqualizationOfBandFrequency:(NSInteger)band gain:(NSInteger)gain) {
446
+RCT_EXPORT_METHOD(setLocalVoiceEqualization:(NSInteger)band gain:(NSInteger)gain) {
439 447
   AgoraAudioEqualizationBandFrequency bandType = AgoraAudioEqualizationBand31;
440 448
   switch (band) {
441 449
     case AgoraAudioEqualizationBand31:
@@ -473,7 +481,7 @@ RCT_EXPORT_METHOD(setLocalVoiceEqualizationOfBandFrequency:(NSInteger)band gain:
473 481
 }
474 482
 
475 483
 // set local voice reverb of type
476
-RCT_EXPORT_METHOD(setLocalVoiceReverbOfType:(NSInteger)reverb value:(NSInteger)value) {
484
+RCT_EXPORT_METHOD(setLocalVoiceReverb:(NSInteger)reverb value:(NSInteger)value) {
477 485
   AgoraAudioReverbType reverbType = AgoraAudioReverbDryLevel;
478 486
   switch (reverb) {
479 487
     case AgoraAudioReverbDryLevel:
@@ -525,7 +533,7 @@ RCT_EXPORT_METHOD(adjustAudioMixingVolume:(NSInteger) volume) {
525 533
 
526 534
 // adjust audio mixing playout volume
527 535
 RCT_EXPORT_METHOD(adjustAudioMixingPlayoutVolume:(NSInteger) volume) {
528
-  [self.rtcEngine adjustAudioMixingVolume:volume];
536
+  [self.rtcEngine adjustAudioMixingPlayoutVolume:volume];
529 537
 }
530 538
 
531 539
 // adjust audio mixing publish volume
@@ -783,7 +791,7 @@ RCT_EXPORT_METHOD(pauseEffect
783 791
                   :(NSInteger) soundId
784 792
                   resolve:(RCTPromiseResolveBlock)resolve
785 793
                   reject:(RCTPromiseRejectBlock)reject) {
786
-  NSInteger res = [self.rtcEngine unloadEffect:(int)soundId];
794
+  NSInteger res = [self.rtcEngine pauseEffect:(int)soundId];
787 795
   if (res != 0) {
788 796
     reject(@"131014", @"pauseEffect failed", [self makeNSError:@{
789 797
                                                                  @"code": @(131014),
@@ -801,10 +809,10 @@ RCT_EXPORT_METHOD(pauseEffect
801 809
 }
802 810
 
803 811
 // pause all effects
804
-RCT_EXPORT_METHOD(pauseAllEffects:(NSInteger) soundId
805
-                  resolve:(RCTPromiseResolveBlock)resolve
812
+RCT_EXPORT_METHOD(pauseAllEffects
813
+                  :(RCTPromiseResolveBlock)resolve
806 814
                   reject:(RCTPromiseRejectBlock)reject) {
807
-  NSInteger res = [self.rtcEngine unloadEffect:(int)soundId];
815
+  NSInteger res = [self.rtcEngine pauseAllEffects];
808 816
   if (res != 0) {
809 817
     reject(@"131014", @"pauseAllEffects failed", [self makeNSError:@{
810 818
                                                                      @"code": @(131014),
@@ -943,8 +951,7 @@ RCT_EXPORT_METHOD(setAudioSessionOperationRestriction
943 951
 
944 952
 // gateway test start echo
945 953
 RCT_EXPORT_METHOD(startEchoTest
946
-                  :(RCTResponseSenderBlock)sender
947
-                  resolve:(RCTPromiseResolveBlock)resolve
954
+                  :(RCTPromiseResolveBlock)resolve
948 955
                   reject:(RCTPromiseRejectBlock)reject) {
949 956
   NSInteger res = [self.rtcEngine startEchoTest:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) {
950 957
     sender(@{
@@ -1152,6 +1159,49 @@ RCT_EXPORT_METHOD(clearVideoWatermarks
1152 1159
   }
1153 1160
 }
1154 1161
 
1162
+// set local publish fallback option
1163
+RCT_EXPORT_METHOD(setLocalPublishFallbackOption:(NSInteger)option
1164
+                  resolve:(RCTPromiseResolveBlock)resolve
1165
+                  reject:(RCTPromiseRejectBlock)reject) {
1166
+  NSInteger res = [self.rtcEngine setLocalPublishFallbackOption:option];
1167
+  if (res != 0) {
1168
+    reject(@"131039", @"setLocalPublishFallbackOption failed", [self makeNSError:@{
1169
+                                                                          @"code": @(131039),
1170
+                                                                          @"message":@{
1171
+                                                                              @"success":@(NO),
1172
+                                                                              @"value":@(res)
1173
+                                                                              }
1174
+                                                                          }]);
1175
+  } else {
1176
+    resolve(@{
1177
+              @"success": @(YES),
1178
+              @"value": @(res)
1179
+              });
1180
+  }
1181
+}
1182
+
1183
+// set remote subscribe fallback option
1184
+RCT_EXPORT_METHOD(setRemoteSubscribeFallbackOption:(NSInteger)option
1185
+                  resolve:(RCTPromiseResolveBlock)resolve
1186
+                  reject:(RCTPromiseRejectBlock)reject) {
1187
+  NSInteger res = [self.rtcEngine setRemoteSubscribeFallbackOption:option];
1188
+  if (res != 0) {
1189
+    reject(@"131040", @"setRemoteSubscribeFallbackOption failed", [self makeNSError:@{
1190
+                                                                                   @"code": @(131040),
1191
+                                                                                   @"message":@{
1192
+                                                                                       @"success":@(NO),
1193
+                                                                                       @"value":@(res)
1194
+                                                                                       }
1195
+                                                                                   }]);
1196
+  } else {
1197
+    resolve(@{
1198
+              @"success": @(YES),
1199
+              @"value": @(res)
1200
+              });
1201
+  }
1202
+}
1203
+
1204
+
1155 1205
 // enable dual stream mode
1156 1206
 RCT_EXPORT_METHOD(enableDualStreamMode
1157 1207
                   :(BOOL) enabled
@@ -1175,14 +1225,14 @@ RCT_EXPORT_METHOD(enableDualStreamMode
1175 1225
 }
1176 1226
 
1177 1227
 // set remote video stream
1178
-RCT_EXPORT_METHOD(setRemoteVideoStream
1228
+RCT_EXPORT_METHOD(setRemoteVideoStreamType
1179 1229
                   :(NSDictionary *) options
1180 1230
                   resolve:(RCTPromiseResolveBlock)resolve
1181 1231
                   reject:(RCTPromiseRejectBlock)reject) {
1182 1232
   NSInteger res = [self.rtcEngine setRemoteVideoStream:[options[@"uid"] integerValue]
1183 1233
                                                   type:(AgoraVideoStreamType)[options[@"streamType"] integerValue]];
1184 1234
   if (res != 0) {
1185
-    reject(@"131029", @"setRemoteVideoStream failed", [self makeNSError:@{
1235
+    reject(@"131029", @"setRemoteVideoStreamType failed", [self makeNSError:@{
1186 1236
                                                                           @"code": @(131029),
1187 1237
                                                                           @"message":@{
1188 1238
                                                                               @"success":@(NO),
@@ -1294,7 +1344,7 @@ RCT_EXPORT_METHOD(setVideoQualityParameters
1294 1344
 }
1295 1345
 
1296 1346
 // set local video mirror mode
1297
-RCT_EXPORT_METHOD(setLocalVideoMirroMode
1347
+RCT_EXPORT_METHOD(setLocalVideoMirrorMode
1298 1348
                   :(NSInteger) mode
1299 1349
                   resolve:(RCTPromiseResolveBlock)resolve
1300 1350
                   reject:(RCTPromiseRejectBlock)reject) {
@@ -1354,8 +1404,8 @@ RCT_EXPORT_METHOD(isCameraTorchSupported
1354 1404
             });
1355 1405
 }
1356 1406
 
1357
-// isCameraFocusPositionInPreviewSupported
1358
-RCT_EXPORT_METHOD(isCameraFocusPositionInPreviewSupported
1407
+// isCameraFocusSupported
1408
+RCT_EXPORT_METHOD(isCameraFocusSupported
1359 1409
                   :(RCTPromiseResolveBlock)resolve) {
1360 1410
   BOOL res = [self.rtcEngine isCameraFocusPositionInPreviewSupported];
1361 1411
   resolve(@{
@@ -1440,7 +1490,9 @@ RCT_EXPORT_METHOD(setCameraAutoFocusFaceModeEnabled:(BOOL)enable
1440 1490
 }
1441 1491
 
1442 1492
 // getCallId
1443
-RCT_EXPORT_METHOD(getCallId:(RCTPromiseResolveBlock)resolve) {
1493
+RCT_EXPORT_METHOD(getCallId
1494
+                  :(RCTPromiseResolveBlock)resolve)
1495
+                  reject:(RCTPromiseRejectBlock)reject) {
1444 1496
   resolve(@{
1445 1497
             @"success": @(YES),
1446 1498
             @"value": [self.rtcEngine getCallId]
@@ -1540,6 +1592,11 @@ RCT_EXPORT_METHOD(addPublishStreamUrl:(NSDictionary *)options) {
1540 1592
   [self.rtcEngine setLiveTranscoding:AgoraLiveTranscoding.defaultTranscoding];
1541 1593
 }
1542 1594
 
1595
+// remove publish stream url
1596
+RCT_EXPORT_METHOD(removePublishStreamUrl:(NSDictionary *)options) {
1597
+  [self.rtcEngine removePublishStreamUrl:options[@"url"]];
1598
+}
1599
+
1543 1600
 // set living transcoding
1544 1601
 RCT_EXPORT_METHOD(setLiveTranscoding:(NSDictionary *)options) {
1545 1602
   AgoraLiveTranscoding *transcoding = AgoraLiveTranscoding.defaultTranscoding;