Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions RtcEngine.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ export default {
Agora.init(options);
},
joinChannel(channelName = '00001', uid = 0){
Agora.joinChannel(channelName, uid)
Agora.joinChannel(channelName, uid);
},
joinChannelWithToken(token, channelName = '00001', uid = 0){
Agora.joinChannelWithToken(token, channelName, uid);
},
eventEmitter(fnConf) {
//there are no `removeListener` for NativeAppEventEmitter & DeviceEventEmitter
Expand All @@ -24,5 +27,11 @@ export default {
},
removeEmitter() {
this.listener && this.listener.remove();
}
},
enableLastmileTest() {
Agora.enableLastmileTest();
},
disableLastmileTest() {
Agora.disableLastmileTest();
},
};
4 changes: 2 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ android {
}

dependencies {
compile "com.facebook.react:react-native:+"
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation "com.facebook.react:react-native:+"
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
17 changes: 16 additions & 1 deletion android/src/main/java/com/syan/agora/AgoraManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,21 @@ public AgoraManager joinChannel(String channel, int uid) {
return this;
}

public AgoraManager joinChannelWithToken(String token, String channel, int uid) {
mRtcEngine.joinChannel(token, channel, null, uid);
return this;
}

public AgoraManager enableLastmileTest() {
mRtcEngine.enableLastmileTest();
return this;
}

public AgoraManager disableLastmileTest() {
mRtcEngine.disableLastmileTest();
return this;
}

public void startPreview() {
mRtcEngine.startPreview();
}
Expand Down Expand Up @@ -129,4 +144,4 @@ public SurfaceView getSurfaceView(int uid) {
}


}
}
85 changes: 85 additions & 0 deletions android/src/main/java/com/syan/agora/AgoraModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -253,19 +253,104 @@ public void run() {
}
});
}

@Override
public void onLocalVideoStats(final LocalVideoStats stats) {
runOnUiThread(new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
map.putString("type", "onLocalVideoStats");
map.putInt("sentBitrate", stats.sentBitrate);
map.putInt("sentFrameRate", stats.sentFrameRate);
commonEvent(map);
}
});
}

@Override
public void onRemoteVideoStats(final RemoteVideoStats stats) {
runOnUiThread(new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
map.putString("type", "onRemoteVideoStats");
map.putInt("delay", stats.delay);
map.putInt("receivedBitrate", stats.receivedBitrate);
map.putInt("receivedFrameRate", stats.receivedFrameRate);
map.putInt("rxStreamType", stats.rxStreamType);
commonEvent(map);
}
});
}

@Override
public void onConnectionLost() {
runOnUiThread(new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
map.putString("type", "onConnectionLost");
commonEvent(map);
}
});
}

@Override
public void onNetworkQuality(final int uid, final int txQuality, final int rxQuality) {
runOnUiThread(new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
map.putString("type", "onNetworkQuality");
map.putInt("uid", uid);
map.putInt("txQuality", txQuality);
map.putInt("rxQuality", rxQuality);
commonEvent(map);
}
});
}

@Override
public void onLastmileQuality(final int quality) {
runOnUiThread(new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
map.putString("type", "onLastmileQuality");
map.putInt("quality", quality);
commonEvent(map);
}
});
}
};

@ReactMethod
public void init(ReadableMap options) {
AgoraManager.getInstance().init(getReactApplicationContext(), mRtcEventHandler, options);
}

@ReactMethod
public void enableLastmileTest() {
AgoraManager.getInstance().enableLastmileTest();
}

@ReactMethod
public void disableLastmileTest() {
AgoraManager.getInstance().disableLastmileTest();
}

//进入房间
@ReactMethod
public void joinChannel(String channelName, int uid) {
AgoraManager.getInstance().joinChannel(channelName, uid);
}

@ReactMethod
public void joinChannelWithToken(String token, String channelName, int uid) {
AgoraManager.getInstance().joinChannelWithToken(token, channelName, uid);
}

//退出
@ReactMethod
public void leaveChannel() {
Expand Down
62 changes: 60 additions & 2 deletions ios/RCTAgora/RCTAgora.m
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,27 @@ - (NSDictionary *)constantsToExport {

}

RCT_EXPORT_METHOD(enableLastmileTest) {
[self.rtcEngine enableLastmileTest];
}

RCT_EXPORT_METHOD(disableLastmileTest) {
[self.rtcEngine disableLastmileTest];
}

//加入房间
RCT_EXPORT_METHOD(joinChannel:(NSString *)channelName uid:(NSInteger)uid) {
//保存一下uid 在自定义视图使用
[AgoraConst share].localUid = uid;
[self.rtcEngine joinChannelByKey:nil channelName:channelName info:nil uid:uid joinSuccess:NULL];
}

RCT_EXPORT_METHOD(joinChannelWithToken:(NSString *)token channelName:(NSString *)channelName uid:(NSInteger)uid) {
//保存一下uid 在自定义视图使用
[AgoraConst share].localUid = uid;
[self.rtcEngine joinChannelByKey:token channelName:channelName info:nil uid:uid joinSuccess:NULL];
}

//离开频道
RCT_EXPORT_METHOD(leaveChannel){
[self.rtcEngine leaveChannel:^(AgoraRtcStats *stat) {
Expand Down Expand Up @@ -352,12 +366,57 @@ - (void)rtcEngine:(AgoraRtcEngineKit *)engine didAudioMuted:(BOOL)muted byUid:(N
- (void)rtcEngine:(AgoraRtcEngineKit *)engine didVideoMuted:(BOOL)muted byUid:(NSUInteger)uid {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onUserMuteVideo";
params[@"uid"] = [NSNumber numberWithInteger:uid];;
params[@"uid"] = [NSNumber numberWithInteger:uid];
params[@"muted"] = @(muted);

[self sendEvent:params];
}

- (void)rtcEngine:(AgoraRtcEngineKit *)engine localVideoStats:(AgoraRtcLocalVideoStats *)stats {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onLocalVideoStats";
params[@"sentBitrate"] = @(stats.sentBitrate);
params[@"sentFrameRate"] = @(stats.sentFrameRate);

[self sendEvent:params];
}

- (void)rtcEngine:(AgoraRtcEngineKit *)engine remoteVideoStats:(AgoraRtcRemoteVideoStats *)stats {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onRemoteVideoStats";
params[@"delay"] = @(stats.delay);
params[@"reivedBitrate"] = @(stats.receivedBitrate);
params[@"receivedFrameRate"] = @(stats.receivedFrameRate);
params[@"rxStreamType"] = @(stats.rxStreamType);

[self sendEvent:params];
}

- (void)rtcEngineConnectionDidLost:(AgoraRtcEngineKit *)engine {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onConnectionLost";

[self sendEvent:params];
}

- (void)rtcEngine:(AgoraRtcEngineKit *)engine networkQuality:(NSUInteger)uid txQuality:(AgoraRtcQuality)txQuality rxQuality:(AgoraRtcQuality)rxQuality {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onNetworkQuality";
params[@"uid"] = @(uid);
params[@"txQuality"] = @(txQuality);
params[@"rxQuality"] = @(rxQuality);

[self sendEvent:params];
}

- (void)rtcEngine:(AgoraRtcEngineKit *)engine lastmileQuality:(AgoraRtcQuality)quality {
NSMutableDictionary *params = @{}.mutableCopy;
params[@"type"] = @"onLastmileQuality";
params[@"quality"] = @(quality);

[self sendEvent:params];
}

/*
音量提示回调
需要开启enableAudioVolumeIndication
Expand Down Expand Up @@ -419,4 +478,3 @@ - (dispatch_queue_t)methodQueue {
//}

@end

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-agora",
"version": "1.1.5",
"version": "1.2.5",
"description": "声网Agora",
"main": "index.js",
"scripts": {
Expand Down