Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modify IM Docs #284

Merged
merged 2 commits into from
Apr 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/document/android/easecallkit.md
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ public void onRemoteUserJoinChannel(String channelName, String userName, int uid

加入音视频时,你需获取声网 token 以进行鉴权,需要在 `EaseCallKitListener` 中将 token 回调给 `EaseCallKit`。

如果不需要鉴权,可以直接回调 token 为 `null`,或者不实现该回调, 具体接口和使用如下:
如果不需要鉴权,可以直接回调 token 为 `null`,或者在设置 `callKitConfig.setEnableRTCToken(false)` 的前提下不实现该回调, 具体接口和使用如下:

```java
/**
Expand Down
29 changes: 16 additions & 13 deletions docs/document/android/message_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

<Toc />

## 功能描述

环信即时通讯 IM 支持多种消息类型,开发者可以方便地对本地会话、消息进行管理,可以从服务端获取历史会话和消息,提供送达回执和已读回执能力。

消息:环信即时通讯 IM 中消息(Message)表示发送方给接收方发送的内容,消息包括多种类型,如:文本、图片、语音等。
Expand All @@ -14,22 +12,26 @@

| 类型<div style="width: 120px;"></div> | 描述 |
| :------------- | :----------------------------------------------------------- |
| 文本消息 | 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息是基于文本消息实现的。<br> 文本消息大小限制为 3 KB。 |
| 图片消息 | 图片消息是附件消息,需要先将图片上传至消息服务器。接收方收到图片时自动下载图片缩略图。<br> 图片不能超过 10 MB,图片消息大小限制为 3 KB。 |
| 语音消息 | 语音消息是附件消息,需要先将语音上传至消息服务器。接收方收到语音时自动下载语音。<br> 音频文件不能超过 10 MB,音频消息大小限制为 3 KB。 |
| 视频消息 | 视频消息是附件消息,需要先将视频上传至消息服务器。接收方收到视频时自动下载视频缩略图,点击下载视频消息。<br> 视频文件不能超过 10 MB,视频消息大小限制为 3 KB。 |
| 文件消息 | 文件消息是附件消息,需要先将文件上传至消息服务器。接收方收到文件时自动下载文件。<br> 附件大小不能超过 10 MB,文件消息大小限制为 3 KB。 |
| 文本消息 | 文本消息的内容是文本,包含超链接和表情符号等。表情消息基于文本消息实现。<br/> 文本消息大小限制为 3 KB。 |
| 图片消息 | 图片消息是附件消息,需要先将图片上传至消息服务器。接收方收到图片时自动下载图片缩略图。<br/> 图片不能超过 10 MB,图片消息大小限制为 3 KB。 |
| 语音消息 | 语音消息是附件消息,需要先将语音上传至消息服务器。接收方收到语音时自动下载语音。<br/> 音频文件不能超过 10 MB,音频消息大小限制为 3 KB。 |
| 视频消息 | 视频消息是附件消息,需要先将视频上传至消息服务器。接收方收到视频时自动下载视频缩略图,点击下载视频消息。对于 Web 端,视频消息没有缩略图。<br/> 视频文件不能超过 10 MB,视频消息大小限制为 3 KB。 |
| 文件消息 | 文件消息是附件消息,需要先将文件上传至消息服务器。<br/> 附件大小不能超过 10 MB,文件消息大小限制为 3 KB。 |
| 位置消息 | 位置消息需要第三方的地图服务提供经纬度信息。接收方接收到位置消息,通过经纬度信息可以在第三方的地图服务中显示位置。 |
| 透传消息 | 透传消息可视为命令消息通过发送这条命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。透传消息不会在 UI 上展示。<br> 消息大小显示为 3 KB。<br> 透传消息的使用场景:头像、昵称的更新、状态同步等。<br> 透传消息不会存入本地数据库。 |
| 消息自定义扩展 | 当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型。<br> 使用扩展后,消息大小不能超过原类型消息的大小。<br> 消息自定义扩展的使用场景:消息中需要携带被回复的消息内容和图文消息等。 |
| 自定义消息 | 开发者自定义的消息类型。自定义消息支持设置类型名称,开发者可以添加多种自定义消息。<br> 自定义消息大小限制为 3 KB。<br> 自定义消息的使用场景:红包消息、模板消息等。 |
| 透传消息 | 透传消息可视为命令消息通过发送这条命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。透传消息不会在 UI 上展示。<br/>消息大小限制为 3 KB。<br> 你可以使用透传消息更新头像和昵称以及进行状态同步等。<br/> 透传消息不会存入本地数据库。 |
| 消息自定义扩展 | 当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型。<br/>使用扩展后,消息大小不能超过原类型消息的大小。<br/>典型的用例是发送引用较早文本或图像消息的消息。 |
| 自定义消息 | 开发者自定义的消息类型。自定义消息支持设置类型名称,开发者可以添加多种自定义消息。<br/>自定义消息大小限制为 3 KB。<br/>自定义消息的使用场景:红包消息、模板消息等。 |

### 消息功能

#### 管理本地消息数据

使用环信即时通讯 IM 发送和接收到的消息会存储在本地数据库,消息以会话为单位进行管理。用户可基于会话获取、删除、导入和插入消息。

:::notice
Web 端无本地消息存储。
:::

| 功能 | 描述 |
| :--------------------------- | :----------------------------------------------------------- |
| 获取本地会话列表 | 获取本地所有的会话。本地存储的消息有已读和未读状态,获取时包含未读消息数。 |
Expand All @@ -56,14 +58,15 @@
#### 从服务器获取消息

环信即时通讯 IM 在消息服务器保存历史消息,方便用户在新设备上获取历史消息。

历史消息存储时间与套餐版本相关:专业版 7 天,旗舰版 90 天, 尊享版 180 天。

| 功能 | 描述 | 适用的平台/框架|
| :---------- | :----------- |:----------------------------------- |
| 从服务器获取会话 | 从服务端获取会话。 | 所有平台/框架 |
| 从服务端分页获取会话列表 | 从服务端分页获取会话列表。 | 所有平台/框架 |
| 分页获取指定会话的历史消息 | 从服务端分页获取会话的历史消息。 | 所有平台/框架 |
| 单向删除服务端的历史消息 | 当前用户单向删除服务端的历史消息。消息删除后,当前用户无法从服务端拉取到该消息。 | Android/iOS/Web |
| 删除服务端会话及其历史消息 | 删除服务端会话及其历史消息。会话删除后,当前用户和其他用户均无法从服务器获取该会话。 | Android/iOS/Web |
| 单向删除服务端的历史消息 | 当前用户单向删除服务端的历史消息。消息删除后,当前用户无法从服务端拉取到该消息,其他用户不受影响。 | 所有平台/框架 |
| 删除服务端会话及其历史消息 | 删除服务端会话及其历史消息。会话删除后,当前用户和其他用户均无法从服务器获取该会话。 | 所有平台/框架 |

#### 获取消息的已读回执和送达回执

Expand Down
62 changes: 58 additions & 4 deletions docs/document/ios/easeimkit.md
Original file line number Diff line number Diff line change
Expand Up @@ -664,15 +664,69 @@ return menuArray;
//@群成员
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
//用户可自定义@实现
if ([text isEqualToString:@"@"] && self.conversation.type == EMConversationTypeGroupChat)
{
[self _willInputAt:textView];
if (self.conversation.type == EMConversationTypeGroupChat) {
if ([text isEqualToString:@"@"]) {
[self _willInputAt:textView];
} else if ([text isEqualToString:@""]) {
__block BOOL isAt = NO;
[textView.attributedText enumerateAttributesInRange:NSMakeRange(0, textView.text.length) options:0 usingBlock:^(NSDictionary<NSAttributedStringKey,id> * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {
NSString *atUser = attrs[@"AtInfo"];
if (atUser) {
if (textView.selectedRange.location == range.location + range.length) {
isAt = YES;
NSMutableAttributedString *result = [[NSMutableAttributedString alloc] initWithAttributedString:textView.attributedText];
[result deleteCharactersInRange:range];
textView.attributedText = result;
if ([atUser isEqualToString:@"All"]) {
[self.chatController removeAtAll];
} else {
[self.chatController removeAtUser:atUser];
}
*stop = YES;
}
}
}];
return !isAt;
}
}
return YES;
}
```
#### 输入框选中回调
```objectivec
/**
* 输入区选中范围变化回调 例:@群成员
*/
- (void)textViewDidChangeSelection:(UITextView *)textView;
```

输入区选中范围变化回调示例(EaseIM APP 有效):

```objectivec
- (void)textViewDidChangeSelection:(UITextView *)textView
{
[textView.attributedText enumerateAttributesInRange:NSMakeRange(0, textView.text.length) options:0 usingBlock:^(NSDictionary<NSAttributedStringKey,id> * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {
if (attrs[@"AtInfo"]) {
NSUInteger min = textView.selectedRange.location;
NSUInteger max = textView.selectedRange.location + textView.selectedRange.length;
if (min > range.location && min <= range.location + range.length) {
NSUInteger location = range.location + range.length;
NSUInteger length = 0;
if (textView.selectedRange.location + textView.selectedRange.length > location) {
length = textView.selectedRange.location + textView.selectedRange.length - location;
}
textView.selectedRange = NSMakeRange(location, length);
*stop = YES;
} else if (max > range.location && max <= range.location + range.length) {
NSUInteger location = min;
NSUInteger length = textView.selectedRange.length - (max - range.location - range.length);
textView.selectedRange = NSMakeRange(location, length);
*stop = YES;
}
}
}];
}
```
#### 对方正在输入状态回调

对方正在输入状态回调(单聊有效)
Expand Down
Loading