Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/easemob/ease_call_kit
- Owner: easemob
- License: other
- Created: 2021-03-15T03:21:33.000Z (over 3 years ago)
- Default Branch: stable
- Last Pushed: 2022-03-10T09:17:42.000Z (over 2 years ago)
- Last Synced: 2024-04-13T16:05:27.747Z (7 months ago)
- Language: Dart
- Size: 2.78 MB
- Stars: 5
- Watchers: 10
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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"```
```
```