Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/easemob/ease_call_kit

Easemob Callkit
https://github.com/easemob/ease_call_kit

Last synced: 1 day ago
JSON representation

Easemob Callkit

Awesome Lists containing this project

README

        

# 环信ease call kit

`ease_call_kit`是针对环信`EaseCallKit`的封装。

> EaseCallKit是一套基于环信IM和声网音视频结合开发的音视频UI库,实现了1v1语音通话、视频通话,以及多人音视频通话的功能, EaseCallKit可以快速实现一些通用的音视频功能。

文章主要讲解环信`ease_call_kit`如何使用。

[环信官网](https://www.easemob.com/)

[环信iOS EaseCallKit集成文档](http://docs-im.easemob.com/im/ios/other/easecallkit)

[环信Android EaseCallKit集成文档](http://docs-im.easemob.com/im/android/other/easecallkit)

[im flutter sdk](https://github.com/easemob/im_flutter_sdk):环信im flutter plugin,example中使用了ease call kit。

### 前期准备

在集成该库前,你需要满足以下条件:

* 你已分别创建了环信应用及声网应用;
* 已完成环信IM的基本功能,包括登录、好友、群组以及会话等的集成;
* 上线之前开通声网token验证时,用户需要实现自己的AppServer'',根据环信ID,生成Token,创建Token服务及使用AppServer生成Token的过程参见[声网文档](https://docs.agora.io/cn/live-streaming/token_server)

### 导入UI库

```
dependencies:
im_flutter_sdk:
git:
url: https://github.com/easemob/ease_call_kit.git
ref: stable
```

### 导入头文件

```
import 'package:ease_call_kit/ease_call_kit.dart';
```

### 初始化

```
EaseCallKit.initWithConfig(EaseCallConfig(agoraAppId));
```
__AgoraAppId__ 您声网的App ID,如果没有,需要您去注册声网并在[项目管理](https://console.agora.io/projects)中添加。
> 初始化前,需要您成功登陆环信,建议您把初始化ease call kit写在主页面。

### 呼叫

#### 1v1

```
// callType: 呼叫类型,有`SingeAudio`和`SingeVideo`两种
EaseCallKit.startSingleCall('du002', callType: EaseCallType.SingeVideo);
```

#### 多人

```
EaseCallKit.startInviteUsers(['du001', 'du002']);
```

### 监听事件

```
class _MyAppState extends State with EaseCallKitListener {
@override
void initState() {
super.initState();
var config = EaseCallKit.initWithConfig(EaseCallConfig(AgoraAppId));
EaseCallKit.initWithConfig(config);
EaseCallKit.listener = this;
}

...

@override
void dispose() {
EaseCallKit.dispose();
super.dispose();
}

@override
/// 通话结束时触发该回调
/// channelName 通话的通道名称,用于在声网水晶球查询通话质量
/// reason 通话结束原因 time 通话时长
/// callType 通话类型,EaseCallTypeAudio为语音通话,EaseCallTypeVideo为视频通话,EaseCallTypeMulti为多人通话
void callDidEnd(String channelName, EaseCallEndReason reason, int time,
EaseCallType callType) {
}

@override
/// 通话中自己加入会议成功时触发该回调
/// channelName 呼叫使用的频道名称
/// uid 声网账户
void callDidJoinChannel(String channelName, int uid) {
debugPrint(
"callDidJoinChannel channelName: $channelName, uid: $uid",
);
}

@override
/// 通话过程发生异常时,触发该回调
/// error 错误信息
void callDidOccurError(EaseCallError error) {
}

@override
/// 被叫开始振铃时,触发该回调
/// 被叫开始振铃时,触发该回调
/// callType 通话类型
/// inviter 主叫的环信id
/// ext 邀请中的扩展信息
void callDidReceive(EaseCallType callType, String inviter, Map ext) {
}

@override
/// 加入音视频通话频道前触发该回调,用户需要在触发该回调后, 主动从AppServer获取声网token,然后调用EaseCallKit#setRTCToken方法将token设置进来
/// appId 声网通话使用的appId
/// channelName 呼叫使用的频道名称
/// eid 当前登录的环信id
void callDidRequestRTCToken(String appId, String channelName, String eid) async {
}

@override
/// 多人通话中,点击邀请按钮触发该回调
/// excludeUsers 当前会议中已存在的成员及已邀请的成员
/// ext 邀请中的扩展信息
void multiCallDidInviting(List excludeUsers, Map? ext) {
}

@override
/// 通话中对方加入会议时触发该回调
/// channelName 呼叫使用的频道名称
/// uid 声网账户
/// eid 当前登录的环信id
void remoteUserDidJoinChannel(String channelName, int uid, String eid) {
}

}
```

## iOS需要配置

[环信iOS EaseCallKit集成文档](http://docs-im.easemob.com/im/ios/other/easecallkit)

### 修改Podfile文件

iOS EaseCallKit 需要配置`use_frameworks!`,所以您项目中的`Podfile`文件中需要添加`use_frameworks!`

### 添加权限

应用需要音频设备及摄像头权限,在 info.plist 文件中,点击 + 图标,添加如下信息

| Key | Type | Value |
| -------------------------------------- | ------ | ------------------------------------ |
| Privacy - Microphone Usage Description | String | 描述信息,如“环信需要使用您的麦克风” |
| Privacy - Camera Usage Description | String | 描述信息,如“环信需要使用您的摄像头” |

## Android需要配置

[环信Android EaseCallKit集成文档](http://docs-im.easemob.com/im/android/other/easecallkit)

### 添加权限

```









...

```

### 添加CallkitActivity

```


```
> activity中没有默认theme,如果您的项目中没有配置默认theme,需要您为application添加默认theme

```android:theme="@style/AppTheme"```

```

```