import React, { useEffect, useState } from 'react';
import { Platform, KeyboardAvoidingView } from 'react-native';
import { ChannelProfile, NativeViewComponent, StreamIndex, RenderMode } from '@volcengine/react-native-rtc';
import { request, PERMISSIONS } from 'react-native-permissions';
import RTCClient from '../core';
import { useRTCRoomListeners, useRTCVideoListeners } from '../core/handlers';
const viewId = 'my-view';
const ExamplePage = () => {
const [ isViewLoaded, setViewLoaded ] = useState<boolean>(false);
const engineEventListeners = useRTCVideoListeners();
const roomEventListeners = useRTCRoomListeners();
const requestDevicePermission = async () => {
if (Platform.OS === 'ios') {
await request(PERMISSIONS.IOS.CAMERA);
await request(PERMISSIONS.IOS.MICROPHONE);
await request(PERMISSIONS.ANDROID.CAMERA);
await request(PERMISSIONS.ANDROID.RECORD_AUDIO);
const handleViewLoad = () => {
const initialize = async () => {
await requestDevicePermission();
await RTCClient.createEngine({
RTCClient.setRTCVideoEventHandler(engineEventListeners);
RTCClient.setLocalVideoCanvas(
StreamIndex.STREAM_INDEX_MAIN,
renderMode: RenderMode.ByteRTCRenderModeFill,
RTCClient.createRoom('Your roomId, for example, 123456');
RTCClient.setRTCRoomEventHandler(roomEventListeners);
userId: 'Your userId, for example, 123456',
profile: ChannelProfile.CHANNEL_PROFILE_COMMUNICATION,
isAutoSubscribeAudio: true,
isAutoSubscribeVideo: true,
RTCClient.startVideoCapture();
RTCClient.startAudioCapture();
behavior={Platform.OS === "ios" ? "padding" : "height"}
export default ExamplePage;