官方RN插件:https://github.com/jpush/jmrtc-react-native
代码为RN0.54版本,我项目里面是0.63版本,无法直接使用
解决办法:SDK采用原生集成,使用桥接文件调用
步骤1:通过文档集成原生SDK
http://docs.jiguang.cn/jmessage/client/im_jmrtc_android/
android:将demo
中libs
里面的arm64-v8a
armeabi-v7a
x86
也拷贝过去
步骤2:添加桥接文件
直接将 jmrtc-react-native 里面的桥接文件拷贝到项目中。
查看 index.js 。里面是桥接好的功能方法。改个名字直接使用或者当成api文档用都行。
3.添加jmrtcview.js。可以直接使用,也可自行修改。
步骤3:android build.gradle修改
sourceSets {
main {
...
jniLibs.srcDirs = ['libs'] // 添加这一句
}
}
android一点不会,不会写android的桥接,只能拷贝现有的
⚠️我集成android原生SDK遇到的问题:
- 在
MainApplication
中导入JMRTCReactPackage
不知道import 路径
该怎么写
官方插件的原生桥接位置src/io/jmrtc/android
办法:将io
文件夹放到src/main/java/com/
目录下面。
import com.io.jmrtc.android.JMRTCReactPackage;
⚠️⚠️io文件夹下面的文件中 package路径也要修改为com.io... - 找不到
import org.greenrobot.eventbus.EventBus;
找不到import cn.jiguang.jmrtc.api.JMRtcClient;
...
办法:android/app/build.gradle`` 中的 dependencies
中添加
implementation 'org.greenrobot:eventbus:3.1.1'
implementation fileTree(dir: "libs", include: ["*.jar"])
-
R.string
办法:注释掉它
使用
JMRTCManager.initEngine((success)=>{
JMRTCManager.setIsVideoStreamEnabled({videoStreamEnabled:true})
JMRTCManager.setVideoProfile({profile:'360p'})
console.log('initEngine success===',success);
JMRTCManager.startCallUsers({usernames:[this.username],type:this.type},(success)=>{
console.log('startCallUsers success',success);
},(fail)=>{
console.log('startCallUsers fail',fail);
switch (fail.code) {
case 7100001:
case 7100002:
// 音视频被邀请的用户已登出
break;
default:
break;
}
})
},(fail)=>{
console.log('initEngine fail',fail);
})