Skip to content
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
4 changes: 3 additions & 1 deletion docs/document/android/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

### 2. 集成 SDK

你可以使用 mavenCentral 自动集成。该方法仅适用于 v3.8.2 或以上版本。获取最新 SDK 的版本号,详见 [SDK 更新日志](releasenote.html)。
你可以使用 mavenCentral 自动集成。该方法仅适用于 v3.8.2 或以上版本。

除此之外,你还可以通过手动复制 SDK 文件和动态加载 `.so` 库文件的方法集成 IM SDK,详见[集成文档](integration.html)。

Expand Down Expand Up @@ -85,6 +85,8 @@ implementation 'io.hyphenate:hyphenate-sdk:3.7.5' // 完整版本,包含音视
implementation 'io.hyphenate:hyphenate-sdk-lite:3.7.5' // 精简版,只包含IM功能
```

若要查看最新版本号,请点击[这里](releasenote.html)。

### 3. 添加项目权限

根据场景需要,在 `/app/src/main/AndroidManifest.xml` 文件中添加如下行,获取相应的设备权限:
Expand Down
6 changes: 3 additions & 3 deletions docs/document/ios/conversation_delete.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

你可以调用 `deleteServerConversation` 方法单向删除服务器端和本地会话,并选择是否删除服务端和本地的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。该接口不影响其他用户的会话和消息。

```objective-c
```objectivec
// 删除指定会话,如果需要保留服务端和本地的历史消息,`isDeleteServerMessages` 参数传 `NO`,异步方法。
[[EMClient sharedClient].chatManager deleteServerConversation:@"conversationId1" conversationType:EMConversationTypeChat isDeleteServerMessages:YES completion:^(NSString *aConversationId, EMError *aError) {
// 删除回调
Expand All @@ -33,15 +33,15 @@

你可以删除本地会话和历史消息,示例代码如下:

```objective-c
```objectivec
// 删除指定会话,如果需要保留历史消息,`isDeleteMessages` 参数传 `NO`,异步方法。
[[EMClient sharedClient].chatManager deleteConversation:conversationId isDeleteMessages:YES completion:nil];
// 删除一组会话。
NSArray *conversations = @{@"conversationID1",@"conversationID2"};
[[EMClient sharedClient].chatManager deleteConversations:conversations isDeleteMessages:YES completion:nil];
```

```objective-c
```objectivec
// 删除当前会话中指定的一条历史消息。
EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES];
[conversation deleteMessageWithId:.messageId error:nil];
Expand Down
4 changes: 2 additions & 2 deletions docs/document/ios/conversation_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

示例代码如下:

```objective-c
```objectivec
// pageSize: 每页返回的会话数。取值范围为 [1,50]。
// cursor:查询的开始位置。若传入 `nil` 或 `@""`,SDK 从最新活跃的会话开始获取。
NSString *cursor = @"";
Expand Down Expand Up @@ -82,7 +82,7 @@ NSString *cursor = @"";

示例代码如下:

```objective-c
```objectivec
NSArray <EMConversation *>*conversations = [EMClient.sharedClient.chatManager getAllConversations:YES];
```

Expand Down
12 changes: 6 additions & 6 deletions docs/document/ios/conversation_mark.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

你需要自行维护会话标记与具体业务含义(比如 `EMMarkType0` 为重要会话)之间的映射关系。例如:

```objective-c
```objectivec
NSDictionary* mapping = @{
@(EMMarkType0): @"important",
@(EMMarkType1): @"normal",
Expand Down Expand Up @@ -48,7 +48,7 @@ NSDictionary* mapping = @{
对会话添加标记,例如会话标星,并不影响会话的其他逻辑,例如会话的未读消息数。
:::

```objective-c
```objectivec
[EMClient.sharedClient.chatManager addConversationMark:@[@"conversationId1"] mark:EMMarkType0 completion:^(EMError * _Nullable aError) {

}];
Expand All @@ -60,7 +60,7 @@ NSDictionary* mapping = @{

调用该方法会同时移除本地和服务器端会话的标记。

```objective-c
```objectivec
[EMClient.sharedClient.chatManager removeConversationMark:@[@"conversationId1"] mark:EMMarkType0 completion:^(EMError * _Nullable aError) {

}];
Expand All @@ -71,7 +71,7 @@ NSDictionary* mapping = @{
你可以调用 `getConversationsFromServerWithCursor` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 `0`)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。


```objective-c
```objectivec
//cursor:查询的开始位置。若传入空字符串,SDK 从最新标记操作的会话开始获取。
// filter:会话查询选项,包括会话标记和每页获取的会话条数(最多可获取 10 条)。
EMConversationFilter* filter = [[EMConversationFilter alloc] initWithMark:EMMarkType0 pageSize:10];
Expand All @@ -84,7 +84,7 @@ EMConversationFilter* filter = [[EMConversationFilter alloc] initWithMark:EMMark

对于本地会话,你可以调用 `getAllConversations` 方法获取本地所有会话后自己进行会话过滤。下面以查询标记了 `EMMarkType0` 的所有本地会话为例。

```objective-c
```objectivec
//最终的查询结果全部放入 result 中。
NSMutableArray<EMConversation*>* result = [NSMutableArray array];
NSArray<EMConversation*>* allConversations = [EMClient.sharedClient.chatManager getAllConversations];
Expand All @@ -99,7 +99,7 @@ for (EMConversation* conversation in allConversations) {

要获取本地单个会话的所有标记,你需要首先调用 `getConversationWithConvId` 方法获取本地单个会话,然后从会话的 `marks` 属性中查看该会话的所有标记,示例代码如下:

```objective-c
```objectivec
EMConversation* conversation = [EMClient.sharedClient.chatManager getConversationWithConvId:@"conversationId"];
NSArray<NSNumber*>* marks = conversation.marks;
```
Expand Down
2 changes: 1 addition & 1 deletion docs/document/ios/conversation_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@

示例代码如下:

```objective-c
```objectivec
// 收到会话已读的事件。该事件在以下场景中触发:
// 1. 当消息接收方调用 `ackConversationRead()` 方法,SDK 会执行此回调,
// 会将本地数据库中该会话中消息的 `isAcked` 属性置为 `true`。
Expand Down
4 changes: 2 additions & 2 deletions docs/document/ios/conversation_pin.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

示例代码如下:

```objective-c
```objectivec
[EMClient.sharedClient.chatManager pinConversation:self.conversation.conversationId isPinned:aSwitch.isOn completionBlock:^(EMError * _Nullable error) {
}];
```
Expand All @@ -46,7 +46,7 @@

示例代码如下:

```objective-c
```objectivec
// pageSize: 每页返回的会话数。取值范围为 [1,50]。
// cursor:查询的开始位置。若传入 `nil` 或 `@""`,SDK 从最新置顶的会话开始查询。
NSString *cursor = @"";
Expand Down
4 changes: 2 additions & 2 deletions docs/document/ios/conversation_receipt.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `sendMessageReadAck`,则需要调用多次。

```objective-c
```objectivec
[[EMClient sharedClient].chatManager ackConversationRead:conversationId completion:nil];
```

Expand All @@ -47,7 +47,7 @@
对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `OnConversationRead` 回调收到会话已读回执。
:::

```objective-c
```objectivec
// 继承并实现监听器。
EMChatManagerDelegate

Expand Down
8 changes: 4 additions & 4 deletions docs/document/ios/conversation_unread.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

你可以调用 `getAllConversations` 方法获取每个本地会话的未读消息数量,即`EMConversation#unreadMessagesCount`,然后累加该数量,得到所有会话的未读消息数,示例代码如下:

```objective-c
```objectivec
NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];
NSInteger unreadCount = 0;
for (EMConversation *conversation in conversations) {
Expand All @@ -39,7 +39,7 @@ for (EMConversation *conversation in conversations) {

你可以调用 `unreadMessagesCount` 方法获取本地指定会话的未读消息数,示例代码如下:

```objective-c
```objectivec
// 获取指定会话 ID 的会话。
EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES];
// 获取未读消息数。
Expand All @@ -65,7 +65,7 @@ let err = EMClient.shared().chatManager?.markAllConversationsAsRead()

你可以调用 `markAllMessagesAsRead` 方法对指定会话的未读消息数清零,示例代码如下:

```objective-c
```objectivec
EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES];
[conversation markAllMessagesAsRead:nil];
```
Expand All @@ -74,7 +74,7 @@ EMConversation *conversation = [[EMClient sharedClient].chatManager getConversat

你可以调用 `markMessageAsReadWithId` 方法将指定会话的单条未读消息置为已读。

```objective-c
```objectivec
EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES];
[conversation markMessageAsReadWithId:messageId error:nil];
```
30 changes: 15 additions & 15 deletions docs/document/ios/easecallkit.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ end

在环信 IM SDK 初始化完成后,同时初始化 `EaseCallKit`,初始化的同时开启回调监听,设置常用配置项。代码如下:

```objective-c
```objectivec
EaseCallConfig* config = [[EaseCallConfig alloc] init];
EaseCallUser* usr = [[EaseCallUser alloc] init];
usr.nickName = @"自定义昵称";
Expand All @@ -115,7 +115,7 @@ config.agoraAppId=@"声网 AppID";

可设置的配置项包括以下内容:

```objective-c
```objectivec
@interface EaseCallConfig : NSObject
// 默认头像。
@property (nonatomic) NSURL* defaultHeadImage;
Expand All @@ -140,7 +140,7 @@ config.agoraAppId=@"声网 AppID";

一对一通话分为语音通话与视频通话,发起过程如下:

```objective-c
```objectivec
// 发起一对一通话。
// remoteUser 邀请对象的环信 ID。
// type 通话类型。`EaseCallType1v1Audio` 表示语音通话,`EaseCallType1v1Video` 表示视频通话。
Expand All @@ -154,7 +154,7 @@ config.agoraAppId=@"声网 AppID";

你可以从群组成员列表或者好友列表中选择用户,发起多人音视频通话。具体实现可参考 Demo 中的 `ConfInviteUsersViewController`。

```objective-c
```objectivec
//邀请用户加入多人通话。
// aInviteUsers 受邀用户的环信 ID 数组。
// ext 可设置扩展信息,如果从群组发起,可通过 `ext` 设置群组 ID,其他用户也可邀请该群组成员。
Expand All @@ -175,7 +175,7 @@ config.agoraAppId=@"声网 AppID";

被叫振铃的同时,会触发以下回调:

```objective-c
```objectivec
- (void)callDidReceive:(EaseCallType)aType inviter:(NSString*_Nonnull)user ext:(NSDictionary*)aExt
{

Expand All @@ -186,7 +186,7 @@ config.agoraAppId=@"声网 AppID";

多人通话中,当前用户可以点击通话界面右上角的邀请按钮再次向其他用户发起邀请。这种情况下,会触发 `EaseCallKitListener` 中的 `multiCallDidInvitingWithCurVC` 回调:

```objective-c
```objectivec
// 多人音视频邀请按钮的回调。
// vc 当前视图控制器。
// users 通话中已存在的用户。
Expand Down Expand Up @@ -220,7 +220,7 @@ config.agoraAppId=@"声网 AppID";

自 `EaseCallKit` 3.8.1 新增 `callDidJoinChannel` 方法,在用户加入通话后会收到回调:

```objective-c
```objectivec
- (void)callDidJoinChannel:(NSString*_Nonnull)aChannelName uid:(NSUInteger)aUid
{
//此时,可以获取当前频道中已有用户的声网 ID 与环信 ID 的映射表,并将映射表设置到 `EaseCallKit`,同时也可以更新用户的头像和昵称。
Expand All @@ -234,7 +234,7 @@ config.agoraAppId=@"声网 AppID";

自 `EaseCallKit` 3.8.1 新增 `remoteUserDidJoinChannel` 方法,在对方用户加入通话后会收到回调。

```objective-c
```objectivec
-(void)remoteUserDidJoinChannel:( NSString*_Nonnull)aChannelName uid:(NSInteger)aUid username:(NSString*_Nullable)aUserName
{
// 此时,可以获取当前频道中已有用户的声网 RTC UID 与环信 ID 的映射表,并将映射表设置到 `EaseCallKit`,同时也可以更新用户的头像和昵称。
Expand All @@ -247,7 +247,7 @@ config.agoraAppId=@"声网 AppID";

在一对一音视频通话中,若其中一方挂断,双方的通话会自动结束,而多人音视频通话中需要主动挂断才能结束通话。通话结束后,会触发 `callDidEnd` 回调:

```objective-c
```objectivec
// 通话结束回调。
// aChannelName 通话使用的声网频道名称,用户可以根据频道名称,到声网 Console 的水晶球查询通话质量。
// aTm 通话时长,单位为秒。
Expand Down Expand Up @@ -296,7 +296,7 @@ config.agoraAppId=@"声网 AppID";

异常包括业务逻辑异常、音视频异常以及 Easemob IM 异常。

```objective-c
```objectivec
// 通话异常回调。
// aError 为异常信息,包括了 Easemob IM 异常,RTC 异常,业务异常三种情况。
- (void)callDidOccurError:(EaseCallError *)aError
Expand All @@ -307,7 +307,7 @@ config.agoraAppId=@"声网 AppID";

`EaseCallError` 异常包括 IM 异常,RTC 异常以及业务逻辑异常。

```objective-c
```objectivec
@interface EaseCallError : NSObject
// 异常类型,包括 Easemob IM 异常、RTC 异常和业务逻辑异常。
@property (nonatomic) EaseCallErrorType aErrorType;
Expand All @@ -321,7 +321,7 @@ config.agoraAppId=@"声网 AppID";

`EaseCallKit` 库初始化之后,可调用该方法修改配置:

```objective-c
```objectivec
// 以下为修改铃声过程。
EaseCallConfig* config = [[EaseCallManager sharedManager] getEaseCallConfig];
NSString* path = [[NSBundle mainBundle] pathForResource:@"huahai128" ofType:@"mp3"];
Expand All @@ -332,7 +332,7 @@ config.ringFileUrl = [NSURL fileURLWithPath:path];

自 `EaseCallKit` 3.8.1 开始,新增了修改头像昵称的接口,用户加入频道后可修改自己和通话中其他人的头像昵称,修改方法如下:

```objective-c
```objectivec
EaseCallUser* user = [EaseCallUser userWithNickName:info.nickName image:[NSURL URLWithString:info.avatarUrl]];
[[[EaseCallManager sharedManager] getEaseCallConfig] setUser:username info:user];
```
Expand All @@ -343,15 +343,15 @@ EaseCallUser* user = [EaseCallUser userWithNickName:info.nickName image:[NSURL U

用户加入音视频通话时,如果需要进行声网 token 鉴权,需要先开启 token 验证开关,开启过程如下:

```objective-c
```objectivec
EaseCallUser* callUser = [[EaseCallUser alloc] init];
config.enableRTCTokenValidate = YES;// 开启 RTC Token 验证,默认不开启。
[[EaseCallManager sharedManager] initWithConfig:config delegate:self];
```

获取 token 的过程由用户自己完成,开启后在通话时,会收到 `callDidRequestRTCTokenForAppId`回调,用户需要在回调中,实现从用户自己的 App Server 中获取 token(App Server 的实现参见 [生成声网 Token](https://docportal.shengwang.cn/cn/video-call-4.x/token_server_ios_ng),然后调用 `setRTCToken:channelName:` 接口。

```objective-c
```objectivec
- (void)callDidRequestRTCTokenForAppId:(NSString * _Nonnull)aAppId
channelName:(NSString * _Nonnull)aChannelName
account:(NSString * _Nonnull)aUserAccount
Expand Down
Loading