Мое приложение (построенное с помощью react native) использует Agora для видео / аудио звонков. Я следовал официальной документации, и все работает отлично, когда я жестко кодирую свой временный токен и идентификатор приложения в своем приложении. Однако, когда я хочу получить эти две переменные динамически через мой собственный сервер и вызвать функцию createAgora после того, как я извлек эти переменные с моего сервера, экран (и звук) останется черным. Журнал не выводит никаких ошибок. Все нормально выглядит. Не знаю, почему так происходит.
useEffect(() => {
log('agora mount', channel, role);
isHost( role === "host" ? true : false );
connect();
return destroyAgora;
}, [show]);
const connect = async () => {
API.get('/api/agora', {})
.then(function(res){
if(res.data && res.data.agora.token){
const app_id = res.data.agora.app_id;
const token = res.data.agora.token;
createAgora(app_id)
.then( () => joinAgora(token) )
.catch( (err) => log("agora (!) create error: " + err) );
} else {
log("agora token error: empty");
}
}).catch( (err) => {
log("agora token error: " + err);
});
}
const AgoraEngine = useRef<RtcEngine>();
const createAgora = async (app_id:string) => {
AgoraEngine.current = await RtcEngine.create(app_id);
AgoraEngine.current.setVideoEncoderConfiguration({ dimensions: {width: 1280, height: 720}, frameRate: 30 });
AgoraEngine.current.enableVideo();
AgoraEngine.current.setChannelProfile(ChannelProfile.LiveBroadcasting);
const Role = (role === "host" ? ClientRole.Broadcaster : ClientRole.Audience);
AgoraEngine.current.setClientRole(Role);
AgoraEngine.current.addListener("JoinChannelSuccess", (channel, uid, elapsed) => {
isWatching(true);
});
};