跳转至

SDK 集成

SDK 配置

下载融云 React Native IMLib 开源项目。

yarn add rongcloud-react-native-imlib

Android

运行 react-native link rongcloud-react-native-imlib 进行自动配置(推荐),或按以下步骤进行手动配置:

  1. 编辑 android/settings.gradle 新增:
include ':rongcloud-react-native-imlib'
project(':rongcloud-react-native-imlib').projectDir = new File(rootProject.projectDir, '../node_modules/rongcloud-react-native-imlib/lib/android')
  1. 编辑 android/app/build.gradle,新增依赖:
dependencies {
 ...
 compile project(':rongcloud-react-native-imlib')
}
  1. 编辑 MainApplication.java

导入 RCIMLibPackage

import cn.rongcloud.imlib.react.RCIMLibPackage;

添加 RCIMLibPackage

@Override
protected List<ReactPackage> getPackages() {
   return Arrays.asList(
           new MainReactPackage(),
           new RCIMLibPackage()
   );
}

iOS

运行 react-native link rongcloud-react-native-imlib 进行自动配置(推荐),或按以下步骤在 Xcode 进行手动配置:

  1. Project navigator ➜ 右击 Libraries ➜ 选择 Add Files to "XXXX"...

image

  1. 找到并选择添加 node_modules/rongcloud-react-native-imlib/lib/ios/RCIMLib.xcodeproj

image

  1. Build PhasesLink Binary With Libraries 中选择并添加 libRNIMLib.a

image

接下来,将 IMLib SDK 引入项目:

  1. 从官网下载 IMLib SDK

  2. 解压并把 IMLib 文件夹放到 ios 目录

  3. IMLib 里的 libopencore-amrnb.alibopencore-amrwb.alibvo-amrwbenc.aRongIMLib.framework 拖入 Project navigator Frameworks

  4. Build PhasesLink Binary With Libraries 里搜索并添加 libsqlite3.tbd

image

SDK 集成

// 按需导入方法
import { init, connect } from "rongcloud-react-native-imlib";

// 或导入所有方法到一个对象
import * as IMClient from "rongcloud-react-native-imlib";

初始化 SDK

您在使用融云 SDK 所有功能之前,您必须先调用此方法初始化 SDK。在 App 的整个生命周期中,您只需要将 SDK 初始化一次。

import { init } from "rongcloud-react-native-imlib";

init("Your appKey");

连接服务器

在 App 整个生命周期,您只需要调用一次此方法与融云服务器建立连接。之后无论是网络出现异常或者 App 有前后台的切换等,SDK 都会负责自动重连。 SDK 针对 App 的前后台和各种网络状况,进行了连接和重连机制的优化,建议您调用一次 connect 即可,其余交给 SDK 处理。 除非您已经手动将连接断开,否则您不需要自己再手动重连。

import { connect, ErrorCode } from "rongcloud-react-native-imlib";

function onSuccess(userId) {
  console.log("连接成功:" + userId);
}

function onError(errorCode) {
  console.log("连接失败:" + errorCode);
}

function onTokenIncorrect() {
  console.log("Token 不正确或已过期");
}

connect(
  token,
  onSuccess,
  onError,
  onTokenIncorrect
);

监听连接状态

import { addConnectionStatusListener } from "rongcloud-react-native-imlib";

const listener = addConnectionStatusListener(status => console.log(status));

// 移除监听
listener.remove();

断开连接

import { disconnect } from "rongcloud-react-native-imlib";

// 断开连接,但仍然可以接收推送消息
disconnect();

// 断开连接,不再接收推送消息
disconnect(false);