@@ -48,7 +48,7 @@ - (NSData *_Nullable)readyToSendMetadataAtTimestamp:(NSTimeInterval)timestamp
4848 return toSend;
4949}
5050
51- - (void )receiveMetadata : (NSData *_Nonnull)data fromUser : (NSUInteger )uid atTimestamp : (NSTimeInterval )timestamp {
51+ - (void )receiveMetadata : (NSData *_Nonnull)data fromUser : (NSInteger )uid atTimestamp : (NSTimeInterval )timestamp {
5252 NSString *dataStr = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
5353 [self sendEvent: AGMediaMetaDataReceived params: @{
5454 @" uid" : @(uid),
@@ -313,6 +313,67 @@ - (NSDictionary *)constantsToExport {
313313 }
314314}
315315
316+ // startChannelMediaRelay
317+ RCT_EXPORT_METHOD (startChannelMediaRelay:(NSDictionary *)options
318+ resolve:(RCTPromiseResolveBlock)resolve
319+ reject:(RCTPromiseRejectBlock)reject) {
320+ AgoraChannelMediaRelayConfiguration *config = [[AgoraChannelMediaRelayConfiguration alloc ] init ];
321+
322+ AgoraChannelMediaRelayInfo *src = [config sourceInfo ];
323+ NSDictionary *srcOption = options[@" src" ];
324+ src.channelName = srcOption[@" channelName" ];
325+ src.uid = [srcOption[@" uid" ] integerValue ];
326+ src.token = srcOption[@" token" ];
327+ AgoraChannelMediaRelayInfo *dst = [[AgoraChannelMediaRelayInfo alloc ] init ];
328+ NSDictionary *dstOption = options[@" dst" ];
329+ dst.channelName = dstOption[@" channelName" ];
330+ dst.uid = [dstOption[@" uid" ] integerValue ];
331+ dst.token = dstOption[@" token" ];
332+ [config setDestinationInfo: dst forChannelName: dstOption[@" channelName" ]];
333+ NSInteger res = [self .rtcEngine startChannelMediaRelay: config];
334+ if (res == 0 ) {
335+ resolve (nil );
336+ } else {
337+ reject (@(-1 ).stringValue , @(res).stringValue , nil );
338+ }
339+ }
340+
341+ // updateChannelMediaRelay
342+ RCT_EXPORT_METHOD (updateChannelMediaRelay:(NSDictionary *)options
343+ resolve:(RCTPromiseResolveBlock)resolve
344+ reject:(RCTPromiseRejectBlock)reject) {
345+ AgoraChannelMediaRelayConfiguration *config = [[AgoraChannelMediaRelayConfiguration alloc ] init ];
346+
347+ AgoraChannelMediaRelayInfo *src = [config sourceInfo ];
348+ NSDictionary *srcOption = options[@" src" ];
349+ src.channelName = srcOption[@" channelName" ];
350+ src.uid = [srcOption[@" uid" ] integerValue ];
351+ src.token = srcOption[@" token" ];
352+ AgoraChannelMediaRelayInfo *dst = [[AgoraChannelMediaRelayInfo alloc ] init ];
353+ NSDictionary *dstOption = options[@" dst" ];
354+ dst.channelName = dstOption[@" channelName" ];
355+ dst.uid = [dstOption[@" uid" ] integerValue ];
356+ dst.token = dstOption[@" token" ];
357+ [config setDestinationInfo: dst forChannelName: dstOption[@" channelName" ]];
358+ NSInteger res = [self .rtcEngine updateChannelMediaRelay: config];
359+ if (res == 0 ) {
360+ resolve (nil );
361+ } else {
362+ reject (@(-1 ).stringValue , @(res).stringValue , nil );
363+ }
364+ }
365+
366+ // stopChannelMediaRelay
367+ RCT_EXPORT_METHOD (stopChannelMediaRelay:(RCTPromiseResolveBlock)resolve
368+ reject:(RCTPromiseRejectBlock)reject) {
369+ NSInteger res = [self .rtcEngine stopChannelMediaRelay ];
370+ if (res == 0 ) {
371+ resolve (nil );
372+ } else {
373+ reject (@(-1 ).stringValue , @(res).stringValue , nil );
374+ }
375+ }
376+
316377// register user account
317378RCT_EXPORT_METHOD (registerLocalUserAccount:(NSDictionary *)options
318379 resolve:(RCTPromiseResolveBlock)resolve
@@ -927,7 +988,7 @@ - (NSDictionary *)constantsToExport {
927988
928989// set volume of effect
929990RCT_EXPORT_METHOD (setVolumeOfEffect
930- :(NSInteger ) soundId
991+ :(int ) soundId
931992 volume:(double )volume
932993 resolve:(RCTPromiseResolveBlock)resolve
933994 reject:(RCTPromiseRejectBlock)reject) {
@@ -1717,25 +1778,25 @@ - (void) stopObserving {
17171778#pragma mark - <AgoraRtcEngineDelegate>
17181779// EVENT CALLBACKS
17191780- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine didOccurWarning : (AgoraWarningCode)warningCode {
1720- [self sendEvent: AGWarning params: @{@" message" : @" AgoraWarning" , @" code " : @(warningCode)}];
1781+ [self sendEvent: AGWarning params: @{@" message" : @" AgoraWarning" , @" errorCode " : @(warningCode)}];
17211782}
17221783
17231784- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine didOccurError : (AgoraErrorCode)errorCode {
1724- [self sendEvent: AGError params: @{@" message" : @" AgoraError" , @" code " : @(errorCode)}];
1785+ [self sendEvent: AGError params: @{@" message" : @" AgoraError" , @" errorCode " : @(errorCode)}];
17251786}
17261787
17271788- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine didApiCallExecute : (NSInteger )error api : (NSString *_Nonnull)api result : (NSString *_Nonnull)result {
17281789 if (error != 0 ) {
17291790 [self sendEvent: AGError params: @{
17301791 @" api" : api,
17311792 @" result" : result,
1732- @" error " : @(error)
1793+ @" errorCode " : @(error)
17331794 }];
17341795 } else {
17351796 [self sendEvent: AGApiCallExecute params: @{
17361797 @" api" : api,
17371798 @" result" : result,
1738- @" error " : @(error)
1799+ @" errorCode " : @(error)
17391800 }];
17401801 }
17411802}
@@ -1852,7 +1913,7 @@ - (void)rtcEngineRequestToken:(AgoraRtcEngineKit *_Nonnull)engine {
18521913- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine localAudioStateChange : (AgoraAudioLocalState)state error : (AgoraAudioLocalError)error {
18531914 [self sendEvent: AGLocalAudioStateChanged params: @{
18541915 @" state" : @(state),
1855- @" error " : @(error)
1916+ @" errorCode " : @(error)
18561917 }];
18571918}
18581919
@@ -1945,10 +2006,12 @@ - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine videoSizeChangedOfUid:(NSU
19452006 }];
19462007}
19472008
1948- - (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine remoteVideoStateChangedOfUid : (NSUInteger )uid state : (AgoraVideoRemoteState)state {
2009+ - (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine remoteVideoStateChangedOfUid : (NSUInteger )uid state : (AgoraVideoRemoteState)state reason : (AgoraVideoRemoteStateReason) reason elapsed : ( NSInteger ) elapsed {
19492010 [self sendEvent: AGRemoteVideoStateChanged params: @{
19502011 @" uid" : @(uid),
1951- @" state" : @(state)
2012+ @" state" : @(state),
2013+ @" reason" : @(reason),
2014+ @" elapsed" : @(elapsed)
19522015 }];
19532016}
19542017
@@ -2087,7 +2150,7 @@ - (void)rtcEngineDidAudioEffectFinish:(AgoraRtcEngineKit *_Nonnull)engine soundI
20872150- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine streamPublishedWithUrl : (NSString *_Nonnull)url errorCode : (AgoraErrorCode)errorCode {
20882151 [self sendEvent: AGStreamPublished params: @{
20892152 @" url" : url,
2090- @" code " : @(errorCode)
2153+ @" errorCode " : @(errorCode)
20912154 }];
20922155}
20932156
@@ -2126,6 +2189,19 @@ - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine streamInjectedStatusOfUrl:
21262189 }];
21272190}
21282191
2192+ - (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine channelMediaRelayStateDidChange : (AgoraChannelMediaRelayState)state error : (AgoraChannelMediaRelayError)error {
2193+ [self sendEvent: AGMediaRelayStateChanged params: @{
2194+ @" state" : @(state),
2195+ @" errorCode" : @(error),
2196+ }];
2197+ }
2198+
2199+ - (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine didReceiveChannelMediaRelayEvent : (AgoraChannelMediaRelayEvent)event {
2200+ [self sendEvent: AGReceivedChannelMediaRelay params: @{
2201+ @" event" : @(event),
2202+ }];
2203+ }
2204+
21292205- (void )rtcEngine : (AgoraRtcEngineKit *_Nonnull)engine receiveStreamMessageFromUid : (NSUInteger )uid streamId : (NSInteger )streamId data : (NSData *_Nonnull)data {
21302206 NSString *_data = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
21312207 [self sendEvent: AGReceiveStreamMessage params: @{
@@ -2138,7 +2214,7 @@ - (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didOccurStreamMessageError
21382214 [self sendEvent: AGOccurStreamMessageError params: @{
21392215 @" uid" : @(uid),
21402216 @" streamId" : @(streamId),
2141- @" error " : @(error),
2217+ @" errorCode " : @(error),
21422218 @" missed" : @(missed),
21432219 @" cached" : @(cached)
21442220 }];
0 commit comments