@jitsi/react-native-sdk是否支持Expo?集成问题与功能咨询
Expo集成@jitsi/react-native-sdk问题解答
报错原因与解决办法
你遇到的Invariant Violation和Cannot read property 'JitsiMeeting' of undefined错误,本质是@jitsi/react-native-sdk依赖原生平台代码,而Expo Go无法加载这类第三方原生模块。必须放弃Expo Go,改用**Expo开发构建(Development Build)**来运行项目,这样才能编译并加载SDK所需的原生组件。
是否支持Expo项目
@jitsi/react-native-sdk支持Expo项目,但有前提:不能用Expo Go直接运行,必须通过EAS构建创建自定义的开发构建包,或者直接构建生产包——因为SDK包含原生代码依赖,需要编译原生部分才能正常工作。
功能实现情况
- 视频通话:完全支持,这是Jitsi的核心功能,通过你使用的
JitsiMeeting组件就能直接实现,配置房间名和服务器地址即可。 - 屏幕共享:支持,但需要在开发构建中配置对应原生权限:iOS需开启屏幕录制权限,Android需配置媒体投影权限,SDK本身提供该功能的接口。
- 白板:@jitsi/react-native-sdk本身不自带白板功能,需要通过Jitsi Meet的第三方插件扩展,或者集成外部白板服务并通过Jitsi的API联动实现。
代码调整建议
首先创建Expo开发构建,然后可以简化代码导入路径,同时注意token的有效性(公开房间无需token):
import { JitsiMeeting } from '@jitsi/react-native-sdk'; export default function VideoCallScreen() { return ( <JitsiMeeting room={'YourTestRoomName'} serverURL={'https://meet.jit.si/'} token={''} // 私有房间需传入有效令牌,公开房间留空即可 onConferenceJoined={() => console.log('加入会议')} onConferenceTerminated={() => console.log('会议结束')} /> ); }
内容的提问来源于stack exchange,提问作者Pradeep Charan
相关产品推荐
相关产品推荐

