react-native

RN - 使用jmrtc-react-native实现音视频通话

2020-12-01  本文已影响0人  精神病患者link常

官方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:将demolibs里面的arm64-v8a armeabi-v7a x86 也拷贝过去

步骤2:添加桥接文件

  1. 直接将 jmrtc-react-native 里面的桥接文件拷贝到项目中。

  2. 查看 index.js 。里面是桥接好的功能方法。改个名字直接使用或者当成api文档用都行。

3.添加jmrtcview.js。可以直接使用,也可自行修改。

步骤3:android build.gradle修改

sourceSets {
       main {
           ...
           jniLibs.srcDirs = ['libs'] // 添加这一句
       }
   }

android一点不会,不会写android的桥接,只能拷贝现有的

⚠️我集成android原生SDK遇到的问题:

  1. MainApplication中导入JMRTCReactPackage不知道import 路径该怎么写
    官方插件的原生桥接位置src/io/jmrtc/android
    办法:将io文件夹放到src/main/java/com/目录下面。
    import com.io.jmrtc.android.JMRTCReactPackage;
    ⚠️⚠️io文件夹下面的文件中 package路径也要修改为com.io...
  2. 找不到 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"])
  3. 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);
      })
上一篇 下一篇

猜你喜欢

热点阅读