React-native-jitsi-meet按钮全部失效 点击触发playTouchSound未定义错误
根因分析
这个报错是react-native-jitsi-meet SDK的版本依赖冲突问题,核心触发逻辑是:
Jitsi Meet SDK内部所有可点击组件的触控回调默认会调用React Native原生SoundManagerModule提供的playTouchSound方法播放触控反馈音效,当出现以下任意一种情况时就会触发该异常:
- 项目当前使用的React Native版本与Jitsi Meet SDK依赖的React Native版本不匹配,
playTouchSound方法在对应使用的React Native版本中已被移除/重命名 - 安卓端打包混淆规则把
SoundManagerModule类过滤掉,导致JS侧无法拿到原生模块实例 - 项目自定义的Jitsi初始化配置错误覆盖了全局音效模块的注入对象,导致实例为undefined
排查修复方案
- 优先做版本对齐:查询项目当前使用的
react-native-jitsi-meet版本的官方依赖说明,将项目React Native版本升级到SDK要求的匹配版本,或者降级Jitsi SDK到适配当前React Native的版本 - 快速修复:不需要调整版本的场景下,可以在初始化Jitsi会议时直接关闭触控音效,避免触发异常调用,配置示例如下:
const meetConfig = { // 其他原有配置 userInfo: { disableTouchSound: true }, featureFlags: { 'play-sounds': false } };
- 安卓端混淆修复:如果仅release包出现该问题,在
android/app/proguard-rules.pro文件中添加混淆规则,避免SoundManager模块被混淆过滤:
-keep class com.facebook.react.modules.sound.** { *; }
- 自定义编译Jitsi SDK源码的场景下,检查内部
react/features/base/touch模块的逻辑,确认playTouchSound方法调用前已经做了非空判断,未做校验的场景下手动补充非空判断逻辑即可。
内容的提问来源于stack exchange,提问作者rohit garg
相关产品推荐
相关产品推荐

