diff --git a/docs/document/android/connection.md b/docs/document/android/connection.md index 8dd950803..b60b0452e 100644 --- a/docs/document/android/connection.md +++ b/docs/document/android/connection.md @@ -8,7 +8,7 @@ 你可以通过注册连接监听确认连接状态。 -```java +```Java EMConnectionListener connectionListener = new EMConnectionListener() { @Override public void onConnected() { diff --git a/docs/document/android/conversation_delete.md b/docs/document/android/conversation_delete.md index 4ee295ebb..ec5f14789 100644 --- a/docs/document/android/conversation_delete.md +++ b/docs/document/android/conversation_delete.md @@ -28,7 +28,7 @@ 示例代码如下: -```java +```Java //获取指定的会话 ID。 EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); @@ -50,12 +50,12 @@ EMClient.getInstance().chatManager().deleteConversationFromServer(conversationId 你可以删除本地会话和历史消息,示例代码如下: -```java +```Java // 删除指定用户的会话,如果需要保留历史消息,传 `false`。 EMClient.getInstance().chatManager().deleteConversation(conversationId, true); ``` -```java +```Java // 删除指定会话中指定的一条历史消息。 EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); conversation.removeMessage(deleteMsg.msgId); diff --git a/docs/document/android/conversation_list.md b/docs/document/android/conversation_list.md index 22d48db02..12c4e1b4b 100644 --- a/docs/document/android/conversation_list.md +++ b/docs/document/android/conversation_list.md @@ -38,7 +38,7 @@ 示例代码如下: -```java +```Java // limit: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。若获取数据时传 `null` 或者空字符串(""),SDK 从最新活跃的会话开始获取。 int limit = 10; @@ -69,7 +69,7 @@ EMClient.getInstance().chatManager().asyncFetchConversationsFromServer(limit, cu 若使用该功能,需将 SDK 升级至 4.6.0。 ::: -```java +```Java EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustomConversationFilter() { @Override public boolean filter(EMConversation emConversation) { @@ -106,7 +106,7 @@ EMClient.getInstance().chatManager().asyncFilterConversationsFromDB(new EMCustom 示例代码如下: -```java +```Java List conversations = EMClient.getInstance().chatManager().getAllConversationsBySort(); ``` @@ -126,7 +126,7 @@ SDK 初始化时,你可以设置 `EMOptions#setAutoLoadAllConversations` 方 你可以调用 `cleanConversationsMemoryCache` 方法,清除本地内存中的所有会话,从而释放内存。 -```java +```Java EMClient.getInstance().chatManager().cleanConversationsMemoryCache(); ``` @@ -138,7 +138,7 @@ EMClient.getInstance().chatManager().cleanConversationsMemoryCache(); 2. 获取会话前清空内存中的会话:调用 `asyncFilterConversationsFromDB` 获取过滤的会话时,将 `cleanConversationsCache` 参数传 `true`。 3. 监控到内存较高时(开发者自己实现)释放内存: 调用 `cleanConversationsMemoryCache` 方法清空内存中的会话,释放内存。 -```java +```Java //step 1:SDK 初始化时,关闭自动加载会话开关。 EMOptions options = initChatOptions(context); options.setAutoLoadAllConversations(false); diff --git a/docs/document/android/conversation_mark.md b/docs/document/android/conversation_mark.md index 5698b3e74..9153d62c1 100644 --- a/docs/document/android/conversation_mark.md +++ b/docs/document/android/conversation_mark.md @@ -8,7 +8,7 @@ 你需要自行维护会话标记与具体业务含义(比如 `MARK_0` 为重要会话)之间的映射关系。例如: -```java +```Java Map mapping=new HashMap<>(); mapping.put(EMConversation.EMMarkType.MARK_0,"important"); mapping.put(EMConversation.EMMarkType.MARK_1,"normal"); @@ -48,7 +48,7 @@ mapping.put(EMConversation.EMMarkType.MARK_4,"girls"); 对会话添加标记,例如会话标星,并不影响会话的其他逻辑,例如会话的未读消息数。 ::: -```java +```Java String conversationId = "huanhuan"; List ids=new ArrayList<>(); ids.add(conversationId); @@ -71,7 +71,7 @@ EMClient.getInstance().chatManager().asyncAddConversationMark(ids, EMConversatio 调用该方法会同时移除本地和服务器端会话的标记。 -```java +```Java String conversationId = "huanhuan"; List ids=new ArrayList<>(); ids.add(conversationId); @@ -92,7 +92,7 @@ EMClient.getInstance().chatManager().asyncRemoveConversationMark(ids, EMConversa 你可以调用 `asyncGetConversationsFromServerWithCursor` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 0)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。 -```java +```Java // 最终的查询结果全部放入 result 中。 List result=new ArrayList<>(); // cursor:查询的开始位置。若传入空字符串,SDK 从最新标记操作的会话开始获取。 @@ -127,7 +127,7 @@ private void doAsyncGetConversationsFromServerWithCursor(List re 对于本地会话,你可以调用 `getAllConversations` 方法获取本地所有会话后自己进行会话过滤。下面以查询标记了 `EMConversation.EMMarkType.MARK_0` 的所有本地会话为例。 -```java +```Java //最终的查询结果全部放入 result 中。 List result=new ArrayList<>(); Map localConversations = EMClient.getInstance().chatManager().getAllConversations(); @@ -149,7 +149,7 @@ if(localConversations!=null&&!localConversations.isEmpty()){ 你可以调用 `EMConversation#marks` 方法获取本地单个会话的所有标记,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation("conversationId"); Set marks = conversation.marks(); ``` diff --git a/docs/document/android/conversation_overview.md b/docs/document/android/conversation_overview.md index f83b4a3a8..c9b69078e 100644 --- a/docs/document/android/conversation_overview.md +++ b/docs/document/android/conversation_overview.md @@ -53,7 +53,7 @@ 示例代码如下: -```java +```Java EMConversationListener listener=new EMConversationListener() { // 收到会话已读的事件。该事件在以下场景中触发: // 1. 当消息接收方调用 `ackConversationRead()` 方法,SDK 会执行此回调, diff --git a/docs/document/android/conversation_pin.md b/docs/document/android/conversation_pin.md index e3d5ebf2b..3f9e2f384 100644 --- a/docs/document/android/conversation_pin.md +++ b/docs/document/android/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```java +```Java EMClient.getInstance().chatManager().asyncPinConversation(conversationId, isPinned, new EMCallBack() { @Override public void onSuccess() { @@ -55,7 +55,7 @@ EMClient.getInstance().chatManager().asyncPinConversation(conversationId, isPinn 示例代码如下: -```java +```Java // limit: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。若获取数据时传 `null` 或者空字符串(""),SDK 从最新置顶的会话开始查询。 int limit = 10; diff --git a/docs/document/android/conversation_receipt.md b/docs/document/android/conversation_receipt.md index 68880530b..214abeb7f 100644 --- a/docs/document/android/conversation_receipt.md +++ b/docs/document/android/conversation_receipt.md @@ -29,7 +29,7 @@ 1. 开启已读回执功能,即 SDK 初始化时设置 `EMOptions#setRequireAck` 为 `true`。 - ```java + ```Java // 设置是否需要接受方已读确认,默认为 true options.setRequireAck(true); ``` @@ -40,7 +40,7 @@ options.setRequireAck(true); 若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `ackMessageRead`,则需要调用多次。 -```java +```Java try { EMClient.getInstance().chatManager().ackConversationRead(conversationId); } catch (HyphenateException e) { @@ -56,7 +56,7 @@ try { 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `OnConversationRead` 回调收到会话已读回执。 ::: -```java +```Java EMClient.getInstance().chatManager().addConversationListener(new EMConversationListener() { …… @Override diff --git a/docs/document/android/conversation_unread.md b/docs/document/android/conversation_unread.md index 7842d6a2e..446a0b570 100644 --- a/docs/document/android/conversation_unread.md +++ b/docs/document/android/conversation_unread.md @@ -27,7 +27,7 @@ 你可以调用 `getUnreadMessageCount` 方法获取本地所有会话的未读消息数量,示例代码如下: -```java +```Java EMClient.getInstance().chatManager().getUnreadMessageCount(); ``` @@ -35,7 +35,7 @@ EMClient.getInstance().chatManager().getUnreadMessageCount(); 你可以调用 `getUnreadMsgCount` 获取本地指定会话的未读消息数,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); conversation.getUnreadMsgCount(); ``` @@ -44,7 +44,7 @@ conversation.getUnreadMsgCount(); 你可以调用 `markAllConversationsAsRead` 方法将本地所有会话设为已读,即将所有会话的未读消息数清零,示例代码如下: -```java +```Java EMClient.getInstance().chatManager().markAllConversationsAsRead(); ``` @@ -52,7 +52,7 @@ EMClient.getInstance().chatManager().markAllConversationsAsRead(); 你可以调用 `markAllMessagesAsRead` 方法对指定会话的未读消息数清零,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); conversation.markAllMessagesAsRead(); ``` @@ -61,7 +61,7 @@ conversation.markAllMessagesAsRead(); 你可以调用 `markMessageAsRead` 方法将指定会话的单条未读消息置为已读。 -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); conversation.markMessageAsRead(messageId); ``` diff --git a/docs/document/android/easecallkit.md b/docs/document/android/easecallkit.md index 3cd958cf9..23ff31574 100644 --- a/docs/document/android/easecallkit.md +++ b/docs/document/android/easecallkit.md @@ -128,7 +128,7 @@ implementation 'io.agora.rtc:full-sdk:3.8.0' 在环信 IM SDK 初始化完成后,可以开始初始化 `EaseCallKit`,同时增加监听回调,设置常用配置项。代码如下: -```java +```Java //初始化 `EaseCallUIKit`。 EaseCallKitConfig callKitConfig = new EaseCallKitConfig(); //设置默认头像。 @@ -150,7 +150,7 @@ addCallkitListener(); 可设置的配置项包括以下内容: -```java +```Java /** * EaseCallKit 相关的用户配置选项。 * defaultHeadImage 用户默认头像。该参数的值为本地文件绝对路径或者 URL。 @@ -178,7 +178,7 @@ public class EaseCallKitConfig { 一对一通话可分为视频通话和语音通话,接口如下所示: -```java +```Java /** * 发起一对一通话。 * @param type 通话类型。该参数只能设置为 `SIGNAL_VOICE_CALL` 或 `SIGNAL_VIDEO_CALL`。 @@ -192,7 +192,7 @@ public void startSingleCall(final EaseCallType type, final String user,final St 你可以从群组成员列表或者好友列表中选择,发起多人音视频邀请,具体实现可参考 demo 中的 `ConferenceInviteActivity`。 -```java +```Java /** * 邀请用户加入多人通话。 * @param users 用户 ID 列表,即环信 ID 列表。 @@ -211,7 +211,7 @@ public void startInviteMultipleCall(final String[] users,final String ext){} 被叫收到邀请后会触发 `EaseCallKitListener` 中的 `onRevivedCall` 回调: -```java +```Java /** * 收到通话邀请回调。 * @param callType 通话类型。 @@ -229,7 +229,7 @@ void onRevivedCall(EaseCallType callType, String userId,String ext){} 多人通话中,当前用户可以点击通话界面右上角的邀请按钮再次向其他用户发起邀请。这种情况下,会触发 `EaseCallKitListener` 中的 `onInviteUsers` 回调: -```java +```Java /** * 邀请好友进行多人通话。 * @param context 通话上下文。 @@ -244,7 +244,7 @@ public void onInviteUsers(Context context,String userId[],String ext) { 用户加入通话后,当前用户以及其他与会者会收到 `EaseCallKitListener` 中的 `onRemoteUserJoinChannel` 回调。该接口自从 SDK 3.8.1 新增。 -```java +```Java @Override public void onRemoteUserJoinChannel(String channelName, String userName, int uid, EaseGetUserAccountCallback callback){ //此时,可以获取当前频道中已有用户的声网 ID 与环信 ID 的映射表,并将映射表设置到 `EaseCallKit`,同时也可以更新用户的头像和昵称。 @@ -256,7 +256,7 @@ public void onRemoteUserJoinChannel(String channelName, String userName, int uid 在一对一音视频通话中,若其中一方挂断,双方的通话会自动结束,而多人音视频通话中需要主动挂断才能结束通话。通话结束后,会触发 `onEndCallWithReason` 回调: -```java +```Java /** * 通话结束回调。 * @param callType 通话类型。 @@ -285,7 +285,7 @@ public enum EaseCallEndReason { 通话过程中如果有异常或者错误发生,会触发 `EaseCallKitListener` 中的 `onCallError` 回调: -```java +```Java /** * 通话异常回调。 * @param type 错误类型。 @@ -297,7 +297,7 @@ void onCallError(EaseCallKit.EaseCallError type, int errorCode, String descripti `EaseCallError` 异常包括业务逻辑异常、音视频异常以及 Easemob IM 异常。 -```java +```Java /** * 通话错误类型。 * @@ -313,7 +313,7 @@ public enum EaseCallError{ `EaseCallKit` 库初始化之后,可修改有关配置,接口和示例如下: -```java +```Java /** * 获取当前 `EaseCallKit` 的配置。 * @@ -332,7 +332,7 @@ if(config != null){ 自 `EaseCallKit` 3.8.1 开始,新增了修改头像昵称的接口,用户可以在加入频道后,修改自己和通话中其他人的头像昵称,修改方法如下: -```java +```Java @Override public void onRemoteUserJoinChannel(String channelName, String userName, int uid, EaseGetUserAccountCallback callback){ if(userName == null || userName == ""){ @@ -359,7 +359,7 @@ CallKit 4.8.2 及更高版本支持私有化部署,包括初始化和初测监 配置私有化 AgoraAppId。其他可配置的选项,详见本文档中的[初始化](https://doc.easemob.com/document/android/easecallkit.html#初始化)一节。 -```kotlin +```Kotlin EaseCallKitConfig().apply { …… agoraAppId = "2d4f114e22304cee8d31ae909f3289d2" @@ -372,7 +372,7 @@ EaseCallKitConfig().apply { 监听 `com.hyphenate.easecallkit.base.EaseCallKitListener#onRtcEngineCreated` 事件,在 RTC 引擎创建的回调里进行私有化配置。详见 [API 参考](https://doc.shengwang.cn/api-ref/rtc/android/API/toc_network#api_irtcengine_setlocalaccesspoint)。 -```kotlin +```Kotlin private val callKitListener by lazy { object :EaseCallKitListener { …… @@ -401,7 +401,7 @@ EaseCallKit.getInstance().setCallKitListener(callKitListener) 如果不需要鉴权,可以直接回调 token 为 `null`,或者在设置 `callKitConfig.setEnableRTCToken(false)` 的前提下不实现该回调, 具体接口和使用如下: -```java +```Java /** * 用户生成 token 回调。 * @param userId 用户 ID,即用户的环信 ID。 @@ -429,7 +429,7 @@ public void onGenerateToken(String userId, String channelName, String agoraAppId 自 EaseCallKit 3.8.1 版本开始,`EaseCallKitTokenCallback` 中的 `onSetToken` 方法添加了 `uid` 参数,你可以使用数字 uid 加入声网频道。 -```java +```Java void onSetToken(String token, int uId); ``` diff --git a/docs/document/android/group_attributes.md b/docs/document/android/group_attributes.md index 01f48504c..fab728e0d 100644 --- a/docs/document/android/group_attributes.md +++ b/docs/document/android/group_attributes.md @@ -31,7 +31,7 @@ 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeGroupName(String, String, EMCallBack)。 EMClient.getInstance().groupManager().changeGroupName(groupId,changedGroupName); @@ -43,7 +43,7 @@ EMClient.getInstance().groupManager().changeGroupName(groupId,changedGroupName); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeGroupDescription(String, String, EMCallBack)。 EMClient.getInstance().groupManager().changeGroupDescription(groupId,description); @@ -55,7 +55,7 @@ EMClient.getInstance().groupManager().changeGroupDescription(groupId,description 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncUpdateGroupAnnouncement(String, String, EMCallBack)。 EMClient.getInstance().groupManager().updateGroupAnnouncement(groupId, announcement); @@ -67,7 +67,7 @@ EMClient.getInstance().groupManager().updateGroupAnnouncement(groupId, announcem 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchGroupAnnouncement(String, EMValueCallBack)。 EMClient.getInstance().groupManager().fetchGroupAnnouncement(groupId); @@ -81,7 +81,7 @@ EMClient.getInstance().groupManager().fetchGroupAnnouncement(groupId); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncUploadGroupSharedFile(String, String, EMValueCallBack)。 EMClient.getInstance().groupManager().uploadGroupSharedFile(groupId, filePath, callBack); @@ -91,7 +91,7 @@ EMClient.getInstance().groupManager().uploadGroupSharedFile(groupId, filePath, c 所有群成员均可调用 `asyncDownloadGroupSharedFile` 方法下载群组共享文件。 -```java +```Java // 同步方法,需要放到异步线程 List sharedFiles = EMClient.getInstance().groupManager().fetchGroupSharedFileList(groupId, pageNum, pageSize); // 获取需要的共享文件信息 @@ -117,7 +117,7 @@ EMClient.getInstance().groupManager().asyncDownloadGroupSharedFile(groupId, shar 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncDeleteGroupSharedFile(String, String, EMCallBack)。 EMClient.getInstance().groupManager().deleteGroupSharedFile(groupId, fileId); @@ -127,7 +127,7 @@ EMClient.getInstance().groupManager().deleteGroupSharedFile(groupId, fileId); 所有群成员均可以调用 `fetchGroupSharedFileList` 方法从服务器获取群组的共享文件列表。 -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchGroupSharedFileList(String, int, int, EMValueCallBack)。 EMClient.getInstance().groupManager().fetchGroupSharedFileList(groupId, pageNum, pageSize); @@ -139,7 +139,7 @@ EMClient.getInstance().groupManager().fetchGroupSharedFileList(groupId, pageNum, 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 EMClient.getInstance().groupManager().updateGroupExtension(groupId, extension); ``` diff --git a/docs/document/android/group_manage.md b/docs/document/android/group_manage.md index bce7842e4..ba43cfdab 100644 --- a/docs/document/android/group_manage.md +++ b/docs/document/android/group_manage.md @@ -78,7 +78,7 @@ 用户加入群组后,将可以收到群消息。示例代码如下: -```java +```Java EMGroupOptions option = new EMGroupOptions(); option.maxUsers = 100; option.style = EMGroupStyle.EMGroupStylePrivateMemberCanInvite; @@ -97,7 +97,7 @@ EMClient.getInstance().groupManager().createGroup(groupName, desc, allMembers, r 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncDestroyGroup(String, EMCallBack)。 EMClient.getInstance().groupManager().destroyGroup(groupId); @@ -115,7 +115,7 @@ EMClient.getInstance().groupManager().destroyGroup(groupId); 示例代码如下: -```java +```Java // 根据群组 ID 从本地获取群组详情。 EMGroup group = EMClient.getInstance().groupManager().getGroup(groupId); @@ -145,7 +145,7 @@ boolean isMsgBlocked = group.isMsgBlocked(); - 当群成员少于 200 人时,你可以调用从服务器获取群组详情的方法 `getGroupFromServer` 获取获取群成员列表,包括群主、群管理员和普通群成员: -```java +```Java // 第二个参数传入 `true`,默认取 200 人的群成员列表。 // 同步方法,会阻塞当前线程。 EMGroup group = EMClient.getInstance().groupManager().getGroupFromServer(groupId, true); @@ -156,7 +156,7 @@ memberList.add(group.getOwner());//加上群主 - 当群成员数量大于等于 200 时,你可以首先调用 `getGroupFromServer` 方法获取群主和群管理员,然后调用 `fetchGroupMembers` 方法获取普通群成员列表: -```java +```Java // 第二个参数传入 `true`,默认取 200 人的群成员列表。 // 同步方法,会阻塞当前线程。 EMGroup group = EMClient.getInstance().groupManager().getGroupFromServer(groupId, true); @@ -181,7 +181,7 @@ do { 示例代码如下: -```java +```Java // 异步方法。同步方法为 getJoinedGroupsFromServer(int, int, boolean, boolean)。 // pageIndex:当前页码,从 0 开始。 // pageSize:每页期望返回的群组数。取值范围为[1,20]。 @@ -200,13 +200,13 @@ List grouplist = EMClient.getInstance().groupManager().asyncGetJoinedGr - 用户可以调用 `getAllGroups` 方法加载本地群组列表。为了保证数据的正确性,需要先从服务器获取自己加入和创建的群组列表。示例代码如下: -```java +```Java List grouplist = EMClient.getInstance().groupManager().getAllGroups(); ``` - 用户还可以分页获取公开群列表: -```java +```Java // 同步方法,会阻塞当前线程。异步方法为 asyncGetPublicGroupsFromServer(int, String, EMValueCallBack)。 EMCursorResult result = EMClient.getInstance().groupManager().getPublicGroupsFromServer(pageSize, cursor); List groupsList = result.getData(); @@ -217,7 +217,7 @@ String cursor = result.getCursor(); 自 4.2.1 版本开始,你可以调用 `EMGroupManager#asyncGetJoinedGroupsCountFromServer` 方法从服务器获取当前用户已加入的群组数量。单个用户可加入群组数量的上限取决于订阅的即时通讯的套餐包,详见[产品价格](/product/pricing.html#套餐包功能详情)。 -```java +```Java EMClient.getInstance().groupManager().asyncGetJoinedGroupsCountFromServer(new EMValueCallBack() { @Override public void onSuccess(Integer value) { @@ -239,7 +239,7 @@ EMClient.getInstance().groupManager().asyncGetJoinedGroupsCountFromServer(new EM 群成员可以调用 `blockGroupMessage` 方法屏蔽群消息。屏蔽群消息后,该成员不再从指定群组接收群消息,群主和群管理员不能进行此操作。示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncBlockGroupMessage(String, EMCallBack)。 EMClient.getInstance().groupManager().blockGroupMessage(groupId); @@ -249,7 +249,7 @@ EMClient.getInstance().groupManager().blockGroupMessage(groupId); 群成员可以调用 `unblockGroupMessage` 方法解除屏蔽群消息。示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncUnblockGroupMessage(String, EMCallBack)。 EMClient.getInstance().groupManager().unblockGroupMessage(groupId); @@ -261,7 +261,7 @@ EMClient.getInstance().groupManager().unblockGroupMessage(groupId); 示例代码如下: -```java +```Java // 1、获取群组详情 EMClient.getInstance().groupManager().asyncGetGroupFromServer(groupId, new EMValueCallBack() { @Override @@ -282,7 +282,7 @@ EMClient.getInstance().groupManager().asyncGetGroupFromServer(groupId, new EMVal 示例代码如下: -```java +```Java // 创建一个群组事件监听 // 在该方法的举例中,用户 A 表示当前用户。 EMGroupChangeListener groupListener = new EMGroupChangeListener() { diff --git a/docs/document/android/group_members.md b/docs/document/android/group_members.md index 173ef0e19..8cf9834f3 100644 --- a/docs/document/android/group_members.md +++ b/docs/document/android/group_members.md @@ -52,7 +52,7 @@ 1. 调用 `getPublicGroupsFromServer` 方法从服务器获取公开群列表,查询到想要加入的群组 ID。示例代码如下: -```java +```Java EMCursorResult result = EMClient.getInstance().groupManager().getPublicGroupsFromServer(pageSize, cursor); List groupsList = result.getData(); String cursor = result.getCursor(); @@ -64,13 +64,13 @@ String cursor = result.getCursor(); 示例代码如下: - ```java + ```Java EMClient.getInstance().groupManager().joinGroup(groupId); ``` - 调用 `applyJoinToGroup` 方法加入需要群主或管理员审批的公开群,即 `EMGroupStyle` 设置为 `EMGroupStylePublicJoinNeedApproval`。示例代码如下: - ```java + ```Java EMClient.getInstance().groupManager().applyJoinToGroup(groupId, "your reason"); ``` @@ -82,7 +82,7 @@ String cursor = result.getCursor(); 示例代码如下: - ```java + ```Java EMClient.getInstance().groupManager().acceptApplication(username, groupId); ``` @@ -90,7 +90,7 @@ String cursor = result.getCursor(); 示例代码如下: - ```java + ```Java EMClient.getInstance().groupManager().declineApplication(username, groupId, "your reason"); ``` @@ -104,7 +104,7 @@ String cursor = result.getCursor(); - 群主或群管理员加人,需要调用 `addUsersToGroup` 方法: - ```java + ```Java EMClient.getInstance().groupManager().addUsersToGroup(groupId, newmembers); ``` @@ -112,7 +112,7 @@ String cursor = result.getCursor(); 对于私有群,`EMGroupStyle` 设置为 `EMGroupStylePrivateMemberCanInvite` 时,所有群成员均可以邀请人进群。 - ```java + ```Java EMClient.getInstance().groupManager().inviteUser(groupId, newmembers, "your reason"); ``` @@ -120,13 +120,13 @@ String cursor = result.getCursor(); - 受邀用户同意加入群组,需要调用 `acceptInvitation` 方法。 - ```java + ```Java EMClient.getInstance().groupManager().acceptInvitation(groupId, inviter); ``` - 受邀人拒绝入群组,需要调用 `declineInvitation` 方法。 - ```java + ```Java EMClient.getInstance().groupManager().declineInvitation(groupId, inviter, "your reason"); ``` @@ -140,7 +140,7 @@ String cursor = result.getCursor(); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncLeaveGroup(String, EMCallBack)。 EMClient.getInstance().groupManager().leaveGroup(groupId); @@ -152,7 +152,7 @@ EMClient.getInstance().groupManager().leaveGroup(groupId); - 移出单个群成员,示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncRemoveUserFromGroup(String, String, EMCallBack)。 EMClient.getInstance().groupManager().removeUserFromGroup(groupId, username); @@ -160,7 +160,7 @@ EMClient.getInstance().groupManager().removeUserFromGroup(groupId, username); - 批量移出群成员,示例代码如下: -```java +```Java // 异步方法。 EMClient.getInstance().groupManager().asyncRemoveUsersFromGroup("GroupId", userList, new EMCallBack() { @Override @@ -191,7 +191,7 @@ EMClient.getInstance().groupManager().asyncRemoveUsersFromGroup("GroupId", userL 示例代码如下: -```java +```Java Map attrMap=new HashMap(); attrMap.put("key","value"); @@ -214,7 +214,7 @@ EMClient.getInstance().groupManager().asyncRemoveUsersFromGroup("GroupId", userL 示例代码如下: -```java +```Java EMClient.getInstance().groupManager().asyncFetchGroupMemberAllAttributes(groupId, userId, new EMValueCallBack>>() { @Override public void onSuccess(Map> value) { @@ -238,7 +238,7 @@ EMClient.getInstance().groupManager().asyncRemoveUsersFromGroup("GroupId", userL 示例代码如下: -```java +```Java // keyList:要获取自定义属性的 key 的数组。若 keyList 为空数组或不传则获取这些成员的所有自定义属性。 EMClient.getInstance().groupManager().asyncFetchGroupMembersAttributes(groupId, userIds, keyList, new EMValueCallBack>>() { @Override @@ -261,7 +261,7 @@ EMClient.getInstance().groupManager().asyncRemoveUsersFromGroup("GroupId", userL 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeOwner(String, String, EMValueCallBack)。 EMClient.getInstance().groupManager().changeOwner(groupId, newOwner); @@ -275,7 +275,7 @@ EMClient.getInstance().groupManager().changeOwner(groupId, newOwner); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncAddGroupAdmin(String, String, EMValueCallBack)。 EMClient.getInstance().groupManager().addGroupAdmin(groupId, admin); @@ -289,7 +289,7 @@ EMClient.getInstance().groupManager().addGroupAdmin(groupId, admin); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncRemoveGroupAdmin(String, String, EMValueCallBack)。 EMClient.getInstance().groupManager().removeGroupAdmin(groupId, admin); @@ -299,7 +299,7 @@ EMClient.getInstance().groupManager().removeGroupAdmin(groupId, admin); 获取群管理员列表示例如下: -```java +```Java // 获取内存中管理员列表。 List adminList = group.getAdminList(); ``` @@ -316,7 +316,7 @@ List adminList = group.getAdminList(); 即使开启了群组全员禁言,群组白名单中的成员仍可以发送群组消息。不过,禁言列表上的用户即使加入了群白名单仍无法在群组中发送消息。 -```java +```Java // 异步方法。 public void addToGroupWhiteList(final String groupId, final List members, final EMCallBack callBack); ``` @@ -327,7 +327,7 @@ public void addToGroupWhiteList(final String groupId, final List members 群成员被移除群白名单后,该群成员及其他未操作的群管理员和群主将会收到群组事件回调 `EMGroupChangeListener#onWhiteListRemoved`。 -```java +```Java // 异步方法。 public void removeFromGroupWhiteList(final String groupId, final List members, final EMCallBack callBack); ``` @@ -336,7 +336,7 @@ public void removeFromGroupWhiteList(final String groupId, final List me 所有群成员可以调用 `checkIfInGroupWhiteList` 方法检查自己是否在群白名单中,示例代码如下: -```java +```Java // 异步方法。 public void checkIfInGroupWhiteList(final String groupId, EMValueCallBack callBack) ``` @@ -345,7 +345,7 @@ public void checkIfInGroupWhiteList(final String groupId, EMValueCallBack> callBack); ``` @@ -358,7 +358,7 @@ public void fetchGroupWhiteList(final String groupId, final EMValueCallBack members); @@ -423,7 +423,7 @@ EMClient.getInstance().groupManager().unMuteGroupMembers(String groupId, List callBack); ``` @@ -450,7 +450,7 @@ public void muteAllMembers(final String groupId, final EMValueCallBack 示例代码如下: -```java +```Java // 异步方法。 public void unmuteAllMembers(final String groupId, final EMValueCallBack callBack); ``` diff --git a/docs/document/android/initialization.md b/docs/document/android/initialization.md index 6cb7476b6..5ae246aa1 100644 --- a/docs/document/android/initialization.md +++ b/docs/document/android/initialization.md @@ -16,7 +16,7 @@ 初始化示例代码: -```java +```Java EMOptions options = new EMOptions(); options.setAppKey("Your appkey"); ......// 其他 EMOptions 配置。 diff --git a/docs/document/android/integration.md b/docs/document/android/integration.md index 8aa916b69..2d6aab63b 100644 --- a/docs/document/android/integration.md +++ b/docs/document/android/integration.md @@ -106,7 +106,7 @@ implementation 'io.hyphenate:hyphenate-sdk-lite:3.7.5' // 精简版,只包含I - `path` 参数为空或者不调用该方法时,SDK 内部会使用 `system.loadLibrary` 从系统默认路径中搜索并加载 so 库。 ::: -```java +```Java //假设用户已经通过动态下发的方式,将环信 SDK 中的 libcipherdb.so 和 libhyphenate.so 两个 so 库,放到 app 的 /data/data/packagename/files 目录下。 String filesPath = mContext.getFilesDir().getAbsolutePath(); @@ -157,7 +157,7 @@ EMClient.getInstance().init(mContext, options); 在 `app/proguard-rules.pro` 文件中添加如下行,防止混淆 SDK 的代码: -```java +```Java -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** ``` \ No newline at end of file diff --git a/docs/document/android/log.md b/docs/document/android/log.md index b1fb04d45..530ce4d3e 100644 --- a/docs/document/android/log.md +++ b/docs/document/android/log.md @@ -10,7 +10,7 @@ SDK 默认输出调试信息(所有日志,包括调试信息、警告和错误),如果只需输出错误日志,需要关闭调试模式。 -```java +```Java // 需要在 SDK 初始化后调用 EMClient.getInstance().setDebugMode(false); ``` diff --git a/docs/document/android/login.md b/docs/document/android/login.md index 25d146767..768ac4513 100644 --- a/docs/document/android/login.md +++ b/docs/document/android/login.md @@ -10,7 +10,7 @@ 示例代码如下所示: - ```java + ```Java // 注册失败会抛出 HyphenateException。 EMClient.getInstance().createAccount(mAccount, mPassword);// 同步方法。 ``` @@ -27,7 +27,7 @@ EMClient.getInstance().createAccount(mAccount, mPassword);// 同步方法。 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```java +```Java EMClient.getInstance().loginWithToken(mAccount, mToken, new EMCallBack() { // 登录成功回调 @Override @@ -45,7 +45,7 @@ EMClient.getInstance().loginWithToken(mAccount, mToken, new EMCallBack() { 2. **用户 ID + 密码**登录是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合[密码规则要求](/document/server-side/account_system.html#开放注册单个用户)。 -```java +```Java EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { // 登录成功回调 @Override @@ -80,13 +80,13 @@ EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { 同步方法: -```java +```Java EMClient.getInstance().logout(true); ``` 异步方法: -```java +```Java EMClient.getInstance().logout(true, new EMCallBack() { @Override diff --git a/docs/document/android/message_delete.md b/docs/document/android/message_delete.md index cb5c772be..8df5d50d0 100644 --- a/docs/document/android/message_delete.md +++ b/docs/document/android/message_delete.md @@ -29,7 +29,7 @@ 若使用该功能,需将 SDK 升级至 V4.4.0 或以上版本。 ::: -```java +```Java EMClient.getInstance().chatManager().asyncDeleteAllMsgsAndConversations(true, new EMCallBack() { @Override public void onSuccess() { @@ -56,7 +56,7 @@ 示例代码如下: -```java +```Java // 按时间删除消息 EMConversation conversation = EMClient.getInstance().chatManager().getConversation(username); conversation.removeMessagesFromServer(time, new EMCallBack() { @@ -89,7 +89,7 @@ conversation.removeMessagesFromServer(time, new EMCallBack() { 你可以删除本地指定会话的所有消息,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); if(conversation != null) { conversation.clearAllMessages(); @@ -100,7 +100,7 @@ if(conversation != null) { 你可以删除本地指定会话在一段时间内的本地消息,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); if(conversation != null) { conversation.removeMessages(startTime, endTime); @@ -111,7 +111,7 @@ if(conversation != null) { 你可以删除本地单个会话的指定消息,示例代码如下: -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); if(conversation != null) { conversation.removeMessage(messageId); diff --git a/docs/document/android/message_deliver_only_online.md b/docs/document/android/message_deliver_only_online.md index d96fde7db..eed7e006e 100644 --- a/docs/document/android/message_deliver_only_online.md +++ b/docs/document/android/message_deliver_only_online.md @@ -27,7 +27,7 @@ 下面以发送文本消息为例进行说明: -```java +```Java // 创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊时为对端用户 ID、群聊时为群组 ID。 EMMessage message = EMMessage.createTextSendMessage(content, conversationId); diff --git a/docs/document/android/message_forward.md b/docs/document/android/message_forward.md index aabb64aee..575c0a332 100644 --- a/docs/document/android/message_forward.md +++ b/docs/document/android/message_forward.md @@ -30,7 +30,7 @@ 该功能也支持转发单条合并消息。 ::: -```java +```Java // messageId 为要转发的消息 ID。 String messageId = ""; EMMessage targetMessage = EMClient.getInstance().chatManager().getMessage(messageId); diff --git a/docs/document/android/message_import_insert.md b/docs/document/android/message_import_insert.md index dbf1d102d..9db7bd4b1 100644 --- a/docs/document/android/message_import_insert.md +++ b/docs/document/android/message_import_insert.md @@ -30,7 +30,7 @@ 示例代码如下: -```java +```Java EMClient.getInstance().chatManager().importMessages(msgs); ``` @@ -44,7 +44,7 @@ EMClient.getInstance().chatManager().importMessages(msgs); 示例代码如下: -```java +```Java // 将消息插入到指定会话中。 EMConversation conversation = EMClient.getInstance().chatManager().getConversation(username); conversation.insertMessage(message); diff --git a/docs/document/android/message_modify.md b/docs/document/android/message_modify.md index abbfdc56f..080134d0f 100644 --- a/docs/document/android/message_modify.md +++ b/docs/document/android/message_modify.md @@ -30,7 +30,7 @@ 示例代码如下: -```java +```Java EMTextMessageBody messageBody=new EMTextMessageBody("new content"); EMClient.getInstance().chatManager().asyncModifyMessage(msgId, messageBody, new EMCallBack() { @Override @@ -52,7 +52,7 @@ 若通过 RESTful API 修改自定义消息,消息的接收方也通过 `com.hyphenate.EMMessageListener#onMessageContentChanged` 事件接收修改后的自定义消息。 ::: -```java +```Java EMClient.getInstance().chatManager().addMessageListener(new EMMessageListener() { @Override public void onMessageReceived(List messages) { diff --git a/docs/document/android/message_pin.md b/docs/document/android/message_pin.md index b9c15dc08..f33ed6f2c 100644 --- a/docs/document/android/message_pin.md +++ b/docs/document/android/message_pin.md @@ -31,7 +31,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```java +```Java EMClient.getInstance().chatManager().asyncPinMessage(message.getMsgId(), new EMCallBack() { @Override public void onSuccess() { @@ -56,7 +56,7 @@ EMClient.getInstance().chatManager().asyncPinMessage(message.getMsgId(), new EMC 单聊、群组或聊天室中的所有成员均可取消置顶消息,不论该消息由哪个成员置顶。取消置顶消息后,`EMMessage#pinnedInfo` 获取到的信息为空,该会话的置顶消息列表中也不再包含该消息。 -```java +```Java EMClient.getInstance().chatManager().asyncUnPinMessage(message.getMsgId(), new EMCallBack() { @Override public void onSuccess() { @@ -84,7 +84,7 @@ EMClient.getInstance().chatManager().asyncPinMessage(message.getMsgId(), new EMC 2. 若消息置顶后,用户撤回了该消息,则该消息从服务端移除,所有用户在从服务器拉取置顶消息列表时无法拉取到该消息。 ::: -```java +```Java EMClient.getInstance().chatManager().asyncGetPinnedMessagesFromServer(conversationId, new EMValueCallBack>() { @Override public void onSuccess(List pinedMessages) { @@ -105,7 +105,7 @@ EMClient.getInstance().chatManager().asyncGetPinnedMessagesFromServer(conversati - 若消息为置顶状态,该类返回消息置顶的时间以及操作者的用户 ID。 - 若消息为非置顶状态,该类返回空。 -```java +```Java EMMessagePinInfo emPinnedInfo = message.pinnedInfo(); if(emPinnedInfo!=null) { long pinTime = emPinnedInfo.pinTime(); @@ -117,7 +117,7 @@ if(emPinnedInfo!=null) { ## 监听消息置顶事件 -```java +```Java EMClient.getInstance().chatManager().addMessageListener(new EMMessageListener() { @Override public void onMessageReceived(List messages) { diff --git a/docs/document/android/message_recall.md b/docs/document/android/message_recall.md index 58b03437f..13ceefc20 100644 --- a/docs/document/android/message_recall.md +++ b/docs/document/android/message_recall.md @@ -36,7 +36,7 @@ - 同步方法: -```java +```Java try { EMClient.getInstance().chatManager().recallMessage(message,ext); EMLog.d("TAG", "撤回消息成功"); @@ -48,7 +48,7 @@ try { - 异步方法: -```java +```Java EMClient.getInstance().chatManager().asyncRecallMessage(message,ext,new CallBack() { @Override public void onSuccess() { @@ -71,7 +71,7 @@ EMClient.getInstance().chatManager().asyncRecallMessage(message,ext,new CallBack - 若用户在线接收了消息,消息撤回时,该事件中的 `EMRecallMessageInfo` 中的 `recallMessage` 为撤回的消息的内容。 - 若消息发送和撤回时接收方离线,该事件中的 `EMRecallMessageInfo` 中的 `recallMessage` 为空。 -```java +```Java void onMessageRecalledWithExt(List recallMessageInfo){} ``` diff --git a/docs/document/android/message_receipt.md b/docs/document/android/message_receipt.md index c93139af3..71a826daa 100644 --- a/docs/document/android/message_receipt.md +++ b/docs/document/android/message_receipt.md @@ -46,7 +46,7 @@ 1. 开启消息送达功能,即 SDK 初始化时将 `EMOptions#setRequireDeliveryAck` 设置为 `true`。 -```java +```Java // 设置是否需要接收方送达确认,默认 `false` 即不需要。 options.setRequireDeliveryAck(true); ``` @@ -55,7 +55,7 @@ options.setRequireDeliveryAck(true); 3. 发送方监听 `EMMessageListener#onMessageDelivered` 事件,收到接收方的送达回执。你可以在收到该通知时,显示消息的送达状态。 -```java +```Java EMMessageListener msgListener = new EMMessageListener() { // 收到消息。 @Override @@ -82,7 +82,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 1. App 开启已读回执功能,即 SDK 初始化时将 `EMOptions#setRequireAck` 设置为 `true`。 -```java +```Java // 设置是否需要接收方已读确认,默认为 true options.setRequireAck(true); ``` @@ -93,7 +93,7 @@ options.setRequireAck(true); 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```java +```Java try { EMClient.getInstance().chatManager().ackConversationRead(conversationId); } catch (HyphenateException e) { @@ -103,7 +103,7 @@ try { - 接收方在聊天页面打开时,接收到消息时,再根据消息类型发送单个消息已读回执。 -```java +```Java EMClient.getInstance().chatManager().addMessageListener(new EMMessageListener() { ...... @@ -146,7 +146,7 @@ public void sendReadAck(EMMessage message) { 消息发送方可以通过 `EMMessageListener#onMessageRead` 事件监听指定消息是否已读,示例代码如下: -```java +```Java EMMessageListener msgListener = new EMMessageListener() { ...... @Override @@ -181,7 +181,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 1. 开启已读回执功能,即 SDK 初始化时将 `EMOptions#setRequireAck` 设置为 `true`。 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```java +```Java // 设置是否需要接受方已读确认,默认为 `true`。 options.setRequireAck(true); ``` @@ -190,14 +190,14 @@ options.setRequireAck(true); 与单聊消息的 app 层级设置已读回执功能不同,群聊消息是在发送消息时设置指定消息是否需要已读回执。 -```java +```Java EMMessage message = EMMessage.createTxtSendMessage(content, to); message.setIsNeedGroupAck(true); ``` 3. 消息接收方发送群组消息的已读回执。 -```java +```Java public void sendAckMessage(EMMessage message) { if (!validateMessage(message)) { return; @@ -232,7 +232,7 @@ public void sendAckMessage(EMMessage message) { 发送方接收到群组消息已读回执后,其发出消息的属性 `EMMessage#groupAckCount` 会有相应变化。 -```java +```Java EMMessageListener msgListener = new EMMessageListener() { ...... // 接收到群组消息体的已读回执, 表明消息的接收方已经阅读此消息。 @@ -252,7 +252,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 你可以调用 `EMChatManager#asyncFetchGroupReadAcks` 方法从服务器获取单条消息的已读回执的详情。 -```java +```Java // 异步方法。 // msgId 消息 ID。 // pageSize 每次获取群消息已读回执的条数。 diff --git a/docs/document/android/message_retrieve.md b/docs/document/android/message_retrieve.md index 1c16f168d..9bbb00e7c 100644 --- a/docs/document/android/message_retrieve.md +++ b/docs/document/android/message_retrieve.md @@ -50,7 +50,7 @@ 4. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```java +```Java String conversationId = " "; EMConversation.EMConversationType type = EMConversation.EMConversationType.Chat; EMFetchMessageOption option = new EMFetchMessageOption(); @@ -94,7 +94,7 @@ int pageSize,String cursor, 为确保数据可靠,我们建议你每次最多获取 50 条消息,可多次获取。拉取后,SDK 会自动将消息更新到本地数据库。 -```java +```Java // 异步方法。同步方法为 fetchHistoryMessages(String, EMConversationType, int, String, EMConversation.EMSearchDirection)。 EMClient.getInstance().chatManager().asyncFetchHistoryMessage( conversationId, @@ -122,7 +122,7 @@ EMClient.getInstance().chatManager().asyncFetchHistoryMessage( 你也可以调用 `loadMoreMsgFromDB` 方法从本地数据库中分页加载消息,加载的消息会基于消息中的时间戳放入当前会话的内存中。 -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(username); List messages = conversation.getAllMessages(); // startMsgId:查询的起始消息 ID。SDK 从该消息 ID 开始按消息时间戳的逆序加载。如果传入消息的 ID 为空,SDK 从最新消息开始按消息时间戳的逆序获取。 @@ -134,7 +134,7 @@ List messages = conversation.loadMoreMsgFromDB(startMsgId, pagesize); 你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 -```java +```Java // msgId:要获取消息的消息 ID。 EMMessage msg = EMClient.getInstance().chatManager().getMessage(msgId); ``` @@ -145,7 +145,7 @@ EMMessage msg = EMClient.getInstance().chatManager().getMessage(msgId); 每次最多可获取 400 条消息。若未获取到任何消息,SDK 返回空列表。 -```java +```Java //conversationId:会话 ID EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); // Type:消息类型;timeStamp:消息搜索的起始时间戳,单位为毫秒。该参数设置后,SDK 从指定的时间戳的消息开始,按照搜索方向对消息进行搜索。若设置为负数,SDK 从当前时间开始,按消息时间戳的逆序搜索。 @@ -159,7 +159,7 @@ List emMessages = conversation.searchMsgFromDB(EMMessage.Type.TXT, Sy 每次最多可获取 400 条消息。 -```java +```Java //conversationId:会话 ID EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); // startTimeStamp:搜索的起始时间戳;endTimeStamp:搜索的结束时间戳;maxCount:每次获取的消息数量,取值范围为 [1,400]。 @@ -170,7 +170,7 @@ List messageList = conversation.searchMsgFromDB(startTimeStamp,endTim 你可以调用 `getAllMsgCount` 方法从 SDK 本地数据库中获取会话在某个时间段内的全部消息数。 -```java +```Java String conversationId = "pu"; EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); if(conversation!=null) { diff --git a/docs/document/android/message_search.md b/docs/document/android/message_search.md index 7e812af53..114d53ec4 100644 --- a/docs/document/android/message_search.md +++ b/docs/document/android/message_search.md @@ -27,7 +27,7 @@ 你可以调用 `searchMsgFromDB(string keywords, long timeStamp, int maxCount, string from, EMSearchDirection direction)` 方法根据关键字搜索本地数据库中单个会话中指定用户发送的消息,示例代码如下: -```java +```Java //conversationId:会话 ID EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); // keywords:搜索关键字;timeStamp:搜索的起始时间戳;maxCount:每次获取的消息数量,取值范围为 [1,400]。 @@ -43,7 +43,7 @@ List messages = conversation.searchMsgFromDB(keywords, timeStamp, max 若使用该功能,需将 SDK 升级至 V4.4.0 或以上版本。 ::: -```java +```Java String keyWord = "123"; List messages = EMClient.getInstance().chatManager().searchMsgFromDB(keyWord, -1, 200, null, EMConversation.EMSearchDirection.UP, EMConversation.EMMessageSearchScope.ALL); @@ -57,7 +57,7 @@ List messages = EMClient.getInstance().chatManager().searchMsgFromDB( 若使用该功能,需将 SDK 升级至 V4.4.0 或以上版本。 ::: -```java +```Java String keyWord = "123"; String conversationId = "jack"; EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); @@ -73,7 +73,7 @@ List messages = conversation.searchMsgFromDB(keyWord, -1, 200, null, 若使用该功能,需将 SDK 升级至 V4.7.0 或以上版本。 ::: -```java +```Java // count:要查询的消息条数。取值范围为 [1,400]。 // fromuser:会话中发送方的用户 ID。若传空字符串,搜索对发送方不限制。 Set types=new HashSet<>(); @@ -99,7 +99,7 @@ for (int i = 0; i < messages.size(); i++) { 若使用该功能,需将 SDK 升级至 V4.7.0 或以上版本。 ::: -```java +```Java // count:要查询的消息条数。取值范围为 [1,400]。 // fromuser:当前会话中发送方的用户 ID。若传空字符串,搜索对发送方不限制。 Set types=new HashSet<>(); diff --git a/docs/document/android/message_send_receive.md b/docs/document/android/message_send_receive.md index 91baa67e1..b5106d984 100644 --- a/docs/document/android/message_send_receive.md +++ b/docs/document/android/message_send_receive.md @@ -53,7 +53,7 @@ 示例代码: -```java +```Java // 创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊时为对端用户 ID、群聊时为群组 ID,聊天室时为聊天室 ID。 EMMessage message = EMMessage.createTextSendMessage(content, conversationId); @@ -65,7 +65,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 对于聊天室消息,可设置消息优先级。示例代码如下: -```java +```Java EMMessage message = EMMessage.createTextSendMessage(content, conversationId); message.setChatType(ChatType.ChatRoom); // 聊天室消息的优先级。如果不设置,默认值为 `PriorityNormal`,即“普通”优先级。 @@ -75,7 +75,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 2. 通过 `EMChatManager` 将该消息发出。发送消息时可以设置 `EMCallBack` 的实例,获取消息发送状态。 -```java +```Java // 发送消息时可以设置 `EMCallBack` 的实例,获得消息发送的状态。可以在该回调中更新消息的显示状态。例如消息发送失败后的提示等等。 message.setMessageStatusCallback(new EMCallBack() { @Override @@ -106,7 +106,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 对于聊天室消息,你可以通过消息的 `EMMessage#isBroadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```java +```Java EMMessageListener msgListener = new EMMessageListener() { // 收到消息,遍历消息队列,解析和显示。 @@ -133,7 +133,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 此外,发送附件类型消息时,可以在 `onProgress` 回调中获取附件上传的进度,以百分比表示,示例代码如下: -```java +```Java // 发送消息时可以设置 `EMCallBack` 的实例,获得消息发送的状态。可以在该回调中更新消息的显示状态。例如,消息发送失败后的提示等等。 message.setMessageStatusCallback(new EMCallBack() { @Override @@ -164,7 +164,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 1. 发送语音消息前,在应用层录制语音文件。 2. 发送方调用 `createVoiceSendMessage` 方法传入语音文件的 URI、语音时长和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建语音消息,然后调用 `sendMessage` 方法发送消息。SDK 会将语音文件上传至环信服务器。 -```java +```Java // `voiceUri` 为语音文件的本地资源标志符,`duration` 为语音时长(单位为秒)。 EMMessage message = EMMessage.createVoiceSendMessage(voiceUri, duration, toChatUsername); // 设置会话类型,即`EMMessage` 类的 `ChatType` 属性,包含 `Chat`、`GroupChat` 和 `ChatRoom`,表示单聊、群聊或聊天室,默认为单聊。 @@ -177,7 +177,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 4. 接收方收到 `onMessageReceived` 回调,调用 `getRemoteUrl` 或 `getLocalUri` 方法获取语音文件的服务器地址或本地路径,从而获取语音文件。 -```java +```Java EMVoiceMessageBody voiceBody = (EMVoiceMessageBody) msg.getBody(); // 获取语音文件在服务器的地址。 String voiceRemoteUrl = voiceBody.getRemoteUrl(); @@ -190,7 +190,7 @@ Uri voiceLocalUri = voiceBody.getLocalUri(); 发送和接收图片消息的流程如下: 1. 发送方调用 `createImageSendMessage` 方法传入图片的本地资源标志符 URI、设置是否发送原图以及接收方的用户 ID (群聊或聊天室分别为群组 ID 或聊天室 ID)创建图片消息,然后调用 `sendMessage` 方法发送该消息。SDK 会将图片上传至环信服务器,服务器自动生成图片缩略图。 -```java +```Java // `imageUri` 为图片本地资源标志符,`false` 为不发送原图(默认超过 100 KB 的图片会压缩后发给对方),若需要发送原图传 `true`,即设置 `original` 参数为 `true`。 EMMessage message = EMMessage.createImageSendMessage(imageUri, false, toChatUsername); // 会话类型,包含 `Chat`、`GroupChat` 和 `ChatRoom`,表示单聊、群聊或聊天室,默认为单聊。 @@ -206,7 +206,7 @@ SDK 默认自动下载缩略图,即 `EMClient.getInstance().getOptions().setAu 3. 接收方收到 `onMessageReceived` 回调,调用 `downloadAttachment` 下载原图。 -```java +```Java @Override public void onMessageReceived(List messages) { for(EMMessage message : messages) { @@ -236,7 +236,7 @@ public void onMessageReceived(List messages) { 4. 获取图片消息的缩略图和附件。 -```java +```Java EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody(); // 从服务器端获取图片文件。 String imgRemoteUrl = imgBody.getRemoteUrl(); @@ -256,7 +256,7 @@ Uri thumbnailLocalUri = imgBody.thumbnailLocalUri(); 2. 发送方调用 `createVideoSendMessage` 方法传入视频文件的本地资源标志符、缩略图的本地存储路径、视频时长以及接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID),然后调用 `sendMessage` 方法发送消息。SDK 会将视频文件上传至消息服务器。若需要视频缩略图,你需自行获取视频首帧的路径,将该路径传入 `createVideoSendMessage` 方法。 -```java +```Java // 在应用层获取视频首帧 String thumbPath = getThumbPath(videoUri); EMMessage message = EMMessage.createVideoSendMessage(videoUri, thumbPath, videoLength, toChatUsername); @@ -273,7 +273,7 @@ SDK 默认自动下载缩略图,即 `EMClient.getInstance().getOptions().setAu 4. 接收方收到 `onMessageReceived` 回调,可以调用 `EMClient.getInstance().chatManager().downloadAttachment(message)` 方法下载视频原文件。 -```java +```Java /** * 下载视频文件。 */ @@ -298,7 +298,7 @@ private void downloadVideo(final EMMessage message) { 5. 获取视频缩略图和视频原文件。 -```java +```Java // 从服务器端获取视频文件。 String imgRemoteUrl = ((EMVideoMessageBody) body).getRemoteUrl(); // 从服务器获取视频缩略图文件。 @@ -315,7 +315,7 @@ Uri localThumbUri = ((EMVideoMessageBody) body).thumbnailLocalUri(); 1. 发送方调用 `createFileSendMessage` 方法传入文件的本地资源标志符和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建文件消息,然后调用 `sendMessage` 方法发送文件消息。SDK 将文件上传至环信服务器。 -```java +```Java // `fileLocalUri` 为本地资源标志符。 EMMessage message = EMMessage.createFileSendMessage(fileLocalUri, toChatUsername); // 如果是群聊,设置 `ChatType` 为 `GroupChat`,该参数默认是单聊(`Chat`)。 @@ -327,7 +327,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 2. 接收方收到 `onMessageReceived` 回调,调用 `downloadAttachment` 方法下载文件。 -```java +```Java /** * 下载文件。 */ @@ -352,7 +352,7 @@ private void downloadFile(final EMMessage message) { 3. 调用以下方法从服务器或本地获取文件附件: -```java +```Java EMNormalFileMessageBody fileMessageBody = (EMNormalFileMessageBody) message.getBody(); // 从服务器获取文件。 String fileRemoteUrl = fileMessageBody.getRemoteUrl(); @@ -364,7 +364,7 @@ Uri fileLocalUri = fileMessageBody.getLocalUri(); 当你要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```java +```Java // `latitude` 为纬度,`longitude` 为经度,`locationAddress` 为具体位置内容。 EMMessage message = EMMessage.createLocationSendMessage(latitude, longitude, locationAddress, toChatUsername); // 如果是群聊,设置 `ChatType` 为 `GroupChat`,该参数默认是单聊(`Chat`)。 @@ -382,7 +382,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 透传消息发送后,不支持撤回。 ::: -```java +```Java EMMessage cmdMsg = EMMessage.createSendMessage(EMMessage.Type.CMD); // 支持单聊、群聊和聊天室,默认为单聊。 // 若为群聊,添加下行代码。 @@ -403,7 +403,7 @@ EMClient.getInstance().chatManager().sendMessage(cmdMsg); 请注意透传消息的接收方,也是由单独的回调进行通知,方便用户进行不同的处理。 -```java +```Java EMMessageListener msgListener = new EMMessageListener(){ // 收到消息。 @Override @@ -437,7 +437,7 @@ EMMessageListener msgListener = new EMMessageListener(){ 以下示例代码展示如何发送输入状态的透传消息。 -```java +```Java //发送表示正在输入的透传消息 private static final String MSG_TYPING_BEGIN = "TypingBegin"; private long previousChangedTimeStamp; @@ -463,7 +463,7 @@ private void sendBeginTyping() { 以下示例代码展示如何接受和解析输入状态的透传消息。 -```java +```Java private static final int TYPING_SHOW_TIME = 10000; private static final int MSG_TYPING_END = 1; private Handler typingHandler; @@ -515,7 +515,7 @@ private void cancelTimer() { 除了几种消息之外,你可以自己定义消息类型,方便业务处理,即首先设置一个消息类型名称,然后可添加多种自定义消息。 -```java +```Java EMMessage customMessage = EMMessage.createSendMessage(EMMessage.Type.CUSTOM); // `event` 为需要传递的自定义消息事件,比如礼物消息,可以设置: String event = "gift"; @@ -565,7 +565,7 @@ EMClient.getInstance().chatManager().sendMessage(customMessage); 示例代码如下: -```java +```Java String title = "A和B的聊天记录"; String summary = "A:这是A的消息内容\nB:这是B的消息内容"; String compatibleText = "您当前的版本不支持该消息,请升级到最新版本"; @@ -597,7 +597,7 @@ EMClient.getInstance().chatManager().sendMessage(message); - 若附件已存在,该方法会直接解析附件并返回原始消息列表。 - 若附件不存在,该方法首先下载附件,然后解析附件并返回原始消息列表。 -```java +```Java EMClient.getInstance().chatManager().downloadAndParseCombineMessage(combineMessage, new EMValueCallBack>() { @Override public void onSuccess(List value) { @@ -632,7 +632,7 @@ EMClient.getInstance().chatManager().downloadAndParseCombineMessage(combineMessa 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```java +```Java // 创建一条文本消息。 EMMessage message = EMMessage.createTextSendMessage(content, groupId); // 会话类型:群组和聊天室聊天,分别为 `GroupChat` 和 `ChatRoom`。 @@ -653,7 +653,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 当目前消息类型不满足用户需求时,可以在扩展部分保存更多信息,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```java +```Java EMMessage message = EMMessage.createTxtSendMessage(content, toChatUsername); // 增加自定义属性。 message.setAttribute("attribute1", "value"); diff --git a/docs/document/android/message_traffic_statis.md b/docs/document/android/message_traffic_statis.md index 359efc644..6aa12659e 100644 --- a/docs/document/android/message_traffic_statis.md +++ b/docs/document/android/message_traffic_statis.md @@ -43,7 +43,7 @@ SDK 仅统计本地消息的流量,而非消息的实际流量。一般而言 示例代码如下: -```java +```Java EMMessageStatistics statistics = EMClient.getInstance().statisticsManager().getMessageStatistics(messageId); ``` @@ -51,7 +51,7 @@ EMMessageStatistics statistics = EMClient.getInstance().statisticsManager().getM 你可以统计一定时间段内发送和/或接收的指定或全部类型的消息,示例代码如下: -```java +```Java int number = EMClient.getInstance().statisticsManager().getMessageCount(startTime, endTime, direct, style); ``` @@ -61,6 +61,6 @@ int number = EMClient.getInstance().statisticsManager().getMessageCount(startTim 示例代码如下: -```java +```Java long size = EMClient.getInstance().statisticsManager().getMessageSize(startTime, endTime, direct, style); ``` \ No newline at end of file diff --git a/docs/document/android/message_translation.md b/docs/document/android/message_translation.md index dc41ce682..8bd3635f9 100644 --- a/docs/document/android/message_translation.md +++ b/docs/document/android/message_translation.md @@ -34,7 +34,7 @@ SDK 支持你通过调用 API 在项目中实现如下功能: 无论是按需翻译还是自动翻译,都需先调用 `fetchSupportLanguages` 获取支持的翻译语言。获取支持的翻译语言的示例代码如下: -```java +```Java //获取支持的翻译语言。 EMClient.getInstance().chatManager().fetchSupportLanguages(new EMValueCallBack>{}); ``` @@ -43,7 +43,7 @@ EMClient.getInstance().chatManager().fetchSupportLanguages(new EMValueCallBack languageList = new ArrayList<>(); languageList.add("en"); ... @@ -55,7 +55,7 @@ EMClient.getInstance().chatManager().translateMessage( 翻译成功之后,译文信息会保存到消息中。调用 `getTranslations` 获取译文内容。示例代码如下: -```java +```Java EMTextMessageBody body = (EMTextMessageBody)message.getBody(); List infoList = body.getTranslations(); ``` @@ -64,7 +64,7 @@ List infoList = body.getTranslations(); 创建消息时,发送方设置 `MessageBody` 中的 `setTargetLanguages` 字段为译文语言,设置过程如下: -```java +```Java ... EMTextMessageBody body = new EMTextMessageBody("文本内容"); body.setTargetLanguages(languageList); @@ -75,7 +75,7 @@ body.setTargetLanguages(languageList); 接收方收到消息后,调用 `getTranslations` 获取消息的译文列表,示例代码如下: -```java +```Java EMTextMessageBody body = (EMTextMessageBody)message.getBody(); List infoList = body.getTranslations(); ``` diff --git a/docs/document/android/message_update.md b/docs/document/android/message_update.md index ca5812144..44decfea0 100644 --- a/docs/document/android/message_update.md +++ b/docs/document/android/message_update.md @@ -25,13 +25,13 @@ - 直接调用 `EMChatManager#updateMessage` 方法更新 SDK 本地数据库中的消息。 -```java +```Java EMClient.getInstance().chatManager().updateMessage(message); ``` - 若正在使用 `EMConversation` 类,可以先获取会话,再调用 `EMConversation#updateMessage` 方法更新 SDK 本地数据库会话中的消息。 -```java +```Java EMConversation conversation = EMClient.getInstance().chatManager().getConversation(conversationId); conversation.updateMessage(message); ``` diff --git a/docs/document/android/moderation.md b/docs/document/android/moderation.md index c0b97b568..0a25da5c9 100644 --- a/docs/document/android/moderation.md +++ b/docs/document/android/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```java +```Java // msgid:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 // reason:举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/android/multi_device.md b/docs/document/android/multi_device.md index 2dd0493de..3aa04efb8 100644 --- a/docs/document/android/multi_device.md +++ b/docs/document/android/multi_device.md @@ -61,7 +61,7 @@ Android SDK 初始化时会生成登录 ID 用于在多设备登录和消息推 你可以调用 `getSelfIdsOnOtherPlatform` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```java +```Java // 同步方法,会阻塞当前线程。异步方法为 asyncGetSelfIdsOnOtherPlatform(EMValueCallBack)。 List ids = EMClient.getInstance().contactManager().getSelfIdsOnOtherPlatform(); // 选择一个登录 ID 作为消息接收方。 @@ -76,7 +76,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 你可以调用 `getLoggedInDevicesFromServer` 或 `getLoggedInDevicesFromServerWithToken` 方法通过传入用户 ID 和登录密码或用户 token 从服务器获取指定账号的在线登录设备的列表。调用该方法后,在 SDK 返回的信息中,`EMDeviceInfo` 中的 `mDeviceName` 属性表示自定义设备名称,若未自定义设备名称,返回设备型号。 -```java +```Java try { List deviceInfos = EMClient.getInstance().getLoggedInDevicesFromServer("username","pwd"); } catch (HyphenateException e) { @@ -100,7 +100,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 登录成功后才会将该设置发送到服务器。 ::: -```java +```Java EMOptions options = new EMOptions(); options.setCustomDeviceName("你的自定义设备名称"); EMClient.getInstance().init(context,options); @@ -142,7 +142,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 登录成功后才会将该设置发送到服务器。 ::: -```java +```Java EMOptions options=new EMOptions(); options.setCustomOSPlatform(1); EMClient.getInstance().init(context,options); @@ -158,7 +158,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 登录成功后才会将该设置发送到服务器。 ::: -```java +```Java EMOptions options = new EMOptions(); options.setLoginCustomExt("你的自定义扩展信息json字符串"); EMClient.getInstance().init(context,options); @@ -192,7 +192,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 不登录也可以使用该接口。 ::: -```java +```Java // username:账户名称,password:账户密码。需要在异步线程中执行。 List deviceInfos = EMClient.getInstance().getLoggedInDevicesFromServer(username, password); // username:账户名称,password:账户密码, resource:设备 ID。需要在异步线程中执行。 @@ -208,7 +208,7 @@ EMClient.getInstance().kickDevice(username, password, deviceInfos.get(selectedIn 不登录也可以使用该接口。 ::: -```java +```Java try { EMClient.getInstance().kickAllDevices("username","pwd"); } catch (HyphenateException e) { @@ -232,7 +232,7 @@ EMClient.getInstance().kickDevice(username, password, deviceInfos.get(selectedIn 多端多设备场景下,无聊天室操作相关事件,只支持聊天室中发送和接收消息的同步。 ::: -```java +```Java //实现 `EMMultiDeviceListener` 监听其他设备上的操作。 private class ChatEMMultiDeviceListener implements EMMultiDeviceListener { //@param event 事件。 @@ -400,6 +400,6 @@ EMClient.getInstance().removeMultiDeviceListener(chatMultiDeviceListener); 当 PC 端和移动端登录同一个账号时,在移动端可以通过调用方法获取到 PC 端的登录 ID。该登录 ID 相当于特殊的好友用户 ID,可以直接使用于聊天,使用方法与好友的用户 ID 类似。 -```java +```Java List selfIds = EMClient.getInstance().contactManager().getSelfIdsOnOtherPlatform(); ``` \ No newline at end of file diff --git a/docs/document/android/overview.md b/docs/document/android/overview.md index 3ac6e7b27..3fcca7fb1 100644 --- a/docs/document/android/overview.md +++ b/docs/document/android/overview.md @@ -34,7 +34,7 @@ 初始化示例代码: -```java +```Java EMOptions options = new EMOptions(); options.setAppKey("Your appkey"); ......// 其他 EMOptions 配置。 @@ -64,7 +64,7 @@ EMClient.getInstance().init(context, options); 若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。 -```java +```Java // 注册失败会抛出 HyphenateException。 EMClient.getInstance().createAccount(mAccount, mPassword);// 同步方法。 ``` @@ -90,7 +90,7 @@ EMClient.getInstance().createAccount(mAccount, mPassword);// 同步方法。 **用户 ID + 密码** 登录是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合密码规则要求。 -```java +```Java EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { // 登录成功回调 @Override @@ -113,7 +113,7 @@ EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 ::: -```java +```Java EMClient.getInstance().loginWithToken(mAccount, mToken, new EMCallBack() { // 登录成功回调 @Override @@ -144,13 +144,13 @@ EMClient.getInstance().loginWithToken(mAccount, mToken, new EMCallBack() { 同步方法: -```java +```Java EMClient.getInstance().logout(true); ``` 异步方法: -```java +```Java EMClient.getInstance().logout(true, new EMCallBack() { @Override @@ -169,7 +169,7 @@ EMClient.getInstance().logout(true, new EMCallBack() { 你可以通过注册连接监听确认连接状态。 -```java +```Java EMConnectionListener connectionListener = new EMConnectionListener() { @Override public void onConnected() { @@ -244,7 +244,7 @@ EMClient.getInstance().removeConnectionListener(connectionListener); SDK 默认输出调试信息(所有日志,包括调试信息、警告和错误),如果只需输出错误日志,需要关闭调试模式。 -```java +```Java // 需要在 SDK 初始化后调用 EMClient.getInstance().setDebugMode(false); ``` diff --git a/docs/document/android/presence.md b/docs/document/android/presence.md index 77689a1ef..217bef209 100644 --- a/docs/document/android/presence.md +++ b/docs/document/android/presence.md @@ -48,7 +48,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `com.hyphenate.chat.EMPresenceManager#subscribePresences` 方法订阅指定用户的在线状态,示例代码如下: -```java +```Java EMClient.getInstance().presenceManager().subscribePresences(contactsFromServer, 1 * 24 * 3600, new EMValueCallBack>() { @Override public void onSuccess(List presences) { @@ -77,7 +77,7 @@ EMClient.getInstance().presenceManager().subscribePresences(contactsFromServer, 用户在线时,可调用 `com.hyphenate.chat.EMPresenceManager#publishPresence` 方法发布自定义在线状态: -```java +```Java EMClient.getInstance().presenceManager().publishPresence("自定义状态", new EMCallBack() { @Override public void onSuccess() { @@ -97,13 +97,13 @@ EMClient.getInstance().presenceManager().publishPresence("自定义状态", new 添加用户在线状态的监听器,示例代码如下: -```java +```Java EMClient.getInstance().presenceManager().addListener(new MyPresenceListener()); ``` 参考如下示例代码,使用 `EMPresenceListener` 监听器实现以下接口。当订阅的用户在线状态发生变化时,会收到 `onPresenceUpdated` 回调。 -```java +```Java public interface EMPresenceListener { void onPresenceUpdated(List presences); } @@ -113,7 +113,7 @@ public interface EMPresenceListener { 若取消指定用户的在线状态订阅,可调用 `com.hyphenate.chat.EMPresenceManager#unsubscribePresences` 方法,示例代码如下: -```java +```Java EMClient.getInstance().presenceManager().unsubscribePresences(contactsFromServer, new EMCallBack() { @Override public void onSuccess() { @@ -131,7 +131,7 @@ EMClient.getInstance().presenceManager().unsubscribePresences(contactsFromServer 为方便用户管理订阅关系,SDK 提供 `com.hyphenate.chat.EMPresenceManager#fetchSubscribedMembers` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```java +```Java EMClient.getInstance().presenceManager().fetchSubscribedMembers(pageNum, pageSize, new EMValueCallBack>() { @Override public void onSuccess(List subscribedMembers) { @@ -149,7 +149,7 @@ EMClient.getInstance().presenceManager().fetchSubscribedMembers(pageNum, pageSiz 如果不关注用户的在线状态变更,你可以调用 `com.hyphenate.chat.EMPresenceManager#fetchPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```java +```Java // contactsList:要查询状态的用户 ID,每次最多可传 100 个用户 ID。 EMClient.getInstance().presenceManager().fetchPresenceStatus(contactsList, new EMValueCallBack>() { @Override diff --git a/docs/document/android/privatecloud.md b/docs/document/android/privatecloud.md index 65c3a6d16..49b37d6d5 100644 --- a/docs/document/android/privatecloud.md +++ b/docs/document/android/privatecloud.md @@ -6,7 +6,7 @@ SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法: -```java +```Java EMOptions emOptions = new EMOptions();//实例化 EMOptions 对象 emOptions.setRestServer("10.10.10.10:00");//设置私有云 REST 地址(ip/域名:port) emOptions.setIMServer("10.10.10.10");//设置私有云 IM 地址 @@ -19,7 +19,7 @@ EMClient.getInstance().init(context,emOptions);//最后初始化 SDK 如果需要配置 HTTPS 只需在 REST 地址前加一个前缀。 ::: -```java +```Java emOptions.setRestServer("https://10.10.10.10:00");//设置私有云 REST 地址(ip:port) ``` @@ -28,7 +28,7 @@ emOptions.setRestServer("https://10.10.10.10:00");//设置私有云 REST 地址 1. 服务器端配置 DNS 地址表 2. 从服务器端动态获取地址 -```java +```Java EMOptions emOptions = new EMOptions(); emOptions.setDnsUrl("url");//从服务器端动态获取地址 EMClient.getInstance().init(context,emOptions);//初始化 SDK diff --git a/docs/document/android/push/push_display.md b/docs/document/android/push/push_display.md index b3fe2f126..4daff3cab 100644 --- a/docs/document/android/push/push_display.md +++ b/docs/document/android/push/push_display.md @@ -14,14 +14,14 @@ 你可以调用 `updatePushNickname` 方法设置推送通知中显示的昵称,如以下代码示例所示: -```java +```Java // 需要异步处理。 EMClient.getInstance().pushManager().updatePushNickname("pushNickname"); ``` 你也可以调用 `updatePushDisplayStyle` 设置推送通知的显示样式,如下代码示例所示: -```java +```Java // 设置为简单样式。 EMPushManager.DisplayStyle displayStyle = EMPushManager.DisplayStyle.SimpleBanner; // 需要异步处理。 @@ -49,7 +49,7 @@ EMClient.getInstance().pushManager().updatePushDisplayStyle(displayStyle); 你可以调用 `getPushConfigsFromServer` 获取推送通知中的显示属性,如以下代码示例所示: -```java +```Java EMPushConfigs pushConfigs = EMClient.getInstance().pushManager().getPushConfigsFromServer(); // 获取推送显示昵称。 String nickname = pushConfigs.getDisplayNickname(); @@ -96,7 +96,7 @@ EMPushManager.DisplayStyle style = pushConfigs.getDisplayStyle(); 这种情况下,创建消息时无需传入 `titleArgs` 和 `contentArgs` 参数。 -```java +```Java // 下面以文本消息为例,其他类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("消息内容"); @@ -152,7 +152,7 @@ EMClient.getInstance().chatManager().sendMessage(message); ![img](/images/android/push/push_template_custom_example.png) -```java +```Java // 下面以文本消息为例,其他类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("消息内容"); @@ -193,7 +193,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 若发送方在发送消息时使用了推送模板,则推送通知栏中的显示内容以发送方的推送模板为准。 ::: -```java +```Java EMClient.getInstance().pushManager().setPushTemplate("Template Name", new EMCallBack() { @Override public void onSuccess() { @@ -211,7 +211,7 @@ EMClient.getInstance().pushManager().setPushTemplate("Template Name", new EMCall 创建推送消息时,你可以设置消息扩展字段自定义要显示的推送标题 `em_push_title` 和推送内容 `em_push_content`。 -```java +```Java // 这里以文本消息为例,附件等类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("message content"); diff --git a/docs/document/android/push/push_extension.md b/docs/document/android/push/push_extension.md index ea2165ec3..08f6ddac8 100644 --- a/docs/document/android/push/push_extension.md +++ b/docs/document/android/push/push_extension.md @@ -8,7 +8,7 @@ 创建推送消息时,可以在消息中添加自定义字段,实现自定义推送设置。 -```java +```Java // 下面以文本消息为例,附件等类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("message content"); @@ -60,7 +60,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 设置强制推送后,用户发送消息时会忽略接收方的免打扰设置,不论是否处于免打扰时间段都会正常向接收方推送消息。 -```java +```Java // 下面以文本消息为例,图片、文件等类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("test"); @@ -80,7 +80,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方在发送消息时设置,而免打扰模式为接收方设置在指定时间段内不接收推送通知。 -```java +```Java // 下面以文本消息为例,图片、文件等类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("test"); diff --git a/docs/document/android/push/push_fcm.md b/docs/document/android/push/push_fcm.md index e8441bb85..5a0535192 100644 --- a/docs/document/android/push/push_fcm.md +++ b/docs/document/android/push/push_fcm.md @@ -128,7 +128,7 @@ plugins { 3. 在环信即时通讯 IM SDK 中启用 FCM。 -```java +```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); @@ -165,7 +165,7 @@ EMPushHelper.getInstance().setPushListener(new PushListener() { 在应用初始化时,FCM SDK 会为用户的设备上的客户端应用生成唯一的注册 token。由于 FCM 使用该 token 确定要将推送消息发送给哪个设备,因此,环信服务器需要获得客户端应用的注册 token 才能将通知请求发送给 FCM,然后 FCM 验证注册 token,将通知消息发送给 Android 设备。建议该段代码放在成功登录即时通讯 IM 后的主页面。 -```java +```Java // 查看是否支持 FCM if(GoogleApiAvailabilityLight.getInstance().isGooglePlayServicesAvailable(MainActivity.this) != ConnectionResult.SUCCESS) { return; @@ -189,7 +189,7 @@ FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteL 重写 `FirebaseMessagingService` 中的 `onNewToken` 方法,device token 更新后及时更新到环信即时通讯 IM SDK。 -```java +```Java public class MyFCMMSGService extends FirebaseMessagingService { private static final String TAG = "EMFCMMSGService"; diff --git a/docs/document/android/push/push_honor.md b/docs/document/android/push/push_honor.md index 44262af4f..116ecec01 100644 --- a/docs/document/android/push/push_honor.md +++ b/docs/document/android/push/push_honor.md @@ -84,7 +84,7 @@ 3. 初始化配置。可以参考 Demo 中 demoHelper 的 `initPush()` 方法中的荣耀推送配置。 -```java +```Java // 初始化 IM,开启荣耀推送。 EMOptions options = new EMOptions(); EMPushConfig.Builder builder = new EMPushConfig.Builder(context); @@ -140,7 +140,7 @@ EMPushHelper.getInstance().setPushListener(new PushListener() { 对于注册荣耀推送服务,需自定义 Service,继承荣耀推送的 `HonorMessageService` 类,重写 `onNewToken` 方法。 -```java +```Java public class HONORPushService extends HonorMessageService { //Device token 发生变化时,会触发 `onNewToken` 回调返回新 Token。 @Override @@ -166,7 +166,7 @@ public class HONORPushService extends HonorMessageService { 如果当前 IM 的登录账号已经绑定了 device token,则 IM SDK 不会上传 token。 -```java +```Java if (HonorPushClient.getInstance().checkSupportHonorPush(this)){ // 获取荣耀 device token。 HonorPushClient.getInstance().getPushToken(new HonorPushCallback() { @@ -200,7 +200,7 @@ if (HonorPushClient.getInstance().checkSupportHonorPush(this)){ 以下为环信 IM 提供的通知栏消息点击动作的扩展字段: -```java +```Java { "payload":{ "ext":{ @@ -214,7 +214,7 @@ if (HonorPushClient.getInstance().checkSupportHonorPush(this)){ 示例代码如下: -```java +```Java // 下面以 TXT 消息为例,图片、文件等类型的消息设置方法相同。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT); EMTextMessageBody txtBody = new EMTextMessageBody("test"); @@ -242,7 +242,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 客户端应用主 Activity 中接收数据。在 `YourActivity` 类的 `onCreate` 方法中实现数据读取。 -```java +```Java private void getIntentData(Intent intent) { if (null != intent) { // 获取 data 里的值 @@ -263,7 +263,7 @@ private void getIntentData(Intent intent) { 在 app 级根目录下打开混淆配置文件 `proguard-rules.pro`,加入排除荣耀推送 SDK 的混淆配置脚本。 -```java +```Java -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions diff --git a/docs/document/android/push/push_huawei.md b/docs/document/android/push/push_huawei.md index da762761a..2bfe74e30 100644 --- a/docs/document/android/push/push_huawei.md +++ b/docs/document/android/push/push_huawei.md @@ -51,7 +51,7 @@ 打开应用,初始化环信 IM SDK 成功且成功登录后,获取一次华为推送 token,将 token 上传至环信服务器,与 IM 的登录账号绑定。 -```java +```Java /** * 申请华为 Push Token: * 1. getToken 接口只有在 AppGallery Connect 平台开通服务后申请 token 才会返回成功。 @@ -113,7 +113,7 @@ 4. 在即时通讯 IM SDK 初始化时,配置启用华为推送。 - ```java + ```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); diff --git a/docs/document/android/push/push_meizu.md b/docs/document/android/push/push_meizu.md index ef96379ea..016d52ee8 100644 --- a/docs/document/android/push/push_meizu.md +++ b/docs/document/android/push/push_meizu.md @@ -87,7 +87,7 @@ 3. 在即时通讯 IM SDK 初始化时,配置启用魅族推送。 - ```java + ```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); diff --git a/docs/document/android/push/push_notification_mode_dnd.md b/docs/document/android/push/push_notification_mode_dnd.md index d5678fd2a..0003a7de8 100644 --- a/docs/document/android/push/push_notification_mode_dnd.md +++ b/docs/document/android/push/push_notification_mode_dnd.md @@ -60,7 +60,7 @@ 你可以调用 `EMPushManager#syncSilentModeConversationsFromServer` 方法从服务器同步所有会话的推送通知方式设置。同步后成功后的结果会存储到本地数据库,然后你可以通过`EMConversation#pushRemindType` 查询当前会话的推送通知方式。 -```java +```Java //同步会话的推送通知方式 EMClient.getInstance().pushManager().syncSilentModeConversationsFromServer(new EMCallBack() { @Override @@ -87,7 +87,7 @@ if(conversation!=null) { 在本机上调用 `EMPushManager#setSilentModeForConversation` 设置会话的推送通知方式,在多设备事件 `EMMultiDeviceListener#onConversationEvent` 里会回调当前操作,此时参数 `event` 的值为 `EMMultiDeviceListener#CONVERSATION_MUTE_INFO_CHANGED`。 -```java +```Java //对会话设置推送通知方式 String conversationId = "pu"; EMSilentModeParam emSilentModeParam = new EMSilentModeParam(EMSilentModeParam.EMSilentModeParamType.REMIND_TYPE); @@ -142,7 +142,7 @@ EMClient.getInstance().addMultiDeviceListener(new EMMultiDeviceListener() { 你可以调用 `setSilentModeForAll` 方法设置 app 级别的推送通知,并通过指定 `EMSilentModeParam` 字段设置推送通知方式和免打扰模式,如下代码示例所示: -```java +```Java //设置推送通知方式为 `MENTION_ONLY`。 EMSilentModeParam param = new EMSilentModeParam(EMSilentModeParam.EMSilentModeParamType.REMIND_TYPE) .setRemindType(EMPushManager.EMPushRemindType.MENTION_ONLY); @@ -163,7 +163,7 @@ EMClient.getInstance().pushManager().setSilentModeForAll(param, new EMValueCallB 你可以调用 `getSilentModeForAll` 方法获取 app 级别的推送通知设置,如以下代码示例所示: -```java +```Java EMClient.getInstance().pushManager().getSilentModeForAll(new EMValueCallBack(){ @Override public void onSuccess(EMSilentModeResult result) { @@ -191,7 +191,7 @@ EMClient.getInstance().pushManager().getSilentModeForAll(new EMValueCallBack(){ @Override public void onSuccess(EMSilentModeResult result) { @@ -236,7 +236,7 @@ EMClient.getInstance().pushManager().getSilentModeForConversation(conversationId 你可以调用 `getSilentModeForConversations` 方法获取多个会话的推送通知设置,如以下代码示例所示: -```java +```Java EMClient.getInstance().pushManager().getSilentModeForConversations(conversationList, new EMValueCallBack>(){ @Override public void onSuccess(Map value) {} @@ -250,6 +250,6 @@ EMClient.getInstance().pushManager().getSilentModeForConversations(conversationL 你可以调用 `clearRemindTypeForConversation` 方法清除指定会话的推送通知方式的设置。清除后,默认情况下,此会话会继承 app 的设置。 -```java +```Java EMClient.getInstance().pushManager().clearRemindTypeForConversation(conversationId, conversationType, new EMCallBack(){}); ``` diff --git a/docs/document/android/push/push_oppo.md b/docs/document/android/push/push_oppo.md index 31077a967..c82758671 100644 --- a/docs/document/android/push/push_oppo.md +++ b/docs/document/android/push/push_oppo.md @@ -72,7 +72,7 @@ 3. 在即时通讯 IM SDK 初始化时,配置启用 OPPO 推送。 - ```java + ```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); @@ -85,6 +85,6 @@ 4. 调用 OPPO 推送的初始化方法。 - ```java + ```Java HeytapPushManager.init(context, true); ``` \ No newline at end of file diff --git a/docs/document/android/push/push_overview.md b/docs/document/android/push/push_overview.md index ea2b7191a..27efedc17 100644 --- a/docs/document/android/push/push_overview.md +++ b/docs/document/android/push/push_overview.md @@ -78,7 +78,7 @@ SDK 内部会按照以上顺序检测设备的推送支持情况。如果未设 你需要在 SDK 初始化时进行推送接口的配置。 -```java +```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); @@ -96,7 +96,7 @@ EMClient.getInstance().init(this, options); 如果你在项目中开启了混淆,请将以下规则添加到你的混淆规则中: -```java +```Java -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** ``` diff --git a/docs/document/android/push/push_parsing.md b/docs/document/android/push/push_parsing.md index b79256323..c542fa3c0 100644 --- a/docs/document/android/push/push_parsing.md +++ b/docs/document/android/push/push_parsing.md @@ -29,7 +29,7 @@ 重写 `FirebaseMessagingService.onMessageReceived` 方法可以在 `RemoteMessage` 对象中获取自定义扩展: -```java +```Java public class EMFCMMSGService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { @@ -49,7 +49,7 @@ public class EMFCMMSGService extends FirebaseMessagingService { `RemoteMessage` 对象中的扩展信息的数据结构如下: -```java +```Java { "t":"receiver", "f":"fromUsername", @@ -63,7 +63,7 @@ public class EMFCMMSGService extends FirebaseMessagingService { 华为推送字段默认在应用启动页的 `onCreate` 方法中可以获取到,如下所示: -```java +```Java public class SplashActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { @@ -85,7 +85,7 @@ public class SplashActivity extends BaseActivity { 重写 `EMMiMsgReceiver.onNotificationMessageClicked` 方法可以在 `MiPushMessage` 对象中获取自定义扩展: -```java +```Java public class MiMsgReceiver extends EMMiMsgReceiver { @Override @@ -113,7 +113,7 @@ public class MiMsgReceiver extends EMMiMsgReceiver { 对于版本号为 480,版本名为 3.0.0.0 之前的推送 SDK,重写 `EMVivoMsgReceiver.onNotificationMessageClicked` 方法可以在 `UPSNotificationMessage` 对象中获取自定义扩展。 -```java +```Java public class MyVivoMsgReceiver extends EMVivoMsgReceiver { @Override public void onNotificationMessageClicked(Context context, UPSNotificationMessage upsNotificationMessage) { diff --git a/docs/document/android/push/push_translation.md b/docs/document/android/push/push_translation.md index 64a457bdd..ec16b850b 100644 --- a/docs/document/android/push/push_translation.md +++ b/docs/document/android/push/push_translation.md @@ -6,7 +6,7 @@ 以下代码示例显示了如何设置和获取推送通知的首选语言: -```java +```Java // 设置离线推送的首选语言。 EMClient.getInstance().pushManager().setPreferredNotificationLanguage("en", new EMCallBack(){}); diff --git a/docs/document/android/push/push_vivo.md b/docs/document/android/push/push_vivo.md index 625baa5c2..1ed86300c 100644 --- a/docs/document/android/push/push_vivo.md +++ b/docs/document/android/push/push_vivo.md @@ -67,7 +67,7 @@ 3. 在即时通讯 IM SDK 初始化的时,配置启用 VIVO 推送。 - ```java + ```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); diff --git a/docs/document/android/push/push_xiaomi.md b/docs/document/android/push/push_xiaomi.md index 6d418b317..317867141 100644 --- a/docs/document/android/push/push_xiaomi.md +++ b/docs/document/android/push/push_xiaomi.md @@ -116,7 +116,7 @@ 4. 在即时通讯 IM SDK 初始化的时候,配置启用小米推送。 - ```java + ```Java EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); diff --git a/docs/document/android/quickstart.md b/docs/document/android/quickstart.md index 896def1e0..2096ad37a 100644 --- a/docs/document/android/quickstart.md +++ b/docs/document/android/quickstart.md @@ -127,7 +127,7 @@ implementation 'io.hyphenate:hyphenate-sdk-lite:3.7.5' // 精简版,只包含I 在 `app/proguard-rules.pro` 文件中添加如下行,防止混淆 SDK 的代码: -```java +```Java -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** ``` @@ -136,13 +136,13 @@ implementation 'io.hyphenate:hyphenate-sdk-lite:3.7.5' // 精简版,只包含I 当同时集成环信 SDK 4.11.0 和声网 RTM SDK 2.2.0 或 RTC SDK 4.3.0 及以上版本时,由于同时包含 `libaosl.so` 库,编译时可能会出现以下错误: -```java +```Java com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'lib/x86/libaosl.so' ``` 可在 app 的 `build.gradle` 文件的 Android 节点中添加 `packagingOptions` 节点,指定在构建过程中优先选择第一个匹配的文件: -```java +```Java android { // ... packagingOptions { @@ -166,7 +166,7 @@ android { 在**主进程**中进行初始化: -```java +```Java EMOptions options = new EMOptions(); options.setAppKey("Your appkey"); ......// 其他 EMOptions 配置。 @@ -177,7 +177,7 @@ EMClient.getInstance().init(context, options); 可以使用如下代码创建账户: -```java +```Java try { // 注册失败会抛出 HyphenateException。 // 同步方法,会阻塞当前线程。 @@ -198,7 +198,7 @@ try { 使用如下代码实现用户登录: -```java +```Java EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { // 登录成功回调 @Override @@ -228,7 +228,7 @@ EMClient.getInstance().login(mAccount, mPassword, new EMCallBack() { ### 4. 发送一条单聊消息 -```java +```Java // `content` 为要发送的文本内容,`toChatUsername` 为对方的账号。 EMMessage message = EMMessage.createTextSendMessage(content, toChatUsername); // 发送消息 diff --git a/docs/document/android/reaction.md b/docs/document/android/reaction.md index fa1fc4f2c..d97eb6527 100644 --- a/docs/document/android/reaction.md +++ b/docs/document/android/reaction.md @@ -43,7 +43,7 @@ Reaction 场景示例如下: 示例代码如下: -```java +```Java // 添加 Reaction。 EMClient.getInstance().chatManager().asyncAddReaction(message.getMsgId(), reaction, new EMCallBack() { @Override @@ -81,7 +81,7 @@ EMClient.getInstance().chatManager().addMessageListener(listener); 示例代码如下: -```java +```Java // 删除 Reaction。 EMClient.getInstance().chatManager().asyncRemoveReaction(message.getMsgId(), reaction, new EMCallBack() { @Override @@ -117,7 +117,7 @@ EMClient.getInstance().chatManager().addMessageListener(listener); 调用 `asyncGetReactionList` 可以从服务器获取多条指定消息的 Reaction 概览列表,列表内容包含 Reaction 内容,添加或移除 Reaction 的用户数量,以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下: -```java +```Java EMClient.getInstance().chatManager().asyncGetReactionList(msgIdList, EMMessage.ChatType.Chat, groupId, new EMValueCallBack>>() { @Override public void onSuccess(Map> stringListMap) { @@ -135,7 +135,7 @@ EMClient.getInstance().chatManager().asyncGetReactionList(msgIdList, EMMessage.C 调用 `asyncGetReactionDetail` 可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容,添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```java +```Java EMClient.getInstance().chatManager().asyncGetReactionDetail(mMsgId, emojiconId, pageCursor, 30, new EMValueCallBack>() { @Override diff --git a/docs/document/android/room_attributes.md b/docs/document/android/room_attributes.md index aec8d40ac..aa8e48b42 100644 --- a/docs/document/android/room_attributes.md +++ b/docs/document/android/room_attributes.md @@ -35,7 +35,7 @@ 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchChatRoomAnnouncement(String, EMValueCallBack)。 String announcement = EMClient.getInstance().chatroomManager().fetchChatRoomAnnouncement(chatRoomId); @@ -47,7 +47,7 @@ String announcement = EMClient.getInstance().chatroomManager().fetchChatRoomAnno 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncUpdateChatRoomAnnouncement(String, String, EMCallBack)。 EMClient.getInstance().chatroomManager().updateChatRoomAnnouncement(chatRoomId, announcement); @@ -59,7 +59,7 @@ EMClient.getInstance().chatroomManager().updateChatRoomAnnouncement(chatRoomId, 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeChatRoomSubject(String, String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeChatRoomSubject(chatRoomId, newSubject); @@ -71,7 +71,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeChatRoomSub 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeChatroomDescription(String, String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeChatroomDescription(chatRoomId, newDescription); @@ -85,7 +85,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeChatroomDes 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -116,7 +116,7 @@ EMClient.getInstance().chatroomManager().asyncFetchChatroomAttributesFromServer( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -145,7 +145,7 @@ EMClient.getInstance().chatroomManager().asyncFetchChatRoomAllAttributesFromServ 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -180,7 +180,7 @@ EMClient.getInstance().chatroomManager().asyncSetChatroomAttribute( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -215,7 +215,7 @@ EMClient.getInstance().chatroomManager().asyncSetChatroomAttributeForced( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -247,7 +247,7 @@ EMClient.getInstance().chatroomManager().asyncSetChatroomAttributes( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -279,7 +279,7 @@ EMClient.getInstance().chatroomManager().asyncSetChatroomAttributesForced( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -304,7 +304,7 @@ EMClient.getInstance().chatroomManager().asyncRemoveChatRoomAttributeFromServer( 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -329,7 +329,7 @@ EMClient.getInstance().chatroomManager().asyncRemoveChatRoomAttributeFromServerF 示例代码如下: -```java +```Java /** * 异步方法。 * @@ -357,7 +357,7 @@ EMClient.getInstance().chatroomManager().asyncRemoveChatRoomAttributesFromServer 示例代码如下: -```java +```Java /** * 异步方法。 * diff --git a/docs/document/android/room_manage.md b/docs/document/android/room_manage.md index da1261498..f0b07fea7 100644 --- a/docs/document/android/room_manage.md +++ b/docs/document/android/room_manage.md @@ -41,7 +41,7 @@ 示例代码如下: -```java +```Java // 异步方法 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().createChatRoom(subject, description, welcomMessage, maxUserCount, members); ``` @@ -55,7 +55,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().createChatRoom(s 示例代码如下: -```java +```Java // 获取公开聊天室列表,每次最多可获取 1,000 个。 // 同步方法,会阻塞当前线程。异步方法为 asyncFetchPublicChatRoomsFromServer(int, int, EMValueCallBack)。 EMPageResult chatRooms = EMClient.getInstance().chatroomManager().fetchPublicChatRoomsFromServer(pageNumber, pageSize); @@ -76,7 +76,7 @@ EMClient.getInstance().chatroomManager().joinChatRoom(chatRoomId, new EMValueCal 同时,你可以调用 `EMChatRoomManager#joinChatRoom(java.lang.String, boolean, java.lang.String, EMValueCallBack)` 方法,设置加入聊天室时携带的扩展信息,并指定是否退出所有其他聊天室。调用该方法后,聊天室内其他成员会收到 `EMChatRoomChangeListener#onMemberJoined(java.lang.String, java.lang.String, java.lang.String)` 回调,当用户加入聊天室携带了扩展信息时,聊天室内其他人可以在用户加入聊天室的回调中,获取到扩展信息。 -```java +```Java String ext= "your ext info"; boolean leaveOtherRooms=true; EMClient.getInstance().chatroomManager().joinChatRoom(chatRoomID,leaveOtherRooms,ext, new EMValueCallBack() { @@ -109,7 +109,7 @@ EMClient.getInstance().chatroomManager().addChatRoomChangeListener(chatRoomChang 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchChatRoomFromServer(String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().fetchChatRoomFromServer(chatRoomId); @@ -121,7 +121,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().fetchChatRoomFrom 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncDestroyChatRoom(String, EMCallBack)。 EMClient.getInstance().chatroomManager().destroyChatRoom(chatRoomId); @@ -134,7 +134,7 @@ EMClient.getInstance().chatroomManager().destroyChatRoom(chatRoomId); 示例代码如下: -```java +```Java // 注册聊天室回调 EMClient.getInstance().chatroomManager().addChatRoomChangeListener(chatRoomChangeListener); // 移除聊天室回调 @@ -144,7 +144,7 @@ EMClient.getInstance().chatroomManager().removeChatRoomListener(chatRoomChangeLi 具体事件如下: -```java +```Java public interface EMChatRoomChangeListener { // 聊天室被解散。聊天室的所有成员会收到该事件。 void onChatRoomDestroyed(final String roomId, final String roomName); @@ -210,7 +210,7 @@ public interface EMChatRoomChangeListener { 2. 收到通知事件后,调用 `EMChatRoomManager#getChatRoom` 方法获取本地聊天室详情,再通过`EMChatRoom#getMemberCount`获取聊天室当前人数。 -```java +```Java EMClient.getInstance().chatroomManager().addChatRoomChangeListener(new EMChatRoomChangeListener() { @Override diff --git a/docs/document/android/room_members.md b/docs/document/android/room_members.md index fdba58ceb..502ff87d3 100644 --- a/docs/document/android/room_members.md +++ b/docs/document/android/room_members.md @@ -34,7 +34,7 @@ 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchChatRoomMembers(String, String, int, EMValueCallBack)。 //cursor:从该游标位置开始取数据。首次调用 cursor 传空值,从最新数据开始获取。 @@ -50,7 +50,7 @@ public EMCursorResult fetchChatRoomMembers(String chatRoomId, String cur 示例代码如下: -```java +```Java // 异步方法。 EMClient.getInstance().chatroomManager().leaveChatRoom(chatRoomId); ``` @@ -59,7 +59,7 @@ EMClient.getInstance().chatroomManager().leaveChatRoom(chatRoomId); 示例代码如下: -```java +```Java EMOptions options = new EMOptions(); options.setDeleteMessagesAsExitChatRoom(false); ``` @@ -76,7 +76,7 @@ options.setDeleteMessagesAsExitChatRoom(false); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncRemoveChatRoomMembers(String, List, EMValueCallBack)。 EMClient.getInstance().chatroomManager().removeChatRoomMembers(chatRoomId, members); @@ -103,7 +103,7 @@ EMClient.getInstance().chatroomManager().removeChatRoomMembers(chatRoomId, membe 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncBlockChatroomMembers(String, List, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().blockChatroomMembers(chatRoomId, members); @@ -115,7 +115,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().blockChatroomMemb 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncBlockChatroomMembers(String, List, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unblockChatRoomMembers(chatRoomId, members); @@ -127,7 +127,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unblockChatRoomMe 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchChatRoomBlackList(String, int, int, EMValueCallBack)。 EMChatRoom chatroom = EMClient.getInstance().chatroomManager().fetchChatRoomBlackList(chatRoomId, pageNum, pageSize); @@ -145,7 +145,7 @@ EMChatRoom chatroom = EMClient.getInstance().chatroomManager().fetchChatRoomBlac 示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().fetchChatRoomWhiteList(chatRoomId, new EMValueCallBack>() { @Override public void onSuccess(List value) { @@ -160,7 +160,7 @@ EMClient.getInstance().chatroomManager().fetchChatRoomWhiteList(chatRoomId, new 所有聊天室成员可以调用 `checkIfInChatRoomWhiteList` 方法检查自己是否在聊天室白名单中,示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().checkIfInChatRoomWhiteList(chatRoomId, new EMValueCallBack() { @Override public void onSuccess(Boolean value) { @@ -177,7 +177,7 @@ EMClient.getInstance().chatroomManager().checkIfInChatRoomWhiteList(chatRoomId, 示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().addToChatRoomWhiteList(chatRoomId, members, new EMValueCallBack() { @Override public void onSuccess(EMChatRoom value) { @@ -194,7 +194,7 @@ EMClient.getInstance().chatroomManager().addToChatRoomWhiteList(chatRoomId, memb 示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().removeFromChatRoomWhiteList(chatRoomId, members, new EMValueCallBack() { @Override public void onSuccess(EMChatRoom value) { @@ -218,7 +218,7 @@ EMClient.getInstance().chatroomManager().removeFromChatRoomWhiteList(chatRoomId, 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncMuteChatRoomMembers(String, List, long, EMValueCallBack)。 // `duration`:禁言时间。传 -1 表示永久禁言。 @@ -235,7 +235,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().muteChatRoomMembe 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncUnMuteChatRoomMembers(String, List, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unMuteChatRoomMembers(chatRoomId, members); @@ -247,7 +247,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().unMuteChatRoomMem 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncFetchChatRoomMuteList(String, int, int, EMValueCallBack)。 Map memberMap = EMClient.getInstance().chatroomManager().fetchChatRoomMuteList(chatRoomId, pageNum, pageSize); @@ -265,7 +265,7 @@ Map memberMap = EMClient.getInstance().chatroomManager().fetchCha 示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().muteAllMembers(chatRoomId, new EMValueCallBack() { @Override public void onSuccess(EMChatRoom value) { @@ -282,7 +282,7 @@ EMClient.getInstance().chatroomManager().muteAllMembers(chatRoomId, new EMValueC 示例代码如下: -```java +```Java EMClient.getInstance().chatroomManager().unmuteAllMembers(chatRoomId, new EMValueCallBack() { @Override public void onSuccess(EMChatRoom value) { @@ -301,7 +301,7 @@ EMClient.getInstance().chatroomManager().unmuteAllMembers(chatRoomId, new EMValu 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncChangeOwner(String, String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeOwner(chatRoomId, newOwner); @@ -313,7 +313,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().changeOwner(chatR 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncAddChatRoomAdmin(String, String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().addChatRoomAdmin(chatRoomId, admin); @@ -325,7 +325,7 @@ EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().addChatRoomAdmin( 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncRemoveChatRoomAdmin(String, String, EMValueCallBack)。 EMChatRoom chatRoom = EMClient.getInstance().chatroomManager().removeChatRoomAdmin(chatRoomId, admin); diff --git a/docs/document/android/thread.md b/docs/document/android/thread.md index a8f711964..223d4c726 100644 --- a/docs/document/android/thread.md +++ b/docs/document/android/thread.md @@ -40,7 +40,7 @@ 示例代码如下: -```java +```Java // parentId:群组 ID // messageId:消息 ID,基于该消息创建子区 // threadName:子区名称,长度不超过 64 个字符 @@ -68,7 +68,7 @@ EMClient.getInstance().chatThreadManager().createChatThread(parentId, messageId, 示例代码如下: -```java +```Java EMClient.getInstance().chatThreadManager().destroyChatThread(chatThreadId, new EMCallBack() { @Override public void onSuccess() { @@ -93,7 +93,7 @@ EMClient.getInstance().chatThreadManager().destroyChatThread(chatThreadId, new E 示例代码如下: -```java +```Java EMClient.getInstance().chatThreadManager().joinChatThread(chatThreadId, new EMValueCallBack() { @Override public void onSuccess(EMChatThread value) { @@ -115,7 +115,7 @@ EMClient.getInstance().chatThreadManager().joinChatThread(chatThreadId, new EMVa 示例代码如下: -```java +```Java EMClient.getInstance().chatThreadManager().leaveChatThread(chatThreadId, new EMCallBack() { @Override public void onSuccess() { @@ -135,7 +135,7 @@ EMClient.getInstance().chatThreadManager().leaveChatThread(chatThreadId, new EMC 示例代码如下: -```java +```Java // chatThreadId: 子区 ID // member: 子区成员的用户 ID EMClient.getInstance().chatThreadManager().removeMemberFromChatThread(chatThreadId, member, new EMCallBack() { @@ -157,7 +157,7 @@ EMClient.getInstance().chatThreadManager().removeMemberFromChatThread(chatThread 示例代码如下: -```java +```Java // chatThreadId: 子区 ID // newChatThreadName: 修改的子区名称,长度不超过 64 个字符 EMClient.getInstance().chatThreadManager().updateChatThreadName(chatThreadId, newChatThreadName, new EMCallBack() { @@ -177,7 +177,7 @@ EMClient.getInstance().chatThreadManager().updateChatThreadName(chatThreadId, ne 示例代码如下: -```java +```Java // chatThreadID: 子区 ID EMClient.getInstance().chatThreadManager().getChatThreadFromServer(chatThreadId, new EMValueCallBack() { @Override @@ -194,7 +194,7 @@ EMClient.getInstance().chatThreadManager().getChatThreadFromServer(chatThreadId, 子区所属群组的所有成员均可以调用 `getChatThreadMembers` 方法从服务器分页获取子区成员列表。 -```java +```Java // chatThreadId: 子区 ID // limit: 单次请求返回的成员数,取值范围为 [1,50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -214,7 +214,7 @@ EMClient.getInstance().chatThreadManager().getChatThreadMembers(chatThreadId, li 1. 用户可以调用 `getJoinedChatThreadsFromServer` 方法从服务器分页获取自己加入和创建的子区列表: -```java +```Java // limit: 单次请求返回的子区数,取值范围为 [1,50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 EMClient.getInstance().chatThreadManager().getJoinedChatThreadsFromServer(limit, cursor, @@ -231,7 +231,7 @@ EMClient.getInstance().chatThreadManager().getJoinedChatThreadsFromServer(limit, 2. 用户可以调用 `getJoinedChatThreadsFromServer` 方法从服务器分页获取指定群组中自己加入和创建的子区列表: -```java +```Java // parentId: 群组 ID // limit: 单次请求返回的子区数,取值范围为 [1,50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -249,7 +249,7 @@ EMClient.getInstance().chatThreadManager().getJoinedChatThreadsFromServer(parent 3. 用户还可以调用 `getChatThreadsFromServer` 方法从服务器分页获取指定群组的子区列表: -```java +```Java // parentId: 群组 ID // limit: 单次请求返回的子区数,取值范围为 [1,50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -271,7 +271,7 @@ EMClient.getInstance().chatThreadManager().getChatThreadsFromServer(parentId, li 示例代码如下: -```java +```Java // chatThreadIdList: 要查询的子区 ID 列表,每次最多可传入 20 个子区 ID EMClient.getInstance().chatThreadManager().getChatThreadLatestMessage(chatThreadIdList, new EMValueCallBack>() { @@ -291,7 +291,7 @@ EMClient.getInstance().chatThreadManager().getChatThreadLatestMessage(chatThread 示例代码如下: -```java +```Java EMChatThreadChangeListener chatThreadChangeListener = new EMChatThreadChangeListener() { @Override // 子区创建。子区所属群组的所有成员收到该事件。 diff --git a/docs/document/android/thread_message.md b/docs/document/android/thread_message.md index c72ff5e50..adb32f8c2 100644 --- a/docs/document/android/thread_message.md +++ b/docs/document/android/thread_message.md @@ -44,7 +44,7 @@ 示例代码如下: -```java +```Java // 创建一条文本消息,`content` 为消息文字内容,`chatThreadId` 为子区 ID。 EMMessage message = EMMessage.createTxtSendMessage(content, chatThreadId); // 设置消息类型,子区消息需要将 `ChatType` 设置为 `GroupChat`。 @@ -77,7 +77,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 示例代码如下: -```java +```Java EMMessageListener msgListener = new EMMessageListener() { // 收到消息,遍历消息队列,解析和显示。 @Override @@ -104,7 +104,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); 示例代码如下: -```java +```Java EMMessageListener msgListener = new EMMessageListener() { // 收到撤回消息回调,遍历消息队列,解析和显示。 @Override @@ -129,7 +129,7 @@ EMMessageListener msgListener = new EMMessageListener() { 调用 `asyncFetchHistoryMessage` 从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```java +```Java String chatThreadId = "{your chatThreadId}"; EMConversation.EMConversationType type = EMConversation.EMConversationType.GroupChat; int pageSize = 10; @@ -155,7 +155,7 @@ EMClient.getInstance().chatManager().asyncFetchHistoryMessage(chatThreadId, type 调用 `EMChatManager#getAllConversations` 方法只能获取单聊或群聊会话。你可以调用以下方法从本地获取单个子区的消息: -```java +```Java // 需要指定会话类型为 `EMConversationType.GroupChat` 且 `isChatThread` 设置为 `true` EMConversation conversation = EMClient.getInstance().chatManager().getConversation(chatThreadId, EMConversationType.GroupChat, createIfNotExists, isChatThread); // 获取此会话的所有内存中的消息 diff --git a/docs/document/android/user_relationship.md b/docs/document/android/user_relationship.md index c0a8749d7..116c4ef86 100644 --- a/docs/document/android/user_relationship.md +++ b/docs/document/android/user_relationship.md @@ -38,7 +38,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 示例代码如下: -```java +```Java // 添加好友。 // 同步方法,会阻塞当前线程。异步方法为 asyncAddContact(String, String, EMCallBack)。 EMClient.getInstance().contactManager().addContact(toAddUsername, reason); @@ -48,7 +48,7 @@ EMClient.getInstance().contactManager().addContact(toAddUsername, reason); 请监听与好友请求相关事件的回调,这样当用户收到好友请求,可以调用接受请求的 RESTful API 添加好友。服务器不会重复下发与好友请求相关的事件,建议退出应用时保存相关的请求数据。设置监听示例代码如下: -```java +```Java EMClient.getInstance().contactManager().setContactListener(new EMContactListener() { // 对方同意了好友请求。 @Override @@ -74,7 +74,7 @@ EMClient.getInstance().contactManager().setContactListener(new EMContactListener 3. 收到好友请求后,可以选择同意加好友申请或者拒绝加好友申请,示例代码如下: -```java +```Java // 同意好友申请。 // 同步方法,会阻塞当前线程。异步方法为 asyncAcceptInvitation(String, EMCallBack)。 EMClient.getInstance().contactManager().acceptInvitation(username); @@ -91,7 +91,7 @@ EMClient.getInstance().contactManager().declineInvitation(username); 示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncDeleteContact(String, EMCallBack)。 EMClient.getInstance().contactManager().deleteContact(username); @@ -105,7 +105,7 @@ EMClient.getInstance().contactManager().deleteContact(username); 好友备注的长度不能超过 100 个字符。 -```java +```Java EMClient.getInstance().contactManager().asyncSetContactRemark(userId, remark, new EMCallBack() { @Override public void onSuccess() { @@ -125,7 +125,7 @@ EMClient.getInstance().contactManager().asyncSetContactRemark(userId, remark, ne - 一次性获取服务端好友列表。 -```java +```Java EMClient.getInstance().contactManager().asyncFetchAllContactsFromServer(new EMValueCallBack>() { @Override public void onSuccess(List value) { @@ -141,7 +141,7 @@ EMClient.getInstance().contactManager().asyncFetchAllContactsFromServer(new EMVa - 分页获取服务端好友列表。 -```java +```Java // limit 的取值范围为 [1,50] List contacts=new ArrayList<>(); String cursor= ""; @@ -171,7 +171,7 @@ private void doAsyncFetchAllContactsFromServer(List contacts, String 此外,你也可以调用 `getAllContactsFromServer` 方法从服务器获取所有好友的列表,该列表只包含好友的用户 ID。 -```java +```Java // 同步方法,会阻塞当前线程。异步方法为 asyncGetAllContactsFromServer(EMValueCallBack)。 List usernames = EMClient.getInstance().contactManager().getAllContactsFromServer(); ``` @@ -186,7 +186,7 @@ List usernames = EMClient.getInstance().contactManager().getAllContactsF - 获取本地单个好友。 -```java +```Java try { EMContact emContact = EMClient.getInstance().contactManager().fetchContactFromLocal(userId); String remark = emContact.getRemark(); @@ -199,7 +199,7 @@ try { - 一次性获取本地好友列表。 -```java +```Java EMClient.getInstance().contactManager().asyncFetchAllContactsFromLocal(new EMValueCallBack>() { @Override public void onSuccess(List value) { @@ -217,7 +217,7 @@ EMClient.getInstance().contactManager().asyncFetchAllContactsFromLocal(new EMVal 示例代码如下: -```java +```Java List usernames = EMClient.getInstance().contactManager().getContactsFromLocal(); ``` @@ -231,7 +231,7 @@ List usernames = EMClient.getInstance().contactManager().getContactsFrom 用户可以将任何其他用户添加到黑名单列表,无论该用户是否是好友。好友被加入黑名单后仍在好友列表上显示。 -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncAddUserToBlackList(String, boolean, EMCallBack)。 EMClient.getInstance().contactManager().addUserToBlackList(username,true); @@ -241,7 +241,7 @@ EMClient.getInstance().contactManager().addUserToBlackList(username,true); 你可以调用 `removeUserFromBlackList` 将用户从黑名单移除,用户发送消息等行为将恢复。 -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncRemoveUserFromBlackList(String, EMCallBack)。 EMClient.getInstance().contactManager().removeUserFromBlackList(username); @@ -251,7 +251,7 @@ EMClient.getInstance().contactManager().removeUserFromBlackList(username); 你可以调用 `getBlackListFromServer` 从服务端获取黑名单列表。示例代码如下: -```java +```Java // 同步方法,会阻塞当前线程。 // 异步方法为 asyncGetBlackListFromServer(EMValueCallBack)。 EMClient.getInstance().contactManager().getBlackListFromServer(); @@ -263,6 +263,6 @@ EMClient.getInstance().contactManager().getBlackListFromServer(); 示例代码如下: -```java +```Java EMClient.getInstance().contactManager().getBlackListUsernames(); ``` \ No newline at end of file diff --git a/docs/document/android/userprofile.md b/docs/document/android/userprofile.md index 94b430f33..26a741052 100644 --- a/docs/document/android/userprofile.md +++ b/docs/document/android/userprofile.md @@ -40,7 +40,7 @@ 参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。 -```java +```Java // 设置所有用户属性。 EMUserInfo userInfo = new EMUserInfo(); userInfo.setUserId(EMClient.getInstance().getCurrentUser()); @@ -92,7 +92,7 @@ EMClient.getInstance().userInfoManager().updateOwnInfoByAttribute(EMUserInfoType 示例代码如下: -```java +```Java // 获取一个或多个用户的所有属性,一次调用用户 ID 数量不超过 100。 String[] userId = new String[1]; //username 指用户 ID。 @@ -104,7 +104,7 @@ EMClient.getInstance().userInfoManager().fetchUserInfoByUserId(userId, new EMVal 用户可以获取指定用户的指定用户属性信息。 -```java +```Java String[] userId = new String[1]; userId[0] = EMClient.getInstance().getCurrentUser(); EMUserInfo.EMUserInfoType[] userInfoTypes = new EMUserInfo.EMUserInfoType[2]; @@ -129,7 +129,7 @@ EMClient.getInstance().userInfoManager().fetchUserInfoByAttribute(userId, userIn 如果使用场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现: -```java +```Java //设置自定义消息的 `event` 为 `"userCard"`,并在 `ext` 中添加展示名片所需要的用户 ID 、昵称和头像等字段。 EMMessage message = EMMessage.createSendMessage(EMMessage.Type.CUSTOM); EMCustomMessageBody body = new EMCustomMessageBody(DemoConstant.USER_CARD_EVENT); diff --git a/docs/document/applet/alipay.md b/docs/document/applet/alipay.md index 02194976e..15f9674b6 100644 --- a/docs/document/applet/alipay.md +++ b/docs/document/applet/alipay.md @@ -74,7 +74,7 @@ wss://im-api-alipay.easemob.com/websocket #### 调用示例 -```javascript +```JavaScript //使用示例 import SDK from "../sdk/connection"; // 2.0 SDK import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK @@ -84,7 +84,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript //实例化 SDK 对象 const WebIM = (wx.WebIM = SDK); WebIM.conn = new WebIM.connection({ diff --git a/docs/document/applet/baidu.md b/docs/document/applet/baidu.md index aba0b2750..f45b510ba 100644 --- a/docs/document/applet/baidu.md +++ b/docs/document/applet/baidu.md @@ -78,7 +78,7 @@ wss://im-api-wechat.easemob.com(3.0 IM SDK) #### 调用示例 -```javascript +```JavaScript //使用示例 import SDK from "../sdk/connection"; // 2.0 SDK import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK @@ -88,7 +88,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript //实例化 SDK 对象 const WebIM = (wx.WebIM = SDK); WebIM.conn = new WebIM.connection({ diff --git a/docs/document/applet/bytedance.md b/docs/document/applet/bytedance.md index 04d07af50..6e15d160e 100644 --- a/docs/document/applet/bytedance.md +++ b/docs/document/applet/bytedance.md @@ -75,7 +75,7 @@ wss://im-api-wechat.easemob.com(3.0 IM SDK) #### 调用示例 -```javascript +```JavaScript //使用示例 import SDK from "../sdk/connection"; // 2.0 SDK import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK @@ -85,7 +85,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript //实例化 SDK 对象 const WebIM = (wx.WebIM = SDK); WebIM.conn = new WebIM.connection({ diff --git a/docs/document/applet/connection.md b/docs/document/applet/connection.md index 29fef1392..c2ed32312 100644 --- a/docs/document/applet/connection.md +++ b/docs/document/applet/connection.md @@ -6,7 +6,7 @@ ## 监听连接状态 -```javascript +```JavaScript conn.addEventHandler("connectionListener", { onConnected: () => { console.log("连接成功"); diff --git a/docs/document/applet/initialization.md b/docs/document/applet/initialization.md index 3ecbc5511..0c119dc84 100644 --- a/docs/document/applet/initialization.md +++ b/docs/document/applet/initialization.md @@ -10,7 +10,7 @@ 使用 SDK 前需要进行初始化,示例代码如下: -```javascript +```JavaScript const conn = new EC.connection({ appKey: "your appKey", url: "wss://im-api-wechat.easemob.com/websocket", diff --git a/docs/document/applet/log.md b/docs/document/applet/log.md index 7de982af0..6a9b9bf03 100644 --- a/docs/document/applet/log.md +++ b/docs/document/applet/log.md @@ -6,18 +6,18 @@ 开启日志输出: -```javascript +```JavaScript logger.enableAll(); ``` - 设置日志不输出到控制台: -```javascript +```JavaScript logger.setConsoleLogVisibility(false) ``` - 监听 SDK 日志事件: -```javascript +```JavaScript logger.onLog = (log)=>{ console.log('im logger', log) } @@ -25,20 +25,20 @@ logger.onLog = (log)=>{ 关闭日志输出: -```javascript +```JavaScript logger.disableAll(); ``` 设置日志输出等级: -```javascript +```JavaScript // 0 - 5 或者 'TRACE','DEBUG','INFO','WARN','ERROR','SILENT'; logger.setLevel(0); ``` 设置缓存日志: -```javascript +```JavaScript logger.setConfig({ useCache: false, // 是否缓存 maxCache: 3 * 1024 * 1024, // 最大缓存字节 @@ -49,7 +49,7 @@ logger.setLevel(0); 下载日志: -```javascript +```JavaScript logger.download(); ``` diff --git a/docs/document/applet/login.md b/docs/document/applet/login.md index 9aab07e26..29797a63e 100644 --- a/docs/document/applet/login.md +++ b/docs/document/applet/login.md @@ -10,7 +10,7 @@ 示例代码如下: -```javascript +```JavaScript conn.registerUser({ username: "user1", password: "xxx", @@ -29,7 +29,7 @@ conn.registerUser({ 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```javascript +```JavaScript conn .open({ user: "username", @@ -44,7 +44,7 @@ conn ``` 2. **用户 ID + 密码** 登录是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合[密码规则要求](/document/server-side/account_system.html#开放注册单个用户)。 -```javascript +```JavaScript conn .open({ user: "username", @@ -60,7 +60,7 @@ conn ## 退出登录 -```javascript +```JavaScript conn.close(); ``` diff --git a/docs/document/applet/message_send_receive.md b/docs/document/applet/message_send_receive.md index b501365a4..e823ec4dc 100644 --- a/docs/document/applet/message_send_receive.md +++ b/docs/document/applet/message_send_receive.md @@ -52,7 +52,7 @@ 示例代码如下: -```javascript +```JavaScript // 发送文本消息。 function sendTextMessage() { let option = { @@ -78,7 +78,7 @@ function sendTextMessage() { 对于聊天室消息,可设置消息优先级。示例代码如下: -```javascript +```JavaScript // 发送文本消息。 function sendTextMessage() { let option = { @@ -106,7 +106,7 @@ function sendTextMessage() { 当消息到达时,接收方会收到 `onXXXMessage` 回调。每个回调包含一条或多条消息。你可以遍历消息列表,并可以解析和展示回调中的消息。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 WebIM.conn.addEventHandler("eventName", { // SDK 与环信服务器连接成功。 @@ -180,7 +180,7 @@ WebIM.conn.addEventHandler("eventName", { 参考以下代码示例创建和发送语音消息: -```javascript +```JavaScript /** * @param {Object} tempFilePath - 要上传的文件的小程序临时文件路径。 * @param {Object} duration - 语音时长,单位为秒。 @@ -236,7 +236,7 @@ function sendPrivateAudio(tempFilePath, duration) { 参考以下代码示例创建和发送图片消息: -```javascript +```JavaScript function sendImage() { var me = this; wx.chooseImage({ @@ -324,7 +324,7 @@ function sendPrivateImg(res) { 发送 URL 图片消息前,确保将 `Connection` 类中的 `useOwnUploadFun` 设置为 `true`。 -```javascript +```JavaScript function sendPrivateUrlImg() { let option = { chatType: "singleChat", @@ -348,7 +348,7 @@ function sendPrivateUrlImg() { 参考以下代码示例创建和发送视频消息: -```javascript +```JavaScript function sendPrivateVideo(){ var me = this; var token = WebIM.conn.context.accessToken @@ -410,7 +410,7 @@ function sendPrivateVideo(){ 参考以下代码示例创建、发送和接收文件消息: -```javascript +```JavaScript // 发送文件消息。 function sendFileMessage() { const me = this; @@ -482,7 +482,7 @@ function sendFileMessage() { 当你需要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```javascript +```JavaScript const sendLocMsg = () => { let option = { chatType: "singleChat", @@ -512,7 +512,7 @@ const sendLocMsg = () => { 参考以下代码示例发送和接收透传消息: -```javascript +```JavaScript function sendCMDMessage() { let option = { // 消息类型。 @@ -564,7 +564,7 @@ function sendCMDMessage() { 发送输入状态的用户。 -```typescript +```TypeScript let previousChangedTimeStamp = 0; // 监听输入状态的变化 const onInputChange = function () { @@ -602,7 +602,7 @@ const sendBeginTyping = function () { 接收输入状态的用户。 -```typescript +```TypeScript // 设置状态监听器 let timer; conn.addEventHandler("message", { @@ -629,7 +629,7 @@ const beginTimer = () => { 参考以下示例代码创建和发送自定义消息: -```javascript +```JavaScript function sendCustomMsg() { // 设置自定义事件。 let customEvent = "customEvent"; @@ -701,7 +701,7 @@ function sendCustomMsg() { 示例代码如下: -```javascript +```JavaScript let option = { chatType: "singleChat", type: "combine", @@ -738,7 +738,7 @@ conn.send 合并消息实际上是一种附件消息。收到合并消息后,你可以调用 `downloadAndParseCombineMessage` 方法下载合并消息附件并解析出原始消息列表。 -```javascript +```JavaScript connection .downloadAndParseCombineMessage({ url: msg.url, @@ -766,7 +766,7 @@ connection 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```javascript +```JavaScript // 发送定向文本消息。 function sendTextMessage() { let option = { @@ -798,7 +798,7 @@ function sendTextMessage() { 如果上述类型的消息无法满足要求,你可以使用消息扩展为消息添加属性。这种情况可用于更复杂的消息传递场景,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```javascript +```JavaScript function sendTextMessage() { let option = { type: "txt", diff --git a/docs/document/applet/push/uniapp_push.md b/docs/document/applet/push/uniapp_push.md index ddd611712..04603a3db 100644 --- a/docs/document/applet/push/uniapp_push.md +++ b/docs/document/applet/push/uniapp_push.md @@ -91,7 +91,7 @@ SDK 4.9.1 及以上版本支持 uni-app 推送。 1. 安装并引入环信 uni-app SDK。 -```javascript +```JavaScript // 安装环信 SDK npm install easemob-websdk // 在 App.vue 文件中引入 SDK @@ -100,7 +100,7 @@ import websdk from "easemob-websdk/uniApp/Easemob-chat"; 2. 初始化 IM SDK 并集成推送插件。 -```javascript +```JavaScript // 初始化 IM SDK const conn = websdk.connection({ appKey: 'xxxxx', // 你的环信 app Key diff --git a/docs/document/applet/qq.md b/docs/document/applet/qq.md index 751e3eed0..1296e679a 100644 --- a/docs/document/applet/qq.md +++ b/docs/document/applet/qq.md @@ -82,7 +82,7 @@ QQ、微信小程序: 1.7.0 及以上版本,最多可以同时存在 5 个 W #### 调用示例 -```javascript +```JavaScript // 使用示例 import SDK from "../sdk/connection"; // 2.0 SDK import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK @@ -92,7 +92,7 @@ import SDK from "../sdk/Easemob-chat-miniProgram"; // 3.0 SDK 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript // 实例化 SDK 对象 const WebIM = (wx.WebIM = SDK); WebIM.conn = new WebIM.connection({ diff --git a/docs/document/applet/uniapp.md b/docs/document/applet/uniapp.md index 8291182b5..f81e11838 100644 --- a/docs/document/applet/uniapp.md +++ b/docs/document/applet/uniapp.md @@ -131,7 +131,7 @@ npm i easemob-websdk ``` 引入 uniApp SDK -```javascript +```JavaScript import SDK from 'easemob-websdk/uniApp/Easemob-chat'; ``` @@ -139,7 +139,7 @@ import SDK from 'easemob-websdk/uniApp/Easemob-chat'; 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript // 实例化 SDK 对象 const WebIM = wx.WebIM = SDK; const conn = new WebIM.connection({ diff --git a/docs/document/applet/uniappnativeapp.md b/docs/document/applet/uniappnativeapp.md index 8311137ab..0cd3b9e9f 100644 --- a/docs/document/applet/uniappnativeapp.md +++ b/docs/document/applet/uniappnativeapp.md @@ -58,7 +58,7 @@ #### 调用示例 -```javascript +```JavaScript //使用示例 import SDK from "../sdk/webimSDK3.x.x"; // 3.0sdk ``` @@ -67,7 +67,7 @@ import SDK from "../sdk/webimSDK3.x.x"; // 3.0sdk 实例化 SDK,并挂载在全局对象下。 -```javascript +```JavaScript //实例化 SDK 对象 const WebIM = (wx.WebIM = SDK); WebIM.conn = new WebIM.connection({ diff --git a/docs/document/applet/uniappuikit.md b/docs/document/applet/uniappuikit.md index 419af9dbd..5488b911d 100644 --- a/docs/document/applet/uniappuikit.md +++ b/docs/document/applet/uniappuikit.md @@ -38,7 +38,7 @@ HBuilderx ⇒ 工具 ⇒ 插件安装 ⇒ 安装新插件 ⇒ 前往插件市场 ## 组件使用 -```javascript +```JavaScript import chat from "@/components/chat/chat.vue"; // chatType=singleChat 单聊 ... ``` ### 长按功能框 -```javascript +```JavaScript import longPressModal from "@/components/longPressModal/index"; pinnedMessages = await EMClient.getInstance.chatManager.fetchPinnedMessages( conversationId: conversationId, diff --git a/docs/document/flutter/moderation.md b/docs/document/flutter/moderation.md index 9e052761e..b80e39c22 100644 --- a/docs/document/flutter/moderation.md +++ b/docs/document/flutter/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```typescript +```dart // messageId:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 // reason:举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/ios/connection.md b/docs/document/ios/connection.md index df358eadc..8ea4e4ca2 100644 --- a/docs/document/ios/connection.md +++ b/docs/document/ios/connection.md @@ -8,7 +8,7 @@ 你可以通过注册连接监听确认连接状态。 -```swift +```Swift override func viewDidLoad() { ... // 注册连接状态监听,在 SDK 初始化之后调用。 diff --git a/docs/document/ios/conversation_delete.md b/docs/document/ios/conversation_delete.md index 653569721..1b489a328 100644 --- a/docs/document/ios/conversation_delete.md +++ b/docs/document/ios/conversation_delete.md @@ -22,7 +22,7 @@ 你可以调用 `deleteServerConversation` 方法单向删除服务器端和本地会话,并选择是否删除服务端和本地的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。该接口不影响其他用户的会话和消息。 -```objectivec +```Objective-C // 删除指定会话,如果需要保留服务端和本地的历史消息,`isDeleteServerMessages` 参数传 `NO`,异步方法。 [[EMClient sharedClient].chatManager deleteServerConversation:@"conversationId1" conversationType:EMConversationTypeChat isDeleteServerMessages:YES completion:^(NSString *aConversationId, EMError *aError) { // 删除回调 @@ -33,7 +33,7 @@ 你可以删除本地会话和历史消息,示例代码如下: -```objectivec +```Objective-C // 删除指定会话,如果需要保留历史消息,`isDeleteMessages` 参数传 `NO`,异步方法。 [[EMClient sharedClient].chatManager deleteConversation:conversationId isDeleteMessages:YES completion:nil]; // 删除一组会话。 @@ -41,7 +41,7 @@ NSArray *conversations = @{@"conversationID1",@"conversationID2"}; [[EMClient sharedClient].chatManager deleteConversations:conversations isDeleteMessages:YES completion:nil]; ``` -```objectivec +```Objective-C // 删除当前会话中指定的一条历史消息。 EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; [conversation deleteMessageWithId:.messageId error:nil]; diff --git a/docs/document/ios/conversation_list.md b/docs/document/ios/conversation_list.md index 5551ea116..35004fb10 100644 --- a/docs/document/ios/conversation_list.md +++ b/docs/document/ios/conversation_list.md @@ -38,7 +38,7 @@ 示例代码如下: -```objectivec +```Objective-C // pageSize: 每页返回的会话数。取值范围为 [1,50]。 // cursor:查询的开始位置。若传入 `nil` 或 `@""`,SDK 从最新活跃的会话开始获取。 NSString *cursor = @""; @@ -82,7 +82,7 @@ NSString *cursor = @""; 示例代码如下: -```objectivec +```Objective-C NSArray *conversations = [EMClient.sharedClient.chatManager getAllConversations:YES]; ``` diff --git a/docs/document/ios/conversation_pin.md b/docs/document/ios/conversation_pin.md index e8833947d..1588d787c 100644 --- a/docs/document/ios/conversation_pin.md +++ b/docs/document/ios/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```objectivec +```Objective-C [EMClient.sharedClient.chatManager pinConversation:self.conversation.conversationId isPinned:aSwitch.isOn completionBlock:^(EMError * _Nullable error) { }]; ``` @@ -46,7 +46,7 @@ 示例代码如下: -```objectivec +```Objective-C // pageSize: 每页返回的会话数。取值范围为 [1,50]。 // cursor:查询的开始位置。若传入 `nil` 或 `@""`,SDK 从最新置顶的会话开始查询。 NSString *cursor = @""; diff --git a/docs/document/ios/conversation_receipt.md b/docs/document/ios/conversation_receipt.md index 94ef21479..1b69d1761 100644 --- a/docs/document/ios/conversation_receipt.md +++ b/docs/document/ios/conversation_receipt.md @@ -35,7 +35,7 @@ 若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `sendMessageReadAck`,则需要调用多次。 -```objectivec +```Objective-C [[EMClient sharedClient].chatManager ackConversationRead:conversationId completion:nil]; ``` @@ -47,7 +47,7 @@ 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `OnConversationRead` 回调收到会话已读回执。 ::: -```objectivec +```Objective-C // 继承并实现监听器。 EMChatManagerDelegate diff --git a/docs/document/ios/conversation_unread.md b/docs/document/ios/conversation_unread.md index 5e41b771f..3c456aba2 100644 --- a/docs/document/ios/conversation_unread.md +++ b/docs/document/ios/conversation_unread.md @@ -27,7 +27,7 @@ 你可以调用 `getAllConversations` 方法获取每个本地会话的未读消息数量,即`EMConversation#unreadMessagesCount`,然后累加该数量,得到所有会话的未读消息数,示例代码如下: -```objectivec +```Objective-C NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations]; NSInteger unreadCount = 0; for (EMConversation *conversation in conversations) { @@ -39,7 +39,7 @@ for (EMConversation *conversation in conversations) { 你可以调用 `unreadMessagesCount` 方法获取本地指定会话的未读消息数,示例代码如下: -```objectivec +```Objective-C // 获取指定会话 ID 的会话。 EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; // 获取未读消息数。 @@ -50,7 +50,7 @@ NSInteger unreadCount = conversation.unreadMessagesCount; 你可以调用 `EMChatManager#markAllConversationsAsRead` 方法将本地所有会话设为已读,即将所有会话的未读消息数清零,示例代码如下: -```swift +```Swift let err = EMClient.shared().chatManager?.markAllConversationsAsRead() if err == nil { // 标记所有会话为已读成功 @@ -65,7 +65,7 @@ let err = EMClient.shared().chatManager?.markAllConversationsAsRead() 你可以调用 `markAllMessagesAsRead` 方法对指定会话的未读消息数清零,示例代码如下: -```objectivec +```Objective-C EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; [conversation markAllMessagesAsRead:nil]; ``` @@ -74,7 +74,7 @@ EMConversation *conversation = [[EMClient sharedClient].chatManager getConversat 你可以调用 `markMessageAsReadWithId` 方法将指定会话的单条未读消息置为已读。 -```objectivec +```Objective-C EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; [conversation markMessageAsReadWithId:messageId error:nil]; ``` diff --git a/docs/document/ios/easecallkit.md b/docs/document/ios/easecallkit.md index ae5d39e91..cb7614fb7 100644 --- a/docs/document/ios/easecallkit.md +++ b/docs/document/ios/easecallkit.md @@ -103,7 +103,7 @@ end 在环信 IM SDK 初始化完成后,同时初始化 `EaseCallKit`,初始化的同时开启回调监听,设置常用配置项。代码如下: -```objectivec +```Objective-C EaseCallConfig* config = [[EaseCallConfig alloc] init]; EaseCallUser* usr = [[EaseCallUser alloc] init]; usr.nickName = @"自定义昵称"; @@ -115,7 +115,7 @@ config.agoraAppId=@"声网 AppID"; 可设置的配置项包括以下内容: -```objectivec +```Objective-C @interface EaseCallConfig : NSObject // 默认头像。 @property (nonatomic) NSURL* defaultHeadImage; @@ -140,7 +140,7 @@ config.agoraAppId=@"声网 AppID"; 一对一通话分为语音通话与视频通话,发起过程如下: -```objectivec +```Objective-C // 发起一对一通话。 // remoteUser 邀请对象的环信 ID。 // type 通话类型。`EaseCallType1v1Audio` 表示语音通话,`EaseCallType1v1Video` 表示视频通话。 @@ -154,7 +154,7 @@ config.agoraAppId=@"声网 AppID"; 你可以从群组成员列表或者好友列表中选择用户,发起多人音视频通话。具体实现可参考 Demo 中的 `ConfInviteUsersViewController`。 -```objectivec +```Objective-C //邀请用户加入多人通话。 // aInviteUsers 受邀用户的环信 ID 数组。 // ext 可设置扩展信息,如果从群组发起,可通过 `ext` 设置群组 ID,其他用户也可邀请该群组成员。 @@ -175,7 +175,7 @@ config.agoraAppId=@"声网 AppID"; 被叫振铃的同时,会触发以下回调: -```objectivec +```Objective-C - (void)callDidReceive:(EaseCallType)aType inviter:(NSString*_Nonnull)user ext:(NSDictionary*)aExt { @@ -186,7 +186,7 @@ config.agoraAppId=@"声网 AppID"; 多人通话中,当前用户可以点击通话界面右上角的邀请按钮再次向其他用户发起邀请。这种情况下,会触发 `EaseCallKitListener` 中的 `multiCallDidInvitingWithCurVC` 回调: -```objectivec +```Objective-C // 多人音视频邀请按钮的回调。 // vc 当前视图控制器。 // users 通话中已存在的用户。 @@ -220,7 +220,7 @@ config.agoraAppId=@"声网 AppID"; 自 `EaseCallKit` 3.8.1 新增 `callDidJoinChannel` 方法,在用户加入通话后会收到回调: -```objectivec +```Objective-C - (void)callDidJoinChannel:(NSString*_Nonnull)aChannelName uid:(NSUInteger)aUid { //此时,可以获取当前频道中已有用户的声网 ID 与环信 ID 的映射表,并将映射表设置到 `EaseCallKit`,同时也可以更新用户的头像和昵称。 @@ -234,7 +234,7 @@ config.agoraAppId=@"声网 AppID"; 自 `EaseCallKit` 3.8.1 新增 `remoteUserDidJoinChannel` 方法,在对方用户加入通话后会收到回调。 -```objectivec +```Objective-C -(void)remoteUserDidJoinChannel:( NSString*_Nonnull)aChannelName uid:(NSInteger)aUid username:(NSString*_Nullable)aUserName { // 此时,可以获取当前频道中已有用户的声网 RTC UID 与环信 ID 的映射表,并将映射表设置到 `EaseCallKit`,同时也可以更新用户的头像和昵称。 @@ -247,7 +247,7 @@ config.agoraAppId=@"声网 AppID"; 在一对一音视频通话中,若其中一方挂断,双方的通话会自动结束,而多人音视频通话中需要主动挂断才能结束通话。通话结束后,会触发 `callDidEnd` 回调: -```objectivec +```Objective-C // 通话结束回调。 // aChannelName 通话使用的声网频道名称,用户可以根据频道名称,到声网 Console 的水晶球查询通话质量。 // aTm 通话时长,单位为秒。 @@ -296,7 +296,7 @@ config.agoraAppId=@"声网 AppID"; 异常包括业务逻辑异常、音视频异常以及 Easemob IM 异常。 -```objectivec +```Objective-C // 通话异常回调。 // aError 为异常信息,包括了 Easemob IM 异常,RTC 异常,业务异常三种情况。 - (void)callDidOccurError:(EaseCallError *)aError @@ -307,7 +307,7 @@ config.agoraAppId=@"声网 AppID"; `EaseCallError` 异常包括 IM 异常,RTC 异常以及业务逻辑异常。 -```objectivec +```Objective-C @interface EaseCallError : NSObject // 异常类型,包括 Easemob IM 异常、RTC 异常和业务逻辑异常。 @property (nonatomic) EaseCallErrorType aErrorType; @@ -321,7 +321,7 @@ config.agoraAppId=@"声网 AppID"; `EaseCallKit` 库初始化之后,可调用该方法修改配置: -```objectivec +```Objective-C // 以下为修改铃声过程。 EaseCallConfig* config = [[EaseCallManager sharedManager] getEaseCallConfig]; NSString* path = [[NSBundle mainBundle] pathForResource:@"huahai128" ofType:@"mp3"]; @@ -332,7 +332,7 @@ config.ringFileUrl = [NSURL fileURLWithPath:path]; 自 `EaseCallKit` 3.8.1 开始,新增了修改头像昵称的接口,用户加入频道后可修改自己和通话中其他人的头像昵称,修改方法如下: -```objectivec +```Objective-C EaseCallUser* user = [EaseCallUser userWithNickName:info.nickName image:[NSURL URLWithString:info.avatarUrl]]; [[[EaseCallManager sharedManager] getEaseCallConfig] setUser:username info:user]; ``` @@ -343,7 +343,7 @@ EaseCallUser* user = [EaseCallUser userWithNickName:info.nickName image:[NSURL U 用户加入音视频通话时,如果需要进行声网 token 鉴权,需要先开启 token 验证开关,开启过程如下: -```objectivec +```Objective-C EaseCallUser* callUser = [[EaseCallUser alloc] init]; config.enableRTCTokenValidate = YES;// 开启 RTC Token 验证,默认不开启。 [[EaseCallManager sharedManager] initWithConfig:config delegate:self]; @@ -351,7 +351,7 @@ config.enableRTCTokenValidate = YES;// 开启 RTC Token 验证,默认不开启 获取 token 的过程由用户自己完成,开启后在通话时,会收到 `callDidRequestRTCTokenForAppId`回调,用户需要在回调中,实现从用户自己的 App Server 中获取 token(App Server 的实现参见 [生成声网 Token](https://docportal.shengwang.cn/cn/video-call-4.x/token_server_ios_ng),然后调用 `setRTCToken:channelName:` 接口。 -```objectivec +```Objective-C - (void)callDidRequestRTCTokenForAppId:(NSString * _Nonnull)aAppId channelName:(NSString * _Nonnull)aChannelName account:(NSString * _Nonnull)aUserAccount diff --git a/docs/document/ios/group_attributes.md b/docs/document/ios/group_attributes.md index a9449baf5..9d36e2aca 100644 --- a/docs/document/ios/group_attributes.md +++ b/docs/document/ios/group_attributes.md @@ -29,7 +29,7 @@ 仅群主和群管理员可以调用 `changeGroupSubject` 方法设置和修改群组名称,其他群成员都会收到 `EMGroupManagerDelegate#groupSpecificationDidUpdate` 回调,群名称的长度限制为 128 个字符。 -```objectivec +```Objective-C [[EMClient sharedClient].groupManager changeGroupSubject:@"subject"]; ``` @@ -37,7 +37,7 @@ 仅群主和群管理员可以调用 `changeDescription` 方法设置和修改群组描述,其他群成员都会收到 `EMGroupManagerDelegate#groupSpecificationDidUpdate` 回调,群描述的长度限制为 512 个字符。 -```objectivec +```Objective-C [[EMClient sharedClient].groupManager changeDescription:@"desc" forGroup:@"groupID" error:nil]; @@ -49,7 +49,7 @@ 示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager updateGroupAnnouncementWithId:announcement:completion:] [[EMClient sharedClient].groupManager updateGroupAnnouncementWithId:@"groupID" announcement:@"announcement" @@ -62,7 +62,7 @@ 示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager getGroupAnnouncementWithId:completion:] [[EMClient sharedClient].groupManager getGroupAnnouncementWithId:@"groupID" error:nil]; ``` @@ -75,7 +75,7 @@ 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager uploadGroupSharedFileWithId:@"groupID" filePath:@"filePath" @@ -87,7 +87,7 @@ 所有群成员均可调用 `downloadGroupSharedFileWithId` 方法下载群组共享文件。 -```objectivec +```Objective-C [EMClient.sharedClient.groupManager downloadGroupSharedFileWithId:@"groupId" filePath:@"filePath" sharedFileId:@"fileId" progress:nil completion:^(EMGroup * _Nullable aGroup, EMError * _Nullable aError) { }]; @@ -99,7 +99,7 @@ 群主和群管理员可删除全部的群共享文件,群成员只能删除自己上传的群文件。 -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager removeGroupSharedFileWithId:sharedFileId:completion:] [[EMClient sharedClient].groupManager removeGroupSharedFileWithId:@"groupID" sharedFileId:@"fileID" @@ -110,7 +110,7 @@ 所有群成员均可以调用 `getGroupFileListWithId` 方法获取群共享文件。 -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager getGroupFileListWithId:pageNumber:pageSize:completion:] [[EMClient sharedClient].groupManager getGroupFileListWithId:@"groupID" pageNumber:pageNumber @@ -124,7 +124,7 @@ 示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager updateGroupExtWithId:ext:completion:] [[EMClient sharedClient].groupManager updateGroupExtWithId:@"groupID" ext:@"ext" diff --git a/docs/document/ios/group_manage.md b/docs/document/ios/group_manage.md index da5d52896..b5883ff7d 100644 --- a/docs/document/ios/group_manage.md +++ b/docs/document/ios/group_manage.md @@ -76,7 +76,7 @@ 示例代码如下: -```objectivec +```Objective-C EMGroupOptions *options = [[EMGroupOptions alloc] init]; // 设置群组最大成员数量。 options.maxUsersCount = self.maxMemNum; @@ -106,7 +106,7 @@ NSArray *members = @{@"member1",@"member2"}; 示例代码如下: -```objectivec +```Objective-C //群组解散后,群成员将会收到 `EMGroupManagerDelegate#didLeaveGroup` 回调。 // 同步方法,异步方法见 [EMGroupManager destroyGroup:finishCompletion:] [[EMClient sharedClient].groupManager destroyGroup:@"groupID"]; @@ -121,7 +121,7 @@ NSArray *members = @{@"member1",@"member2"}; 群成员也可以调用 `getGroupSpecificationFromServerWithId` 方法从服务器获取群组详情。返回的结果包括群组 ID、群组名称、群组描述、群组基本属性、群主、群组管理员列表、是否已屏蔽群组消息以及群组是否禁用。另外,若将该方法的 `fetchMembers` 参数设置为 `true`,可获取群成员列表,默认最多包括 200 个成员。 -```objectivec +```Objective-C // 原型 异步方法 - (void)getGroupSpecificationFromServerWithId:(NSString *)aGroupId fetchMembers:(BOOL)fetchMembers @@ -146,7 +146,7 @@ NSArray *admins = aGroup.adminList; - 当群成员少于 200 人时,你可以调用从服务器获取群组详情的方法 `getGroupSpecificationFromServerWithId` 获取获取群成员列表,包括群主、群管理员和普通群成员: -```objectivec +```Objective-C // 第二个参数传入 TRUE,默认取 200 人的群成员列表。 // 同步方法,异步方法见 [EMGroupManager getGroupSpecificationFromServerWithId:fetchMembers:completion:] EMGroup *group = [[EMClient sharedClient].groupManager @@ -158,7 +158,7 @@ NSArray *memberList = group.memberList; - 当群成员数量大于等于 200 时,你可以首先调用 `getGroupSpecificationFromServerWithId` 方法获取群主和群管理员,然后调用 `getGroupMemberListFromServerWithId` 方法获取普通群成员列表: -```objectivec +```Objective-C EMGroup *group = [[EMClient sharedClient].groupManager getGroupSpecificationFromServerWithId:@"groupID" fetchMembers:NO @@ -183,7 +183,7 @@ do { 用户可以调用 `getJoinedGroupsFromServer` 方法从服务器获取自己加入和创建的群组列表。示例代码如下: -```objectivec +```Objective-C // 异步方法 NSArray *groupList = [[EMClient sharedClient].groupManager getJoinedGroupsFromServerWithPage:0 pageSize:20 needMemberCount:YES needRole:YES completion:^(NSArray * _Nullable aList, EMError * _Nullable aError) { // got group list @@ -192,14 +192,14 @@ NSArray *groupList = [[EMClient sharedClient].groupManager getJoinedGroupsFromSe - 用户可以调用 `getJoinedGroups` 方法加载本地群组列表。为了保证数据的正确性,需要先从服务器获取自己加入和创建的群组列表。示例代码如下: -```objectivec +```Objective-C // 同步方法,本地缓存加载 NSArray *groupList = [[EMClient sharedClient].groupManager getJoinedGroups]; ``` - 用户还可以调用 `getPublicGroupsFromServerWithCursor` 方法分页获取公开群列表: -```objectivec +```Objective-C NSMutableArray *memberList = [[NSMutableArray alloc]init]; NSInteger pageSize = 50; NSString *cursor = nil; @@ -219,7 +219,7 @@ do { 自 4.2.0 版本开始,你可以调用 `EMGroupManager#getJoinedGroupsCountFromServerWithCompletion` 方法用于从服务器获取当前用户已加入的群组数量。单个用户可加入群组数量的上限取决于你订阅的即时通讯的套餐包,详见[产品价格](/product/pricing.html#套餐包功能详情)。 -```objectivec +```Objective-C [EMClient.sharedClient.groupManager getJoinedGroupsCountFromServerWithCompletion:^(NSInteger groupCount, EMError * _Nullable aError) { }]; @@ -231,7 +231,7 @@ do { 群成员可以调用 `blockGroup` 方法屏蔽群消息。屏蔽群消息后,该成员不再从指定群组接收群消息,群主和群管理员不能进行此操作。示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager blockGroup:completion:] [[EMClient sharedClient].groupManager blockGroup:@"groupID" error:nil]; ``` @@ -240,7 +240,7 @@ do { 群成员可以调用 `unblockGroup` 方法解除屏蔽群消息。示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager unblockGroup:completion:] [[EMClient sharedClient].groupManager unblockGroup:@"groupID" error:nil]; ``` @@ -255,7 +255,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 添加代理。 - (void)viewDidLoad { @@ -271,7 +271,7 @@ do { 群组事件如下(在该方法的举例中,用户 A 表示当前用户): -```objectivec +```Objective-C // 当前用户收到了入群邀请。受邀用户会收到该回调。例如,用户 B 邀请用户 A 入群,则用户 A 会收到该回调。 - (void)groupInvitationDidReceive:(NSString *)aGroupId inviter:(NSString *)aInviter message:(NSString *)aMessage { diff --git a/docs/document/ios/group_members.md b/docs/document/ios/group_members.md index 2c06c006e..5455b3bc3 100644 --- a/docs/document/ios/group_members.md +++ b/docs/document/ios/group_members.md @@ -52,7 +52,7 @@ 1. 调用 `getPublicGroupsFromServerWithCursor` 方法从服务器获取公开群列表,查询到想要加入的群组 ID。示例代码如下: -```objective-c +```Objective-C NSMutableArray *memberList = [[NSMutableArray alloc]init]; NSInteger pageSize = 50; NSString *cursor = nil; @@ -73,7 +73,7 @@ do { - 如果公开群无需群主或管理员审批,即 `EMGroupStyle` 为 `EMGroupStylePublicOpenJoin`,申请人会直接加入群组,其他群成员会收到 `EMGroupManagerDelegate#userDidJoinGroup` 回调。 - 如果公开群需要群主或管理员审批,即 `EMGroupStyle` 为 `EMGroupStylePublicJoinNeedApproval`,申请人不会直接加入群组,群主和群管理员收到 `EMGroupManagerDelegate#joinGroupRequestDidReceive` 回调。待群主或管理员同意入群申请后,申请人会收到joinGroupRequestDidApprove的回调。示例代码如下: -```objective-c +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager requestToJoinPublicGroup:@"groupId" message:nil completion:^(EMGroup *aGroup1, EMError *aError) { if (aError == nil) { @@ -93,7 +93,7 @@ do { 示例代码如下: -```objective-c +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager approveJoinGroupRequest:@"groupId" sender:@"userId" completion:^(EMGroup *aGroup, EMError *aError) { @@ -104,7 +104,7 @@ do { 示例代码如下: -```objective-c +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager declineJoinGroupRequest:@"groupId" sender:@"userId" reason:@"reason" completion:^(EMGroup *aGroup, EMError *aError) { @@ -121,7 +121,7 @@ do { - 群主或群管理员可以邀请人入群,对于私有群 `EMGroupStyle` 设置为 `EMGroupStylePrivateMemberCanInvite` 时,普通群成员也可以邀请人进群。邀请人入群需要调用 `addMembers` 方法: - ```objective-c + ```Objective-C // 异步方法 [[EMClient sharedClient].groupManager addMembers:@{@"member1",@"member2"} toGroup:@"groupID" @@ -133,14 +133,14 @@ do { - 受邀用户同意加入群组,需要调用 `acceptInvitationFromGroup` 方法。 - ```objective-c + ```Objective-C [[EMClient sharedClient].groupManager acceptInvitationFromGroup:@"groupId" inviter:@"userId" completion:^(EMGroup *aGroup, EMError *aError) { }]; ``` - 受邀人拒绝入群组,需要调用 `declineGroupInvitation` 方法。 - ```objective-c + ```Objective-C [[EMClient sharedClient].groupManager declineGroupInvitation:@"groupId" inviter:@"inviter" reason:@"reason" completion:^(EMError *aError) { }]; @@ -156,7 +156,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 同步方法,异步方法见 [EMGroupManager leaveGroup:completion:] [[EMClient sharedClient].groupManager leaveGroup:@"groupID" error:nil]; ``` @@ -167,7 +167,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.groupManager removeMembers:@[@"member1",@"member2"] fromGroup:@"groupId" completion:^(EMGroup * _Nullable aGroup, EMError * _Nullable aError) { @@ -190,7 +190,7 @@ do { 示例代码如下: -```objectivec +```Objective-C [EMClient.sharedClient.groupManager setMemberAttribute:groupId userId:userName attributes:@{key:value} completion:^(EMError * _Nullable error) { if (error == nil) { [self updateCacheWithGroupId:groupId userName:userName key:key value:value]; @@ -207,7 +207,7 @@ do { 示例代码如下: -```objectivec +```Objective-C [EMClient.sharedClient.groupManager fetchMemberAttribute:aGroupId userId:EMClient.sharedClient.currentUsername completion:^(NSDictionary * _Nullable attributes, EMError * _Nullable error) { if (error == nil) { //refresh UI according to attributes or cache. @@ -225,7 +225,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // keys:要获取自定义属性的 key 的数组。若 keys 为空数组或不传则获取这些成员的所有自定义属性。 [EMClient.sharedClient.groupManager fetchMembersAttributes:groupId userIds:@[userId] keys:@[@"1",@"2"] completion:^(NSDictionary *> * _Nullable attributes, EMError * _Nullable error) { //根据获取的自定义属性或缓存刷新 UI。 @@ -240,7 +240,7 @@ do { 示例如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager updateGroupOwner:@"groupID" newOwner:@"newOwner" @@ -255,7 +255,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager addAdmin:@"member" toGroup:@"groupID" @@ -270,7 +270,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager removeAdmin:@"admin" fromGroup:@"groupID" @@ -287,7 +287,7 @@ do { 即使开启了群组全员禁言,群组白名单中的成员仍可以发送群组消息。不过,禁言列表上的用户即使加入了群白名单仍无法在群组中发送消息。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager addWhiteListMembers:members fromGroup:@"groupID" @@ -300,7 +300,7 @@ do { 群成员被群主或者群管理员移除群白名单后,该群成员及其他未操作的群管理员和群主将会收到群组事件回调 `EMGroupManagerDelegate#groupWhiteListDidUpdate`。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager removeWhiteListMembers:members fromGroup:@"groupID" @@ -311,7 +311,7 @@ do { 所有群成员可以调用 `isMemberInWhiteListFromServerWithGroupId` 方法检查自己是否在群白名单中,示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager isMemberInWhiteListFromServerWithGroupId:@"groupID" @@ -322,7 +322,7 @@ do { 仅群主和群管理员可以调用 `getGroupWhiteListFromServerWithId` 方法从服务器获取当前群组的白名单。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager getGroupWhiteListFromServerWithId:@"groupID" completion:nil]; ``` @@ -337,7 +337,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager blockMembers:members fromGroup:@"groupID" @@ -350,7 +350,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager unblockMembers:members fromGroup:@"groupID" @@ -363,7 +363,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager getGroupBlacklistFromServerWithId:@"groupId" pageNumber:pageNumber @@ -385,7 +385,7 @@ do { 群成员被移出禁言列表后可以在群组中正常发送消息,被禁言成员和其他未操作的管理员或者群主将会收到群组事件回调 `EMGroupManagerDelegate#groupMuteListDidUpdate`。 -```objectivec +```Objective-C // 异步方法 // `muteMilliseconds`:禁言时间。传 -1 表示永久禁言。 [[EMClient sharedClient].groupManager muteMembers:members @@ -400,7 +400,7 @@ do { 群成员被群主或者群管理员移出禁言列表后,被移出的群成员及其他未操作的管理员或者群主将会收到群组事件回调 `EMGroupManagerDelegate#groupMuteListDidUpdate`。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager unmuteMembers:members fromGroup:@"groupID" @@ -413,7 +413,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager getGroupMuteListFromServerWithId:@"groupID" pageNumber:pageNumber @@ -431,7 +431,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager muteAllMembersFromGroup:@"groupID" completion:nil]; ``` @@ -442,7 +442,7 @@ do { 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].groupManager unmuteAllMembersFromGroup:@"groupID" completion:nil]; ``` diff --git a/docs/document/ios/initialization.md b/docs/document/ios/initialization.md index c1764cf18..d492ebadf 100644 --- a/docs/document/ios/initialization.md +++ b/docs/document/ios/initialization.md @@ -12,7 +12,7 @@ 初始化示例代码: -```swift +```Swift let options = EMOptions(appkey: "Your appkey") ......// 其他 EMOptions 配置。 EMClient.shared().initializeSDK(with: options) diff --git a/docs/document/ios/log.md b/docs/document/ios/log.md index 4db03b4a4..46f26471d 100644 --- a/docs/document/ios/log.md +++ b/docs/document/ios/log.md @@ -16,7 +16,7 @@ SDK 的 `EMOptions#logLevel` 指定了日志输出级别,默认为 `EMLogLevel 开发阶段若希望在 XCode console 上输出 SDK 日志,可在 SDK 初始化时打开开关。 -```objectivec +```Objective-C EMOptions* option = [EMOptions optionsWithAppkey:@"<#appkey#>"]; // 日志输出到 XCode console option.enableConsoleLog = YES; diff --git a/docs/document/ios/login.md b/docs/document/ios/login.md index 82cdfbce4..41aae83b8 100644 --- a/docs/document/ios/login.md +++ b/docs/document/ios/login.md @@ -28,7 +28,7 @@ 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```swift +```Swift EMClient.shared().login(withUsername: "userId", token: "token") { userId, err in if err == nil { // 登录成功 @@ -57,7 +57,7 @@ EMClient.shared().login(withUsername: "userId", token: "token") { userId, err in 初始化时,你可以设置 `EMOptions#isAutoLogin` 选项确定是否自动登录。如果设置为自动登录,则登录成功之后,后续初始化 SDK 时会自动登录,并收到以下回调。 -```swift +```Swift extension ViewController: EMClientDelegate { func autoLoginDidCompleteWithError(_ aError: EMError?) { @@ -79,7 +79,7 @@ extension ViewController: EMClientDelegate { 异步方法: -```swift +```Swift EMClient.shared().logout(true) { aError in if aError == nil { // 退出成功 diff --git a/docs/document/ios/message_delete.md b/docs/document/ios/message_delete.md index 4556cd839..8a5bd1bc3 100644 --- a/docs/document/ios/message_delete.md +++ b/docs/document/ios/message_delete.md @@ -31,7 +31,7 @@ 若使用该功能,需将 SDK 升级至 V4.4.0 或以上版本。 ::: -```swift +```Swift EMClient.shared().chatManager?.deleteAllMessagesAndConversations(true, completion: { aError in if let aError = aError { print("deleteAllMessagesAndConversations failed") @@ -54,7 +54,7 @@ 示例代码如下: -```Objectivec +```Objective-C // 按时间删除消息 [self.conversation removeMessagesFromServerWithTimeStamp:message.timestamp completion:^(EMError * _Nullable aError) { @@ -70,7 +70,7 @@ 你可以删除本地指定会话的所有消息,示例代码如下: -```swift +```Swift if let conversation = EMClient.shared().chatManager?.getConversationWithConvId("conversationId") { var err: EMError? = nil conversation.deleteAllMessages(&err) @@ -86,7 +86,7 @@ if let conversation = EMClient.shared().chatManager?.getConversationWithConvId(" 你可以删除本地指定会话在一段时间内的本地消息,示例代码如下: -```swift +```Swift if let conversation = EMClient.shared().chatManager?.getConversationWithConvId("conversationId") { conversation.removeMessagesStart(startTime, to: endTime) } @@ -96,7 +96,7 @@ if let conversation = EMClient.shared().chatManager?.getConversationWithConvId(" 你可以删除本地单个会话的指定消息,示例代码如下: -```swift +```Swift if let conversation = EMClient.shared().chatManager?.getConversationWithConvId("conversationId") { var err: EMError? = nil conversation.deleteMessage(withId: "messageId", error:&err) diff --git a/docs/document/ios/message_deliver_only_online.md b/docs/document/ios/message_deliver_only_online.md index 06d764f9f..11d07873c 100644 --- a/docs/document/ios/message_deliver_only_online.md +++ b/docs/document/ios/message_deliver_only_online.md @@ -27,7 +27,7 @@ 下面以发送文本消息为例进行说明: -```objective-c +```Objective-C // 调用 initWithText 创建文本消息。`content` 为文本消息的内容。 EMTextMessageBody *textMessageBody = [[EMTextMessageBody alloc] initWithText:content]; // 消息接收方:单聊为对端用户的 ID,群聊为群组 ID。 diff --git a/docs/document/ios/message_forward.md b/docs/document/ios/message_forward.md index 1c0c44046..8eb04ce02 100644 --- a/docs/document/ios/message_forward.md +++ b/docs/document/ios/message_forward.md @@ -30,7 +30,7 @@ 该功能也支持转发单条合并消息。 ::: -```swift +```Swift // message 为要转发的消息 if let message = EMClient.shared().chatManager?.getMessageWithMessageId("messageId") { // 使用原消息的 body 和 ext 创建转发消息 diff --git a/docs/document/ios/message_import_insert.md b/docs/document/ios/message_import_insert.md index a45c9b858..4e80bc628 100644 --- a/docs/document/ios/message_import_insert.md +++ b/docs/document/ios/message_import_insert.md @@ -28,7 +28,7 @@ 推荐一次导入 1,000 条以内的数据。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].chatManager importMessages:messages completion:nil]; ``` @@ -41,7 +41,7 @@ 消息会根据消息中的 Unix 时间戳插入本地数据库,SDK 会更新会话的 `latestMessage` 等属性。 -```objectivec +```Objective-C EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; [conversation insertMessage:message error:nil]; ``` diff --git a/docs/document/ios/message_modify.md b/docs/document/ios/message_modify.md index 0a6f12c51..58ea3e26f 100644 --- a/docs/document/ios/message_modify.md +++ b/docs/document/ios/message_modify.md @@ -35,7 +35,7 @@ 示例代码如下: -```ObjectiveC +```Objective-C [EMClient.sharedClient.chatManager modifyMessage:model.message.messageId body:body completion:^(EMError * _Nullable error, EMChatMessage * _Nullable message) { if (!error) { //refresh UI diff --git a/docs/document/ios/message_pin.md b/docs/document/ios/message_pin.md index 720fa2aa3..e44dc3a6b 100644 --- a/docs/document/ios/message_pin.md +++ b/docs/document/ios/message_pin.md @@ -30,7 +30,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```swift +```Swift EMClient.shared().chatManager?.pinMessage("messageId", completion: { message, err in if err == nil { // 置顶成功 @@ -44,7 +44,7 @@ EMClient.shared().chatManager?.pinMessage("messageId", completion: { message, er 单聊、群组或聊天室中的所有成员均可取消置顶消息,不论该消息是由哪个成员进行置顶的。取消置顶消息后,`EMMessagePinInfo` 中的信息为空,该会话的置顶消息列表中也不再包含该消息。 -```swift +```Swift EMClient.shared().chatManager?.unpinMessage("messageId", completion: { message, err in if err == nil { // 取消置顶成功 @@ -61,7 +61,7 @@ EMClient.shared().chatManager?.unpinMessage("messageId", completion: { message, 2. 若消息置顶后,用户撤回了该消息,则该消息从服务端移除,所有用户在从服务器拉取置顶消息列表时无法拉取到该消息。 ::: -```swift +```Swift EMClient.shared().chatManager?.getPinnedMessages(fromServer: "conversationId", completion: { messages, err in if err == nil, let messages = messages { // 获取置顶消息列表成功 diff --git a/docs/document/ios/message_recall.md b/docs/document/ios/message_recall.md index ec7f87882..c627f1bdd 100644 --- a/docs/document/ios/message_recall.md +++ b/docs/document/ios/message_recall.md @@ -31,7 +31,7 @@ 调用该方法后,服务端的该条消息(历史消息,离线消息或漫游消息)以及消息发送方和接收方的内存和数据库中的消息均会被移除,消息的接收方会收到 `messagesInfoDidRecall` 事件。对于附件类型消息,包括图片、音频和视频和文件消息,撤回消息后,消息附件也相应删除。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].chatManager recallMessageWithMessageId:messageId ext:@"extension info" completion:^(EMError *aError) { if (!aError) { @@ -44,7 +44,7 @@ - 对于 SDK 4.6.0 之前的版本,你可以调用 `recallMessageWithMessageId` 方法撤回一条发送成功的消息。该方法不支持通过 `ext` 字段传入自定义信息。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].chatManager recallMessageWithMessageId:messageId completion:^(EMError *aError) { if (!aError) { @@ -62,7 +62,7 @@ - 若用户在线接收了消息,消息撤回时,该事件中的 `EMRecallMessageInfo` 中的 `recallMessage` 为撤回的消息。 - 若消息发送和撤回时接收方离线,该事件中的 `EMRecallMessageInfo` 中的 `recallMessage` 为空。 -```objectivec +```Objective-C - (void)messagesInfoDidRecall:(NSArray * _Nonnull)aRecallMessagesInfo; { } diff --git a/docs/document/ios/message_receipt.md b/docs/document/ios/message_receipt.md index cc52278ea..1fed7b65d 100644 --- a/docs/document/ios/message_receipt.md +++ b/docs/document/ios/message_receipt.md @@ -48,7 +48,7 @@ 当接收方收到消息后,SDK 底层会自动进行消息送达回执。 -```objectivec +```Objective-C // 设置是否需要接收方送达确认,默认为 `NO` 即不需要。 options.enableDeliveryAck = YES; ``` @@ -57,7 +57,7 @@ options.enableDeliveryAck = YES; 3. 发送方监听 `EMChatManagerDelegate#messagesDidDeliver` 事件,收到接收方的送达回执。你可以在收到该通知时,显示消息的送达状态。 -```objectivec +```Objective-C // 继承并实现监听器。 EMChatManagerDelegate @@ -88,7 +88,7 @@ EMChatManagerDelegate 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```objectivec +```Objective-C options.enableRequireReadAck = YES; ``` @@ -98,13 +98,13 @@ options.enableRequireReadAck = YES; 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```objectivec +```Objective-C [[EMClient sharedClient].chatManager ackConversationRead:conversationId completion:nil]; ``` - 接收方在聊天页面打开时,接收到消息时,再根据消息类型发送单个消息已读回执。 -```objectivec +```Objective-C // 接收消息回调。 - (void)messagesDidReceive:(NSArray *)aMessages { @@ -134,7 +134,7 @@ options.enableRequireReadAck = YES; 消息发送方可以通过 `EMChatManagerDelegate#messagesDidRead` 事件监听指定消息是否已读,示例代码如下: -```objectivec +```Objective-C // 继承并实现监听器。 EMChatManagerDelegate @@ -172,20 +172,20 @@ EMChatManagerDelegate 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```objectivec +```Objective-C options.enableRequireReadAck = YES; ``` 2. 发送方发送消息时设置 `EMChatMessage#isNeedGroupAck` 属性为 `YES`。 -```objectivec +```Objective-C EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to from:from to:to body:aBody ext:aExt]; message.isNeedGroupAck = YES; ``` 3. 消息接收方发送群组消息的已读回执。 -```objectivec +```Objective-C - (void)sendGroupMessageReadAck:(EMChatMessage *)msg { if (msg.isNeedGroupAck && !msg.isReadAcked) { @@ -204,7 +204,7 @@ message.isNeedGroupAck = YES; 发送方接收到群组消息已读回执后,其发出消息的属性 `groupAckCount` 会有相应变化。 -```objectivec +```Objective-C // 继承并实现监听器。 EMChatManagerDelegate @@ -227,7 +227,7 @@ EMChatManagerDelegate 你可以调用 `IEMChatManager#asyncFetchGroupMessageAcksFromServer` 方法从服务器获取单条消息的已读回执的详情。 -```objectivec +```Objective-C // 异步方法。 // aMessageId 要获取的消息 ID。 // aGroupId 要获取回执对应的群 ID。 diff --git a/docs/document/ios/message_retrieve.md b/docs/document/ios/message_retrieve.md index 097e36cfa..1d83e2547 100644 --- a/docs/document/ios/message_retrieve.md +++ b/docs/document/ios/message_retrieve.md @@ -52,7 +52,7 @@ 4. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```swift +```Swift let option = EMFetchServerMessagesOption(); EMClient.shared().chatManager?.fetchMessagesFromServer(by: "conversationId", conversationType: .chat, cursor: "", pageSize: 50, option: option, completion: { result, err in if let err = err { @@ -65,7 +65,7 @@ let option = EMFetchServerMessagesOption(); 此外,你也可以调用 `asyncFetchHistoryMessagesFromServer` 方法从服务器获取指定会话的消息。你可以指定消息查询方向,即明确按时间顺序或逆序获取。为确保数据可靠,我们建议你每次最多获取 50 条消息,可多次获取。拉取后,SDK 会自动将消息更新到本地数据库。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].chatManager asyncFetchHistoryMessagesFromServer:conversation.conversationId conversationType:conversation.type startMessageId:self.moreMsgId pageSize:10 completion:^(EMCursorResult *aResult, EMError *aError) { [self.conversation loadMessagesStartFromId:self.moreMsgId count:10 searchDirection:EMMessageSearchDirectionUp completion:block]; @@ -76,7 +76,7 @@ let option = EMFetchServerMessagesOption(); 你可以调用以下方法从数据库中读取指定会话的消息: -```objectivec +```Objective-C // 获取指定会话 ID 的会话。 EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:conversationId type:type createIfNotExist:YES]; //startMsgId:查询的起始消息 ID; count:每次获取的消息条数。如果设为小于等于 0,SDK 获取 1 条消息。 @@ -88,7 +88,7 @@ NSArray *messages = [conversation loadMessagesStartFromId:start 你可以调用 `getMessageWithMessageId` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 -```objectivec +```Objective-C // 同步方法 EMConversation* conv = [EMClient.sharedClient.chatManager getConversationWithConvId:@"conversationId"]; EMError* err = nil; @@ -100,7 +100,7 @@ EMChatMessage* message = [EMClient.sharedClient.chatManager getMessageWithMessag 你可以调用 `loadMessagesWithType` 方法从本地存储中获取指定会话中特定类型的消息。每次最多可获取 400 条消息。若未获取到任何消息,SDK 返回空列表。 -```objectivec +```Objective-C // 异步方法 EMConversation* conv = [EMClient.sharedClient.chatManager getConversationWithConvId:@"conversationId"]; // timestamp:消息搜索的起始时间戳,单位为毫秒。该参数设置后,SDK 从指定的时间戳的消息开始,按照搜索方向对消息进行搜索。若设置为负数,SDK 从当前时间开始,按消息时间戳的逆序搜索。 @@ -117,7 +117,7 @@ EMConversation* conv = [EMClient.sharedClient.chatManager getConversationWithCon 每次最多可获取 400 条消息。 -```objectivec +```Objective-C // 异步方法 EMConversation* conv = [EMClient.sharedClient.chatManager getConversationWithConvId:@"conversationId"]; // startTime:查询的起始时间戳,单位为毫秒;endTime:查询的结束时间戳,单位为毫秒;count:每次获取的消息数量。取值范围为 [1,400]。 @@ -130,7 +130,7 @@ EMConversation* conv = [EMClient.sharedClient.chatManager getConversationWithCon 你可以调用 `EMConversation#getMessageCountStart:to:` 方法从 SDK 本地数据库中获取会话在某个时间段内的全部消息数。 -```swift +```Swift if let conversation = EMClient.shared().chatManager?.getConversationWithConvId("conversationId") { let count = conversation.getMessageCountStart(startTimestamp, to: endTimestamp) } diff --git a/docs/document/ios/message_search.md b/docs/document/ios/message_search.md index 844802b62..705d7f30b 100644 --- a/docs/document/ios/message_search.md +++ b/docs/document/ios/message_search.md @@ -55,7 +55,7 @@ EMClient.shared().chatManager?.loadMessages(withKeyword: "keyword", timestamp: 0 若使用该功能,需将 SDK 升级至 V4.4.0 或以上版本。 ::: -```swift +```Swift if let conversation = EMClient.shared().chatManager?.getConversationWithConvId("conversationsId") { conversation.loadMessages(withKeyword: "keyword", timestamp: 0, count: 50, fromUser: "", searchDirection: .down, scope: .content, completion: { messages, aError in diff --git a/docs/document/ios/message_send_receive.md b/docs/document/ios/message_send_receive.md index 044dce7cd..8c3b57822 100644 --- a/docs/document/ios/message_send_receive.md +++ b/docs/document/ios/message_send_receive.md @@ -51,7 +51,7 @@ 示例代码: -```objective-c +```Objective-C // 调用 initWithText 创建文本消息。`content` 为文本消息的内容。 EMTextMessageBody *textMessageBody = [[EMTextMessageBody alloc] initWithText:content]; // 消息接收方,单聊为对端用户的 ID,群聊为群组 ID,聊天室为聊天室 ID。 @@ -70,7 +70,7 @@ message.chatType = EMChatTypeChatRoom; 对于聊天室消息,可设置消息优先级。示例代码如下: -```Objectivec +```Objective-C EMTextMessageBody* textBody = [[EMTextMessageBody alloc] initWithText:@"Hi"]; EMChatMessage* message = [[EMChatMessage alloc] initWithConversationID:@"roomId" body:textBody ext:nil]; message.chatType = EMChatTypeChatRoom; @@ -89,7 +89,7 @@ message.priority = EMChatRoomMessagePriorityHigh; 对于聊天室消息,你可以通过消息的 `EMChatMessage#broadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```objectivec +```Objective-C // 添加代理。 [[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil]; @@ -123,7 +123,7 @@ message.priority = EMChatRoomMessagePriorityHigh; 此外,发送附件类型消息时,可以在 progress 回调中获取附件上传的进度,以百分比表示,示例代码如下: -```objectivec +```Objective-C // 发送消息时可以设置 completion 回调,在该回调中更新消息的显示状态。例如消息发送失败后的提示等等。 [[EMClient sharedClient].chatManager sendMessage:message progress:^(int progress) { // progress 为附件上传进度块的百分比。 @@ -139,7 +139,7 @@ message.priority = EMChatRoomMessagePriorityHigh; 1. 发送语音消息前,在应用层录制语音文件。 2. 发送方调用 `initWithLocalPath` 和 `initWithConversationID` 方法传入语音文件的 URI、语音时长和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建语音消息,然后调用 `sendMessage` 方法发送消息。SDK 会将文件上传至环信服务器。 -```objectivec +```Objective-C // `localPath` 为语音文件本地资源路径,`displayName` 为附件的显示名称。 EMVoiceMessageBody *body = [[EMVoiceMessageBody alloc] initWithLocalPath:localPath displayName:displayName]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -153,7 +153,7 @@ message.chatType = EMChatTypeGroupChat; 4. 接收方收到 `messagesDidReceive` 回调,调用 `remotePath` 或 `localPath` 方法获取语音文件的服务器地址或本地路径,从而获取语音文件。 -```objectivec +```Objective-C EMVoiceMessageBody *voiceBody = (EMVoiceMessageBody *)message.body; // 获取语音文件在服务器的地址。 NSString *voiceRemotePath = voiceBody.remotePath; @@ -167,7 +167,7 @@ NSString *voiceLocalPath = voiceBody.localPath; 1. 发送方调用 `initWithData` 和 `initWithConversationID` 方法传入图片的本地资源标志符 URI、设置是否发送原图以及接收方的用户 ID (群聊或聊天室分别为群组 ID 或聊天室 ID)创建图片消息,然后调用 `sendMessage` 方法发送该消息。SDK 会将图片上传至环信服务器,服务器自动生成图片缩略图。 -```objectivec +```Objective-C // `imageData` 为图片本地资源,`displayName` 为附件的显示名称。 EMImageMessageBody *body = [[EMImageMessageBody alloc] initWithData:imageData displayName:displayName]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -178,7 +178,7 @@ message.chatType = EMChatTypeGroupChat; [[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil]; ``` -```objectivec +```Objective-C // 发送成功后,获取图片消息缩略图及附件。 EMImageMessageBody *body = (EMImageMessageBody *)message.body; // 从服务器端获取图片文件。 @@ -199,7 +199,7 @@ SDK 默认自动下载缩略图,即 `[EMClient sharedClient].options.isAutoDow 下载完成后,在回调里调用相应消息 `body` 的 `thumbnailLocalPath` 获取缩略图路径。 -```objectivec +```Objective-C EMImageMessageBody *imageBody = (EMImageMessageBody *)message.body; // 图片文件的本地缩略图资源路径。 NSString *thumbnailLocalPath = imageBody.thumbnailLocalPath; @@ -207,7 +207,7 @@ NSString *thumbnailLocalPath = imageBody.thumbnailLocalPath; 4. 获取图片消息的附件。 -```objectivec +```Objective-C [[EMClient sharedClient].chatManager downloadMessageAttachment:message progress:nil completion:^(EMChatMessage *message, EMError *error) { if (!error) { EMImageMessageBody *imageBody = (EMImageMessageBody *)message.body; @@ -224,7 +224,7 @@ NSString *thumbnailLocalPath = imageBody.thumbnailLocalPath; 2. 发送方调用 `initWithLocalPath` 方法传入视频文件的本地资源标志符、消息的显示名称和视频时长,构建视频消息体。然后,调用 `initWithConversationID` 方法传入会话 ID 和视频消息体,构建视频消息。最后,调用 `sendMessage` 方法发送消息。SDK 会将视频文件上传至环信消息服务器,自动将视频的首帧作为视频缩略图。 -```objectivec +```Objective-C // `localPath` 为本地资源路径,`displayName` 为视频的显示名称。 EMVideoMessageBody *body = [[EMVideoMessageBody alloc] initWithLocalPath:localPath displayName:@"displayName"]; body.duration = duration;// 视频时长。 @@ -244,7 +244,7 @@ SDK 默认自动下载缩略图,即 `[EMClient sharedClient].options.isAutoDow 5. 获取视频缩略图和视频原文件。 -```objectivec +```Objective-C // 发送成功后,获取视频消息缩略图及附件。 EMVideoMessageBody *body = (EMVideoMessageBody *)message.body; // 从服务器端获取视频文件的地址。 @@ -263,7 +263,7 @@ NSString *thumbnailLocalPath = body.thumbnailLocalPath; 1. 发送方调用 `initWithData` 和 `initWithConversationID` 方法传入文件的本地资源标志符和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建文件消息,然后调用 `sendMessage` 方法发送文件消息。SDK 将文件上传至环信服务器。 -```objectivec +```Objective-C // `fileData` 为本地资源,`fileName` 为附件的显示名称。 EMFileMessageBody *body = [[EMFileMessageBody alloc] initWithData:fileData displayName:fileName]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -275,7 +275,7 @@ message.chatType = EMChatTypeGroupChat; 2. 接收方收到 `messagesDidReceive` 回调,调用 `downloadMessageAttachment` 方法下载文件。 -```objectivec +```Objective-C [[EMClient sharedClient].chatManager downloadMessageAttachment:message progress:nil completion:^(EMChatMessage *message, EMError *error) { if (!error) { // 附件下载成功 @@ -285,7 +285,7 @@ message.chatType = EMChatTypeGroupChat; 3. 调用以下方法从服务器或本地获取文件附件: -```objectivec +```Objective-C EMFileMessageBody *body = (EMFileMessageBody *)message.body; // 从服务器端获取文件路径。 NSString *remotePath = body.remotePath; @@ -297,7 +297,7 @@ NSString *localPath = body.localPath; 当你需要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```objectivec +```Objective-C // `latitude` 为纬度,`longitude` 为经度,`address` 为具体位置内容。 EMLocationMessageBody *body = [[EMLocationMessageBody alloc] initWithLatitude:latitude longitude:longitude address:aAddress]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -318,7 +318,7 @@ message.chatType = EMChatTypeGroupChat; 透传消息发送后,不支持撤回。 ::: -```objectivec +```Objective-C // `action` 自定义 `NSString` 类型的命令内容。 EMCmdMessageBody *body = [[EMCmdMessageBody alloc] initWithAction:action]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -333,7 +333,7 @@ EMCmdMessageBody *body = [[EMCmdMessageBody alloc] initWithAction:action]; 请注意透传消息的接收方,也是由单独的回调进行通知,方便用户进行不同的处理。 -```objectivec +```Objective-C // 收到透传消息。 - (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages{ for (EMChatMessage *message in aCmdMessages) { @@ -365,7 +365,7 @@ EMCmdMessageBody *body = [[EMCmdMessageBody alloc] initWithAction:action]; 以下示例代码展示如何发送输入状态的透传消息。 -```objectivec +```Objective-C //发送表示正在输入的透传消息 #define MSG_TYPING_BEGIN @"TypingBegin" @@ -391,7 +391,7 @@ EMCmdMessageBody *body = [[EMCmdMessageBody alloc] initWithAction:action]; 以下示例代码展示如何接受和解析输入状态的透传消息。 -```objectivec +```Objective-C #define TypingTimerCountNum 10 - (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages { @@ -447,7 +447,7 @@ EMCmdMessageBody *body = [[EMCmdMessageBody alloc] initWithAction:action]; 除了几种消息之外,你可以自己定义消息类型,方便业务处理,即首先设置一个消息类型名称,然后可添加多种自定义消息。 -```objectivec +```Objective-C // event 为需要传递的自定义消息事件,比如名片消息,可以设置 "userCard";`ext` 为事件扩展字段,比如可以设置 `uid`,`nickname`,`avatar`。 EMCustomMessageBody* body = [[EMCustomMessageBody alloc] initWithEvent:@"userCard" ext:@{@"uid":aUid ,@"nickname":aNickName,@"avatar":aUrl}]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:toChatUsername from:fromChatUsername to:toChatUsername body:body ext:messageExt]; @@ -549,7 +549,7 @@ EMChatMessage* msg = [[EMChatMessage alloc] initWithConversationID:@"conversatio 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```objectivec +```Objective-C // 创建一条文本消息。 EMTextMessageBody* textBody = [[EMTextMessageBody alloc] initWithText:@"hello"]; EMChatMessage* msg = [[EMChatMessage alloc] initWithConversationID:@"groupId" body:textBody ext:nil]; @@ -571,7 +571,7 @@ msg.receiverList = @[@"A",@"B"]; 当目前消息类型不满足用户需求时,可以在扩展部分保存更多信息,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```objectivec +```Objective-C EMTextMessageBody *textMessageBody = [[EMTextMessageBody alloc] initWithText:content]; // 增加自定义属性。 NSDictionary *messageExt = @{@"attribute":@"value"}; diff --git a/docs/document/ios/message_traffic_statis.md b/docs/document/ios/message_traffic_statis.md index 8c04b4295..461e1a60d 100644 --- a/docs/document/ios/message_traffic_statis.md +++ b/docs/document/ios/message_traffic_statis.md @@ -43,7 +43,7 @@ SDK 仅统计本地消息的流量,而非消息的实际流量。一般而言 示例代码如下: -```objectivec +```Objective-C EMChatMessageStatistics * msgStatistics = [[[EMClient sharedClient] statisticsManager] getMessageStatisticsById:@"msgId"]; ``` @@ -51,7 +51,7 @@ EMChatMessageStatistics * msgStatistics = [[[EMClient sharedClient] statisticsMa 你可以统计一定时间段内发送和/或接收的指定或全部类型的消息,示例代码如下: -```objectivec +```Objective-C NSInteger count = [EMClient.sharedClient.statisticsManager getMessageCountWithStart:startTime end:endTime direction:EMMessageStatisticsDirectionAll type:EMMessageStatisticsTypeText]; ``` @@ -61,6 +61,6 @@ NSInteger count = [EMClient.sharedClient.statisticsManager getMessageCountWithSt 示例代码如下: -```objectivec +```Objective-C NSInteger bytes = [EMClient.sharedClient.statisticsManager getMessageStatisticsSizeWithStart:startTime end:endTime direction:EMMessageStatisticsDirectionAll type:EMMessageStatisticsTypeAll]; ``` \ No newline at end of file diff --git a/docs/document/ios/message_translation.md b/docs/document/ios/message_translation.md index f54d95891..d2bb498bd 100644 --- a/docs/document/ios/message_translation.md +++ b/docs/document/ios/message_translation.md @@ -39,7 +39,7 @@ iOS SDK 支持你通过调用 API 在项目中实现如下功能: SDK 支持所有微软翻译服务支持的语言,你可以使用 EMChatManager 模块的如下接口获取翻译功能支持的目标语言。 -```objectivec +```Objective-C /** * 获取翻译服务支持的语言。 * @param aCompletionBlock 完成的回调。 @@ -50,7 +50,7 @@ SDK 支持所有微软翻译服务支持的语言,你可以使用 EMChatManage 使用过程如下: -```objectivec +```Objective-C // 异步方法 [[[EMClient sharedClient] chatManager] fetchSupportedLanguages:^(NSArray * _Nullable languages, EMError * _Nullable error) { @@ -63,7 +63,7 @@ SDK 支持所有微软翻译服务支持的语言,你可以使用 EMChatManage 用户可以在收到文本消息后调用消息翻译接口进行翻译。接口定义如下: -```objectivec +```Objective-C /** * 翻译消息,异步方法。 * @@ -78,7 +78,7 @@ SDK 支持所有微软翻译服务支持的语言,你可以使用 EMChatManage 调用过程如下: -```objectivec +```Objective-C // 消息必须为文本消息。 [[[EMClient sharedClient] chatManager] translateMessage:msg targetLanguages:@[@"en",@"ja"] completion:^(EMChatMessage *message, EMError *error) { // 翻译后的译文信息获取。 @@ -91,7 +91,7 @@ SDK 支持所有微软翻译服务支持的语言,你可以使用 EMChatManage 用户可以在发送文本消息时,设置消息的目标语言,消息将在翻译后进行发送,接收方收到的消息将包含译文信息。使用过程如下: -```objectivec +```Objective-C EMTextMessageBody* msgBody = [[EMTextMessageBody alloc] initWithText:@"你好"]; msgBody.targetLanguages = @[@"en",@"ja"]; EMMessage*message = [[EMMessage alloc] initWithConversationID:@"to" from:@"from" to:@"to" body:msgBody ext:nil]; diff --git a/docs/document/ios/message_update.md b/docs/document/ios/message_update.md index 09eb4c83b..2c5db9aad 100644 --- a/docs/document/ios/message_update.md +++ b/docs/document/ios/message_update.md @@ -23,7 +23,7 @@ 你可以调用 `updateMessage` 方法更新本地数据库中的消息。 -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.chatManager updateMessage:message completion:^(EMChatMessage *aMessage, EMError *aError) { if (!aError) { diff --git a/docs/document/ios/moderation.md b/docs/document/ios/moderation.md index 9cff37915..1373ce813 100644 --- a/docs/document/ios/moderation.md +++ b/docs/document/ios/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```objectivec +```Objective-C // 异步方法 // msgId:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 diff --git a/docs/document/ios/multi_device.md b/docs/document/ios/multi_device.md index ef31cf156..9603b3521 100644 --- a/docs/document/ios/multi_device.md +++ b/docs/document/ios/multi_device.md @@ -61,7 +61,7 @@ iOS SDK 初始化时会生成登录 ID 用于在多设备登录和消息推送 你可以调用 `getSelfIdsOnOtherPlatformWithCompletion:` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```objectivec +```Objective-C [EMClient.sharedClient.contactManager getSelfIdsOnOtherPlatformWithCompletion:^(NSArray * _Nullable aList, EMError * _Nullable aError) { // 选择一个登录 ID 作为消息接收方。 NSString *to = aList.firstObject; @@ -80,7 +80,7 @@ iOS SDK 初始化时会生成登录 ID 用于在多设备登录和消息推送 你可以调用 `getLoggedInDevicesFromServerWithUsername` 或 `getLoggedInDevicesFromServerWithUserId` 方法通过传入用户 ID 和登录密码或用户 token 从服务器获取指定账号的在线登录设备的列表。调用该方法后,在 SDK 返回的信息中,`EMDeviceConfig` 中的 `deviceName` 属性表示自定义设备名称,若未自定义设备名称,返回设备型号。 -```objectivec +```Objective-C // 用户 ID + 密码 [EMClient.sharedClient getLoggedInDevicesFromServerWithUsername:<#userId#> password:<#password#> completion:^(NSArray * _Nullable aList, EMError * _Nullable aError) { @@ -101,7 +101,7 @@ iOS SDK 初始化时会生成登录 ID 用于在多设备登录和消息推送 登录成功后才会将该设置发送到服务器。 ::: -```objectivec +```Objective-C EMOptions* option = [EMOptions optionsWithAppkey:Appkey]; option.customDeviceName = @"XXX的iPad"; [EMClient.sharedClient initializeSDKWithOptions:option]; @@ -126,7 +126,7 @@ option.customDeviceName = @"XXX的iPad"; 登录成功后才会将该设置发送到服务器。 ::: -```objectivec +```Objective-C EMOptions* option = [EMOptions optionsWithAppkey:Appkey]; option.customOSType = 60; [EMClient.sharedClient initializeSDKWithOptions:option]; @@ -142,7 +142,7 @@ option.customOSType = 60; 登录成功后才会将该设置发送到服务器。 ::: -```objectivec +```Objective-C EMClient.sharedClient.option.loginExtensionInfo = @"you was kicked out by other device"; - (void)userAccountDidLoginFromOtherDeviceWithInfo:(EMLoginExtensionInfo* _Nullable)info { @@ -159,7 +159,7 @@ EMClient.sharedClient.option.loginExtensionInfo = @"you was kicked out by other 不登录也可以使用该接口。 ::: -```objectivec +```Objective-C // username:账户名称,password:账户密码。 NSString *username = @""; NSString *password = @""; @@ -181,7 +181,7 @@ NSString *password = @""; 不登录也可以使用该接口。 ::: -```objectivec +```Objective-C // 用户 ID + 密码 [EMClient.sharedClient kickAllDevicesWithUsername:username password:password completion:^(EMError * _Nullable aError) { }]; @@ -202,7 +202,7 @@ NSString *password = @""; 多端多设备场景下,无聊天室操作相关事件,只支持聊天室中发送和接收消息的同步。 ::: -```objectivec +```Objective-C //实现 `EMMultiDevicesDelegate` 监听其他设备上的操作。 @interface ViewController () @@ -353,7 +353,7 @@ NSString *password = @""; 当 PC 端和移动端登录同一个账号时,在移动端可以通过调用方法获取到 PC 端的登录 ID。该登录 ID 相当于特殊的好友用户 ID,可以直接使用于聊天,使用方法与好友的用户 ID 类似。 -```objectivec +```Objective-C NSArray *otherPlatformIds = [[EMClient sharedClient].contactManager getSelfIdsOnOtherPlatformWithError:nil]; if ([otherPlatformIds count] > 0) { NSString *chatter = otherPlatformIds[0]; diff --git a/docs/document/ios/overview.md b/docs/document/ios/overview.md index 307ba1dbd..ffa8a2f1e 100644 --- a/docs/document/ios/overview.md +++ b/docs/document/ios/overview.md @@ -20,7 +20,7 @@ 初始化示例代码: -```objectivec +```Objective-C // appkey 替换成你在环信即时通讯 IM 管理后台注册应用中的 App Key EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; [[EMClient sharedClient] initializeSDKWithOptions:options]; @@ -95,7 +95,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; 使用 token 登录时需要处理 token 过期的问题,比如每次登录时更新 token 等机制。 ::: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient loginWithUsername:@"username" token:@"token" completion:^(NSString * _Nonnull aUsername, EMError * _Nullable aError) { @@ -113,7 +113,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; 自动登录完成后,触发 `EMClientDelegate` 中的以下回调: -```objectivec +```Objective-C - (void)autoLoginDidCompleteWithError:(EMError * _Nullable)aError { } @@ -123,7 +123,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; ## 退出登录 -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient logout:YES completion:^(EMError * _Nullable aError) { @@ -134,7 +134,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; 你可以通过注册连接监听 `EMClientDelegate` 确认连接状态。 -```objectivec +```Objective-C - viewDidLoad { ... @@ -184,7 +184,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"]; 你可以通过监听 `EMClientDelegate` 中的以下回调,调用 `EMClient#logout:completion:` 退出登录并返回登录界面。 -```objectivec +```Objective-C // 当前登录账号在其它设备登录时,当前登录的设备被踢下线时会触发该回调。该回调在 4.7.0 及其以后版本已经被弃用,由 `userAccountDidLoginFromOtherDeviceWithInfo` 回调替换。 - (void)userAccountDidLoginFromOtherDevice { @@ -230,7 +230,7 @@ SDK 的 `EMOptions#logLevel` 指定了日志输出级别,默认为 `EMLogLevel 开发阶段若希望在 XCode console 上输出 SDK 日志,可在 SDK 初始化时打开开关。 -```objectivec +```Objective-C EMOptions* option = [EMOptions optionsWithAppkey:@"<#appkey#>"]; // 日志输出到 XCode console option.enableConsoleLog = YES; diff --git a/docs/document/ios/presence.md b/docs/document/ios/presence.md index b112a767a..6eed12009 100644 --- a/docs/document/ios/presence.md +++ b/docs/document/ios/presence.md @@ -48,7 +48,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `subscribe` 方法订阅指定用户的在线状态,示例代码如下: -```objectivec +```Objective-C [[[EMClient sharedClient] presenceManager] subscribe:@[@"Alice",@"Bob"] expiry:7*24*3600 completion:^(NSArray *presences, EMError *error) { }]; ``` @@ -68,7 +68,7 @@ 用户在线时,可调用 `publishPresenceWithDescription` 方法发布自定义在线状态: -```objectivec +```Objective-C // 异步方法 [[[EMClient sharedClient] presenceManager] publishPresenceWithDescription:@"custom presence" completion:^(EMError *error) { }]; @@ -80,13 +80,13 @@ 参考如下代码,添加用户在线状态的监听器: -```objectivec +```Objective-C [[[EMClient sharedClient] presenceManager] addDelegate:self delegateQueue:nil]; ``` 监听器实现以下代理方法: -```objectivec +```Objective-C - (void) presenceStatusDidChanged:(NSArray*)presences { NSLog(@"presenceStatusDidChanged:%@",presences); @@ -97,7 +97,7 @@ 若取消指定用户的在线状态订阅,可调用 `unsubscribe` 方法,示例代码如下: -```objectivec +```Objective-C // 异步方法 [[[EMClient sharedClient] presenceManager] unsubscribe:@[@"Alice"] completion:^(EMError *error) { @@ -108,7 +108,7 @@ 为方便用户管理订阅关系,SDK 提供 `fetchSubscribedMembersWithPageNum` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```objectivec +```Objective-C // 异步方法 [[[EMClient sharedClient] presenceManager] fetchSubscribedMembersWithPageNum:0 pageSize:50 Completion:^(NSArray* members,EMError*error){ }]; @@ -118,7 +118,7 @@ 如果不关注用户的在线状态变更,你可以调用 `fetchPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```objectivec +```Objective-C // 异步方法 // 每次最多可传 100 个用户 ID。 [[[EMClient sharedClient] presenceManager] fetchPresenceStatus:@[@"Alice",@"Tom"] completion:^(NSArray* presences,EMError*error){ diff --git a/docs/document/ios/privatecloud.md b/docs/document/ios/privatecloud.md index 0464f1e83..1ea0fbe53 100644 --- a/docs/document/ios/privatecloud.md +++ b/docs/document/ios/privatecloud.md @@ -6,7 +6,7 @@ SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法: -```objectivec +```Objective-C EMOptions *options = [EMOptions optionsWithAppkey:appkey]; options.enableDnsConfig = NO; options.chatPort = 8080;//设置端口号 @@ -20,7 +20,7 @@ options.rtcUrlDomain= "wss://mprtc.easemob.com";//设置多人音视频的服务 如果需要配置 HTTPS 只需加一个属性即可。 ::: -```objectivec +```Objective-C options.usingHttpsOnly = YES; ``` @@ -29,6 +29,6 @@ options.usingHttpsOnly = YES; 1. 服务器端配置 DNS 地址表 2. 设置服务器端配置的 URL 地址 -```objectivec +```Objective-C options.dnsURL = @"xxxx";//设置服务器端配置的 URL 地址 ``` \ No newline at end of file diff --git a/docs/document/ios/push/push_apns.md b/docs/document/ios/push/push_apns.md index 5434f6125..64cda4cb9 100644 --- a/docs/document/ios/push/push_apns.md +++ b/docs/document/ios/push/push_apns.md @@ -142,7 +142,7 @@ ### **步骤二 将证书名称传递给 SDK** -```plaintext +```Objective-C - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 注册推送。 [application registerForRemoteNotifications]; @@ -164,7 +164,7 @@ DeviceToken 注册后,iOS 系统会通过以下方式将 DeviceToken 回调给你,你需要把 DeviceToken 传给 SDK。 -``` +```Objective-C - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // 异步方法 [EMClient.sharedClient registerForRemoteNotificationsWithDeviceToken:deviceToken completion:^(EMError *aError) { diff --git a/docs/document/ios/push/push_display.md b/docs/document/ios/push/push_display.md index 6222947af..cda2c5fe1 100644 --- a/docs/document/ios/push/push_display.md +++ b/docs/document/ios/push/push_display.md @@ -14,7 +14,7 @@ 你可以调用 `updatePushDisplayName` 设置推送通知中显示的昵称,如以下代码示例所示: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.pushManager updatePushDisplayName:@"displayName" completion:^(NSString * aDisplayName, EMError * aError) { if (aError) { @@ -25,7 +25,7 @@ 你也可以调用 `updatePushDisplayStyle` 设置推送通知的显示样式,如下代码示例所示: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.pushManager updatePushDisplayStyle:EMPushDisplayStyleSimpleBanner completion:^(EMError * aError) { @@ -56,7 +56,7 @@ 你可以调用 `getPushNotificationOptionsFromServerWithCompletion` 方法获取推送通知中的显示属性,如以下代码示例所示: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.pushManager getPushNotificationOptionsFromServerWithCompletion:^(EMPushOptions * aOptions, EMError * aError) { @@ -112,7 +112,7 @@ 这种情况下,创建消息时无需传入 `title_args` 和 `content_args` 参数。 -```objectivec +```Objective-C //下面以文本消息为例,其他类型的消息设置方法相同。 EMTextMessageBody *body = [[EMTextMessageBody alloc]initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc]initWithConversationID:@"conversationId" from:@"currentUsername" to:@"conversationId" body:body ext:nil]; @@ -160,7 +160,7 @@ message.chatType = EMChatTypeChat; ![img](/images/android/push/push_template_custom_example.png) -```objectivec +```Objective-C //下面以文本消息为例,其他类型的消息设置方法相同。 EMTextMessageBody *body = [[EMTextMessageBody alloc]initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc]initWithConversationID:@"conversationId" from:@"currentUsername" to:@"conversationId" body:body ext:nil]; @@ -187,7 +187,7 @@ message.chatType = EMChatTypeChat; 若发送方在发送消息时使用了推送模板,则推送通知栏中的显示内容以发送方的推送模板为准。 ::: -```objective-C +```Objective-C [EMClient.sharedClient.pushManager setPushTemplate:@"templateName" completion:^(EMError * _Nullable aError) { }]; @@ -197,7 +197,7 @@ message.chatType = EMChatTypeChat; 创建推送消息时,你可以设置消息扩展字段自定义要显示的推送标题 `em_push_title` 和推送内容 `em_push_content`。 -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_apns_ext":@{ @@ -223,7 +223,7 @@ message.chatType = EMChatTypeChat; **解析的内容** -```plaintext +```json { "aps":{ "alert":{ diff --git a/docs/document/ios/push/push_extension.md b/docs/document/ios/push/push_extension.md index 7d0787045..7a884d75a 100644 --- a/docs/document/ios/push/push_extension.md +++ b/docs/document/ios/push/push_extension.md @@ -6,7 +6,7 @@ ## 自定义推送字段 -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_apns_ext":@{@"extern":@"custom string"}}; @@ -26,7 +26,7 @@ message.chatType = EMChatTypeChat; **解析的内容** -```plaintext +```json { "apns": { "alert": { @@ -61,7 +61,7 @@ message.chatType = EMChatTypeChat; 更多内容可以参考苹果官方文档:[生成远程推送通知](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification?language=objc)。 -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_apns_ext":@{@"em_push_sound":@"custom.caf"}}; @@ -81,7 +81,7 @@ message.chatType = EMChatTypeChat; **解析的内容** -```plaintext +```json { "aps":{ "alert":{ @@ -109,7 +109,7 @@ message.chatType = EMChatTypeChat; 使用该方式设置后,本条消息会忽略接收方的免打扰设置,不论是否处于免打扰时间段都会正常向对方推送通知; -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_force_notification":@YES}; @@ -130,7 +130,7 @@ message.ext = @{@"em_force_notification":@YES}; 发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方在发送消息时设置,而免打扰模式为接收方设置在指定时间段内不接收推送通知。 -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_ignore_notification":@YES}; @@ -149,7 +149,7 @@ message.ext = @{@"em_ignore_notification":@YES}; 如果你的目标平台是 iOS 10.0 或以上版本,你可以参考如下代码实现 [`UNNotificationServiceExtension`](https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension?language=objc) 的富文本推送功能。 -```plaintext +```Objective-C EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"test"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId from:currentUsername to:conversationId body:body ext:nil]; message.ext = @{@"em_apns_ext":@{@"em_push_mutable_content":@YES}}; @@ -167,6 +167,7 @@ message.chatType = EMChatTypeChat; | `em_push_mutable_content` | 是否使用富文本推送通知(`em_apns_ext`):
- `YES`:富文本推送通知;
- (默认)`NO`:普通推送通知。
该字段名固定,不可修改。 | 接收方收到富文本推送时,会进入回调 `didReceiveNotificationRequest:withContentHandler:`,示例代码如下: + ```Objective-C - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { // 推送扩展字段 @@ -179,7 +180,7 @@ message.chatType = EMChatTypeChat; **解析的内容** -```plaintext +```json { "aps":{ "alert":{ diff --git a/docs/document/ios/push/push_notification_mode_dnd.md b/docs/document/ios/push/push_notification_mode_dnd.md index fa198510f..a5fe0c7b1 100644 --- a/docs/document/ios/push/push_notification_mode_dnd.md +++ b/docs/document/ios/push/push_notification_mode_dnd.md @@ -63,7 +63,7 @@ 你可以调用 `EMPushManager#syncSilentModeConversationsFromServerCompletion:` 方法从服务器同步所有会话的推送通知方式设置。同步后成功后的结果会存储到本地数据库,然后你可以通过 `EMConversation#disturbType` 查询当前会话的推送通知方式。 -```swift +```Swift EMClient.shared().pushManager?.syncSilentModeConversations(fromServerCompletion: { err in if err == nil { if let conversations = EMClient.shared().chatManager?.getAllConversations() { @@ -80,7 +80,7 @@ EMClient.shared().pushManager?.syncSilentModeConversations(fromServerCompletion: 在本机上调用 `EMPushManager#setSilentModeForConversation:conversationType:params:completion` 设置会话的推送通知方式,在多设备事件 `EMMultiDevicesDelegate#onConversationEvent:conversationId:conversationType` 里会回调当前操作,此时参数 `event` 的值为 `EMMultiDevicesEventConversationMuteInfoChanged`。 -```swift +```Swift //对会话设置推送通知方式 let param = EMSilentModeParam(paramType: .remindType) param.remindType = .none @@ -132,7 +132,7 @@ extension ViewController: EMMultiDevicesDelegate { 你可以调用 `setSilentModeForAll` 设置 app 级别的推送通知,并通过指定 `EMSilentModeParam` 字段设置推送通知方式和免打扰模式,如下代码示例所示: -```objectivec +```Objective-C //设置推送通知方式为 `MentionOnly`。 EMSilentModeParam *param = [[EMSilentModeParam alloc]initWithParamType:EMSilentModeParamTypeRemindType]; param.remindType = EMPushRemindTypeMentionOnly; @@ -159,7 +159,7 @@ param.silentModeEndTime = [[EMSilentModeTime alloc]initWithHours:15 minutes:0]; 你可以调用 `getSilentModeForAll` 获取 app 级别的推送通知设置,如以下代码示例所示: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].pushManager getSilentModeForAllWithCompletion:^(EMSilentModeResult *aResult, EMError *aError) { if (!aError) { @@ -180,7 +180,7 @@ param.silentModeEndTime = [[EMSilentModeTime alloc]initWithHours:15 minutes:0]; 你可以调用 `setSilentModeForConversation` 设置指定会话的推送通知,并通过指定 `EMSilentModeParam` 字段设置推送通知方式和免打扰模式,如以下代码示例所示: -```objectivec +```Objective-C //设置推送通知方式为 `MentionOnly`。 EMSilentModeParam *param = [[EMSilentModeParam alloc]initWithParamType:EMSilentModeParamTypeRemindType]; param.remindType = EMPushRemindTypeMentionOnly; @@ -202,7 +202,7 @@ EMConversationType conversationType = EMConversationTypeGroupChat; 你可以调用 `getSilentModeForAllWithCompletion` 获取指定会话的推送通知设置,如以下代码示例所示: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].pushManager getSilentModeForAllWithCompletion:^(EMSilentModeResult *aResult, EMError *aError) { if (!aError) { @@ -229,7 +229,7 @@ EMConversationType conversationType = EMConversationTypeGroupChat; 你可以调用 `getSilentModeForConversations` 获取多个会话的推送通知设置,如以下代码示例所示: -```objectivec +```Objective-C NSArray *conversations = @[conversation1,conversation2]; // 异步方法 [[EMClient sharedClient].pushManager getSilentModeForConversations:conversationArray completion:^(NSDictionary*aResult, EMError *aError) { @@ -245,7 +245,7 @@ NSArray *conversations = @[conversation1,conversation2]; 以下代码示例显示了如何清除会话的推送通知方式的设置: -```objectivec +```Objective-C //清除指定会话的推送通知方式的设置。清除后,该会话会采取 app 的设置。 // 异步方法 [[EMClient sharedClient].pushManager clearRemindTypeForConversation:@"" conversationType:conversationType completion:^(EMSilentModeResult *aResult, EMError *aError) { diff --git a/docs/document/ios/push/push_parsing.md b/docs/document/ios/push/push_parsing.md index aafe3d0ea..257d44406 100644 --- a/docs/document/ios/push/push_parsing.md +++ b/docs/document/ios/push/push_parsing.md @@ -4,7 +4,7 @@ - 若 app 中使用了 `SceneDelegate`,app 的启动流程通过场景系统进行管理。当你点击离线推送的消息打开 app 时,app 将首先启动场景,然后调用 `SceneDelegate` 中的相应方法处理场景的连接和配置。你需要在 `SceneDelegate` 的 `scene(_:willConnectTo:options:)` 方法中查看 `connectionOptions` 参数获取推送内容,示例代码如下: -```objectivec +```Objective-C - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { // 获取启动选项 NSDictionary *launchOptions = connectionOptions.notificationResponse.notification.request.content.userInfo; @@ -15,7 +15,7 @@ - 若 app 中不使用 `SceneDelegate`,iOS 系统会通过 `application:didFinishLaunchingWithOptions:` 方法中的 `launchOptions` 将推送中的用户自定义信息传递给 app。你需要查看 `launchOptions` 参数获取推送内容。 -```plaintext +```Objective-C - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; } @@ -24,7 +24,7 @@ 推送中的用户自定义信息的数据结构: -```plaintext +```json { "aps":{ "alert":{ diff --git a/docs/document/ios/push/push_translation.md b/docs/document/ios/push/push_translation.md index bdf8d4d33..6cdabcb76 100644 --- a/docs/document/ios/push/push_translation.md +++ b/docs/document/ios/push/push_translation.md @@ -6,7 +6,7 @@ 以下代码示例显示了如何设置和获取推送通知的首选语言: -```objectivec +```Objective-C //设置离线推送的首选语言。 // 异步方法 [[EMClient sharedClient].pushManager setPreferredNotificationLanguage:@"EU" completion:^(EMError *aError) { diff --git a/docs/document/ios/quickstart.md b/docs/document/ios/quickstart.md index be8701e21..b82a707de 100644 --- a/docs/document/ios/quickstart.md +++ b/docs/document/ios/quickstart.md @@ -64,7 +64,7 @@ SDK 支持 **CocoaPods 导入**和**手动导入**两种方式。 在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。 -```objectivec +```Objective-C (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions { // appkey 替换成你在环信即时通讯 IM 管理后台注册应用中的 App Key @@ -80,7 +80,7 @@ SDK 支持 **CocoaPods 导入**和**手动导入**两种方式。 向工程中导入 Chat 文件。 -```objectivec +```Objective-C // ConversationId 接收消息方的环信ID:@"user2" // type 聊天类型:EMConversationTypeChat 单聊类型 // createIfNotExist 如果会话不存在是否创建会话:YES @@ -94,7 +94,7 @@ SDK 支持 **CocoaPods 导入**和**手动导入**两种方式。 设置用户名和密码创建账号。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient] registerWithUsername:@"username" password:@"your password" @@ -106,7 +106,7 @@ SDK 支持 **CocoaPods 导入**和**手动导入**两种方式。 利用创建的用户名和密码登录环信 IM。 -```objectivec +```Objective-C [[EMClient sharedClient] loginWithUsername:@"username" password:@"your password" completion:^(NSString *aUsername, EMError *aError) { @@ -118,7 +118,7 @@ SDK 支持 **CocoaPods 导入**和**手动导入**两种方式。 利用创建的用户名和密码登录环信 IM,向对端用户发送消息。在下面示例中,向 user 2 发送文本消息。 -```objectivec +```Objective-C // 创建消息 EMTextMessageBody* textBody = [[EMTextMessageBody alloc] initWithText:@"hello"]; EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:@"user2" diff --git a/docs/document/ios/reaction.md b/docs/document/ios/reaction.md index 39db3797e..ce577ee52 100644 --- a/docs/document/ios/reaction.md +++ b/docs/document/ios/reaction.md @@ -42,7 +42,7 @@ Reaction 场景示例如下: 示例代码如下: -```objectivec +```Objective-C // 添加 Reaction。异步方法 [EMClient.sharedClient.chatManager addReaction:@"reaction" toMessage:@"messageId" completion:^(EMError * _Nullable error) { refreshBlock(error, changeSelectedStateHandle); @@ -61,7 +61,7 @@ Reaction 场景示例如下: 示例代码如下: -```objectivec +```Objective-C // 删除 Reaction。异步方法 [EMClient.sharedClient.chatManager removeReaction:@"reaction" fromMessage:@"messageId" completion:^(EMError * _Nullable error) { refreshBlock(error, changeSelectedStateHandle); @@ -78,7 +78,7 @@ Reaction 场景示例如下: 调用 `getReactionList` 方法从服务器获取指定消息的 Reaction 概览列表,列表内容包含 Reaction 内容,添加或移除 Reaction 的用户数量,以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.chatManager getReactionList:@["messageId"] groupId:@"groupId" chatType:EMChatTypeChat completion:^(NSDictionary * _Nonnull, EMError * _Nullable) { @@ -89,7 +89,7 @@ Reaction 场景示例如下: 调用 `getReactionDetail` 方法可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容,添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.chatManager getReactionDetail:@"messageId" reaction:@"reaction" cursor:nil pageSize:30 completion:^(EMMessageReaction * _Nonnull, NSString * _Nullable cursor, EMError * _Nullable) { diff --git a/docs/document/ios/room_attributes.md b/docs/document/ios/room_attributes.md index 07b21d520..5e8225773 100644 --- a/docs/document/ios/room_attributes.md +++ b/docs/document/ios/room_attributes.md @@ -39,7 +39,7 @@ 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager getChatroomAnnouncementWithId:@"chatRoomId" completion:nil]; ``` @@ -50,7 +50,7 @@ 示例代码如下: -```objectivec +```Objective-C EMError *error = nil; // 异步方法 [[EMClient sharedClient].roomManager updateChatroomAnnouncementWithId:_chatroomId announcement:textString completion:nil]; @@ -62,7 +62,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C EMError *error = nil; // 异步方法 [[EMClient sharedClient].roomManager updateSubject:textString forChatroom:self.chatroom.chatroomId completion:nil]; @@ -74,7 +74,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C EMError *error = nil; // 异步方法 [[EMClient sharedClient].roomManager updateDescription:textString forChatroom:self.chatroom.chatroomId completion:nil]; @@ -88,7 +88,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager fetchChatroomAttributes:self.currentConversation.conversationId keys:@[@"123"] completion:^(NSDictionary * _Nullable map, EMError * _Nullable error) { @@ -101,7 +101,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager fetchChatroomAllAttributes:self.currentConversation.conversationId completion:^(NSDictionary * _Nullable map, EMError * _Nullable error) { @@ -114,7 +114,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager setChatroomAttributes:self.currentConversation.conversationId key:@"234" value:@"123" autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -127,7 +127,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager setChatroomAttributesForced:self.currentConversation.conversationId key:@"234" value:@"123" autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -140,7 +140,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager setChatroomAttributes:self.currentConversation.conversationId attributes:@{@"testKey":@"123"} autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -153,7 +153,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager setChatroomAttributesForced:self.currentConversation.conversationId attributes:@{@"testKey":@"123"} autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { }]; @@ -165,7 +165,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager removeChatroomAttributes:self.currentConversation.conversationId key:@"234" autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -178,7 +178,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager removeChatroomAttributesForced:self.currentConversation.conversationId key:@"234" autoDelete:YES completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -191,7 +191,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager removeChatroomAttributes:self.currentConversation.conversationId attributes:@[@"testKey"] completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { @@ -204,7 +204,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.roomManager removeChatroomAttributesForced:self.currentConversation.conversationId attributes:@[@"testKey"] completionBlock:^(EMError * _Nullable aError, NSDictionary * _Nullable failureKeys) { diff --git a/docs/document/ios/room_manage.md b/docs/document/ios/room_manage.md index 6ec57fc90..69b218ac8 100644 --- a/docs/document/ios/room_manage.md +++ b/docs/document/ios/room_manage.md @@ -42,7 +42,7 @@ 示例代码如下: -```objectivec +```Objective-C EMError *error; EMChatroom *chatroom = [[EMClient sharedClient].roomManager createChatroomWithSubject:@"Subject" description:@"description" invitees:@[@"user1",@"user2"] message:@"message" maxMembersCount:100 error:&error]; ``` @@ -56,7 +56,7 @@ EMError *error; 示例代码如下: -```objectivec +```Objective-C // 获取公开聊天室列表,每次最多可获取 1,000 个。 // 异步方法 [[EMClient sharedClient].roomManager getChatroomsFromServerWithPage:1 pageSize:50 completion:nil]; @@ -68,7 +68,7 @@ EMError *error; 同时,你可以调用 `EMChatroomManager#joinChatroom:ext:leaveOtherRooms:completion:` 方法,设置加入聊天室时携带的扩展信息,并指定是否退出所有其他聊天室。调用该方法后,聊天室内其他成员会收到 `EMChatroomManagerDelegate#userDidJoinChatroom:user:ext:` 回调,当用户加入聊天室携带了扩展信息时,聊天室内其他人可以在用户加入聊天室的回调中,获取到扩展信息。 -```swift +```Swift // 加入聊天室时,传入 ext (以昵称为例),同时退出其他聊天室 EMClient.shared().roomManager?.joinChatroom("roomId", ext: "nickname=myNickname", leaveOtherRooms: true, completion: { room, err in @@ -88,7 +88,7 @@ extension ViewController: EMChatroomManagerDelegate { 示例代码如下: -```objectivec +```Objective-C // 异步方法 EMChatroom *chatroom = [[EMClient sharedClient].roomManager getChatroomSpecificationFromServerWithId:@“chatroomId” completion:nil]; ``` @@ -99,7 +99,7 @@ EMChatroom *chatroom = [[EMClient sharedClient].roomManager getChatroomSpecifica 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].roomManager destroyChatroom:self.chatroom.chatroomId completion:nil]; ``` @@ -110,7 +110,7 @@ SDK 中提供了聊天室事件的监听接口。你可以通过注册聊天室 示例代码如下: -```objectivec +```Objective-C // 注册聊天室回调。 [[EMClient sharedClient].roomManager addDelegate:self delegateQueue:nil]; // 移除聊天室回调。 @@ -119,7 +119,7 @@ SDK 中提供了聊天室事件的监听接口。你可以通过注册聊天室 具体事件如下: -```objectivec +```Objective-C // 有用户加入聊天室。聊天室的所有成员(除新成员外)会收到该事件。 - (void)userDidJoinChatroom:(EMChatroom *)aChatroom user:(NSString *)aUsername { diff --git a/docs/document/ios/room_members.md b/docs/document/ios/room_members.md index f0f9ef36b..1178cdab6 100644 --- a/docs/document/ios/room_members.md +++ b/docs/document/ios/room_members.md @@ -34,7 +34,7 @@ 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager getChatroomMemberListFromServerWithId:cursor:pageSize:completion] //cursor:从该游标位置开始取数据。首次调用 cursor 传空值,从最新数据开始获取。 //pageSize:每页期望返回的成员数,最大值为 1,000。 @@ -50,20 +50,20 @@ EMCursorResult * result = [[EMClient sharedClient].roomManager getCha 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].roomManager leaveChatroom:@"aChatroomId" completion:nil]; ``` 退出聊天室时,SDK 默认删除该聊天室所有本地消息,若要保留这些消息,可在 SDK 初始化时将 `isDeleteMessagesWhenExitChatRoom` 设置为 `NO`。 -```objectivec +```Objective-C @property (nonatomic, assign) BOOL isDeleteMessagesWhenExitChatRoom; ``` 示例代码如下: -```objectivec +```Objective-C EMOptions *retOpt = [EMOptions optionsWithAppkey:@"appkey"]; retOpt.isDeleteMessagesWhenExitChatRoom = NO; ``` @@ -80,7 +80,7 @@ retOpt.isDeleteMessagesWhenExitChatRoom = NO; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager removeMembers:fromChatroom:completion] [EMClient.sharedClient.roomManager removeMembers:@[@"member1",@"member2"] fromChatroom:@"roomId" completion:^(EMChatroom * _Nullable aChatroom, EMError * _Nullable aError) { @@ -108,7 +108,7 @@ retOpt.isDeleteMessagesWhenExitChatRoom = NO; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager blockMembers:fromChatroom:completion] EMError *error = nil; [[EMClient sharedClient].roomManager blockMembers:@[@"userName"] fromChatroom:@"chatroomId" error:&error]; @@ -120,7 +120,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager unblockMembers:fromChatroom:completion] EMError *error = nil; [[EMClient sharedClient].roomManager unblockMembers:@[@"userName"] fromChatroom:@"chatroomId" error:&error]; @@ -132,7 +132,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager getChatroomBlacklistFromServerWithId:pageNumber:pageSize:completion] EMError *error = nil; NSArray * blockMembers = [[EMClient sharedClient].roomManager getChatroomBlacklistFromServerWithId:@"chatroomId" pageNumber:1 pageSize:20 error:&error]; @@ -150,7 +150,7 @@ NSArray * blockMembers = [[EMClient sharedClient].roomManager getCha 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager getChatroomWhiteListFromServerWithId:completion] EMError *error = nil; NSArray *allowMembers = [EMClient.sharedClient.roomManager getChatroomWhiteListFromServerWithId:@"aChatroomId" error:&error]; @@ -160,7 +160,7 @@ NSArray *allowMembers = [EMClient.sharedClient.roomManager getChatro 所有聊天室成员可以调用 `isMemberInWhiteListFromServerWithChatroomId` 方法检查自己是否在白名单中,示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager isMemberInWhiteListFromServerWithChatroomId:completion] EMError *error = nil; BOOL isAllowed = [EMClient.sharedClient.roomManager isMemberInWhiteListFromServerWithChatroomId:@"aChatroomId" error:&error]; @@ -172,7 +172,7 @@ BOOL isAllowed = [EMClient.sharedClient.roomManager isMemberInWhiteListFromServe 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager addWhiteListMembers:fromChatroom:completion] EMError *error = nil; [EMClient.sharedClient.roomManager addWhiteListMembers:@[@"userId1",@"userId2"] fromChatroom:@"aChatroomId" error:&error]; @@ -184,7 +184,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager removeWhiteListMembers:fromChatroom:completion] EMError *error = nil; [EMClient.sharedClient.roomManager removeWhiteListMembers:@[@"userId1",@"userId2"] fromChatroom:@"aChatroomId" error:&error]; @@ -202,7 +202,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager muteMembers:muteMilliseconds:fromChatroom:completion] // `muteMilliseconds`:禁言时间。传 -1 表示永久禁言。 EMError *error = nil; @@ -219,7 +219,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager unmuteMembers:fromChatroom:completion] EMError *error = nil; [[EMClient sharedClient].roomManager unmuteMembers:@[@"userName"] fromChatroom:@"chatroomId" error:&error]; @@ -231,7 +231,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager getChatroomMuteListFromServerWithId:pageNumber:pageSize:completion] EMError *error = nil; NSArray * muteMembers = [[EMClient sharedClient].roomManager getChatroomMuteListFromServerWithId:@"chatroomId" pageNumber:1 pageSize:20 error:&error]; @@ -249,7 +249,7 @@ NSArray * muteMembers = [[EMClient sharedClient].roomManager getChat 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager muteAllMembersFromChatroom:completion] EMError *error = nil; [EMClient.sharedClient.roomManager muteAllMembersFromChatroom:@"chatRoomId" error:&error]; @@ -261,7 +261,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager unmuteAllMembersFromChatroom:completion] EMError *error = nil; [EMClient.sharedClient.roomManager unmuteAllMembersFromChatroom:@"chatRoomId" error:&error]; @@ -275,7 +275,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager updateChatroomOwner:newOwner:completion] EMError *error = nil; [[EMClient sharedClient].roomManager updateChatroomOwner:@"chatroomId" newOwner:@"textString" error:&error]; @@ -287,7 +287,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager addAdmin:toChatroom:completion] EMError *error = nil; [[EMClient sharedClient].roomManager addAdmin:@"userName" toChatroom:@"chatroomId" error:&error]; @@ -299,7 +299,7 @@ EMError *error = nil; 示例代码如下: -```objectivec +```Objective-C // 同步方法,阻塞线程,异步方法参见[EMChatroomManager removeAdmin:fromChatroom:completion] EMError *error = nil; [[EMClient sharedClient].roomManager removeAdmin:@"userName" fromChatroom:@"chatroomId" error:&error]; diff --git a/docs/document/ios/thread.md b/docs/document/ios/thread.md index facf794b3..02b05d1a8 100644 --- a/docs/document/ios/thread.md +++ b/docs/document/ios/thread.md @@ -38,7 +38,7 @@ 示例代码如下: -```objectivec +```Objective-C // threadName:子区名称,长度不超过 64 个字符 // messageId:消息 ID,基于该消息创建子区 // parentId:群组 ID @@ -64,7 +64,7 @@ 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.threadManager destroyChatThread:self.conversationId completion:^(EMError *aError) { if (!aError) { @@ -88,7 +88,7 @@ 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.threadManager joinChatThread:model.message.threadOverView.threadId completion:^(EMChatThread *thread,EMError *aError) { if (!aError || aError.code == EMErrorUserAlreadyExist) { @@ -107,7 +107,7 @@ 示例代码如下: -```objectivec +```Objective-C // 异步方法 [EMClient.sharedClient.threadManager leaveChatThread:self.conversationId completion:^(EMError *aError) { if (!aError) { @@ -126,7 +126,7 @@ 示例代码如下: -```objectivec +```Objective-C // chatThreadId:子区 ID // member:子区成员的用户 ID // 异步方法 @@ -147,7 +147,7 @@ 示例代码如下: -```objectivec +```Objective-C // threadId:子区 ID // ThreadName:修改后的子区名称(不超过 64 个字符) // 异步方法 @@ -166,7 +166,7 @@ 示例代码如下: -```objectivec +```Objective-C // threadId:子区 ID // 异步方法 [EMClient.sharedClient.threadManager getChatThreadDetail:self.currentConversation.conversationId completion:^(EMChatThread *thread, EMError *aError) { @@ -182,7 +182,7 @@ 子区所属群组的所有成员均可以调用 `getChatThreadMemberListFromServerWithId` 方法从服务器分页获取子区成员列表。 -```objectivec +```Objective-C // threadId:子区 ID // pageSize:单次请求返回的成员数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `nil` 或空字符串 @@ -196,7 +196,7 @@ 1. 用户可以调用 `getJoinedChatThreadsFromServer` 方法从服务器分页获取自己加入和创建的子区列表: -```objectivec +```Objective-C // limit:单次请求返回的子区数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `nil` 或空字符串 // 异步方法 @@ -207,7 +207,7 @@ 2. 用户可以调用 `getJoinedChatThreadsFromServer` 方法从服务器分页获取指定群组中自己加入和创建的子区列表: -```objectivec +```Objective-C // parentId:群组 ID // pageSize:单次请求返回的子区数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `nil` 或空字符串 @@ -221,7 +221,7 @@ 3. 用户还可以调用 `getChatThreadsFromServer` 方法从服务器分页获取指定群组的子区列表: -```objectivec +```Objective-C // parentId: 群组 ID // pageSize: 单次请求返回的子区数,取值范围为 [1,50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `nil` 或空字符串 @@ -239,7 +239,7 @@ 示例代码如下: -```objectivec +```Objective-C // threadIds:要查询的子区 ID 列表,每次最多可传入 20 个子区 ID // 异步方法 [[EMClient sharedClient].threadManager getLastMessageFromSeverWithChatThreads:ids completion:^(NSDictionary * _Nonnull messageMap, EMError * _Nonnull aError) { @@ -255,7 +255,7 @@ 示例代码如下: -```objectivec +```Objective-C EMChatThreadManagerDelegate // 子区创建。子区所属群组的所有成员收到该事件。 diff --git a/docs/document/ios/thread_message.md b/docs/document/ios/thread_message.md index a3b12a8b8..41f98f011 100644 --- a/docs/document/ios/thread_message.md +++ b/docs/document/ios/thread_message.md @@ -46,7 +46,7 @@ 示例代码如下: -```objectivec +```Objective-C // 创建一条文本消息,`content` 为消息文字内容,`chatThreadId` 为子区 ID。 NSString *from = [[EMClient sharedClient] currentUsername]; NSString *chatThreadId = self.currentConversation.conversationId; @@ -71,7 +71,7 @@ message.isChatThread = self.isChatThread; 示例代码如下: -```objectivec +```Objective-C - (void)messagesDidReceive:(NSArray *)aMessages { // 做相关处理。 @@ -90,7 +90,7 @@ message.isChatThread = self.isChatThread; 示例代码如下: -```objectivec +```Objective-C - (void)messagesInfoDidRecall:(NSArray *)aRecallMessagesInfo {} ``` @@ -105,7 +105,7 @@ message.isChatThread = self.isChatThread; 调用 `asyncFetchHistoryMessagesFromServer` 方法从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```objectivec +```Objective-C [EMClient.sharedClient.chatManager asyncFetchHistoryMessagesFromServer:@"threadId" conversationType:EMConversationTypeGroupChat startMessageId:@"" fetchDirection:EMMessageFetchHistoryDirectionUp pageSize:20 completion:^(EMCursorResult * _Nullable aResult, EMError * _Nullable aError) { }]; @@ -115,7 +115,7 @@ message.isChatThread = self.isChatThread; 调用 `EMChatManager#getAllConversations` 方法只能获取单聊或群聊会话。要获取本地单个子区会话中的消息,参考以下示例代码: -```objectivec +```Objective-C // 需设置会话类型为 `EMConversationTypeGroupChat` 和 `isThread` 为 `YES` EMConversation* conversation = [EMClient.sharedClient.chatManager getConversation:conversationId type:EMConversationTypeGroupChat createIfNotExist:NO isThread:YES]; // 获取该子区会话的消息 diff --git a/docs/document/ios/user_relationship.md b/docs/document/ios/user_relationship.md index 81aac6bf2..bb066726d 100644 --- a/docs/document/ios/user_relationship.md +++ b/docs/document/ios/user_relationship.md @@ -45,7 +45,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].contactManager addContact:@"aUsername" message:@"Message" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { @@ -62,7 +62,7 @@ if (!aError) { 设置好友监听示例代码如下: -```objectivec +```Objective-C // 注册好友回调。 [[EMClient sharedClient].contactManager addDelegate:self delegateQueue:nil]; // 移除好友回调。 @@ -76,7 +76,7 @@ if (!aError) { 收到好友请求后,可以选择同意加好友申请或者拒绝加好友申请,示例代码如下: -```objectivec +```Objective-C // 同意好友申请。 // 异步方法 [[EMClient sharedClient].contactManager approveFriendRequestFromUser:@"aUsername" completion:^(NSString *aUsername, EMError *aError) { @@ -102,7 +102,7 @@ if (!aError) { 示例代码如下: -```objectivec +```Objective-C // 对方同意了好友申请。 - (void)friendRequestDidApproveByUser:(NSString *)aUsername { } @@ -118,7 +118,7 @@ if (!aError) { 示例代码如下: -```objectivec +```Objective-C // 删除好友。 // 异步方法 [[EMClient sharedClient].contactManager deleteContact:@"aUsername" isDeleteConversation:aIsDeleteConversation completion:^(NSString *aUsername, EMError *aError) { @@ -132,7 +132,7 @@ if (!aError) { 调用 `deleteContact` 删除好友后,用户 A,B 都会收到 `friendshipDidRemoveByUser` 回调,示例代码如下: -```objectivec +```Objective-C // 好友已被删除。 - (void)friendshipDidRemoveByUser:(NSString *)aUsername { } @@ -144,7 +144,7 @@ if (!aError) { 好友备注的长度不能超过 100 个字符。 -```objective-c +```Objective-C [EMClient.sharedClient.contactManager setContactRemark:@"userId" remark:@"remark" completion:^(EMContact * _Nullable contact, EMError * _Nullable aError) { }]; @@ -158,7 +158,7 @@ if (!aError) { - 一次性获取服务端的好友列表。 -```objectivec +```Objective-C [EMClient.sharedClient.contactManager getAllContactsFromServerWithCompletion:^(NSArray * _Nullable aList, EMError * _Nullable aError) { }]; @@ -166,7 +166,7 @@ if (!aError) { - 分页获取服务端的好友列表。 -```objectivec +```Objective-C //pageSize 的取值范围为 [1,50] [EMClient.sharedClient.contactManager getContactsFromServerWithCursor:@"" pageSize:50 completion:^(EMCursorResult * _Nullable aResult, EMError * _Nullable aError) { @@ -175,7 +175,7 @@ if (!aError) { 此外,你也可以调用 `getContactsFromServerWithCompletion` 方法从服务器获取所有好友的列表。该列表只包含好友的用户 ID。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].contactManager getContactsFromServerWithCompletion:^(NSArray *aList, EMError *aError) { if (!aError) { @@ -196,13 +196,13 @@ if (!aError) { - 获取本地单个好友。 -```objectivec +```Objective-C EMContact* contact = [EMClient.sharedClient.contactManager getContact:@"userId"]; ``` - 一次性获取本地好友列表。 -```objectivec +```Objective-C NSArray* contacts = [EMClient.sharedClient.contactManager getAllContacts]; ``` @@ -210,7 +210,7 @@ NSArray* contacts = [EMClient.sharedClient.contactManager getAllCont 示例代码如下: -```objectivec +```Objective-C NSArray *userlist = [[EMClient sharedClient].contactManager getContacts]; ``` @@ -224,7 +224,7 @@ NSArray *userlist = [[EMClient sharedClient].contactManager getContacts]; 从服务器获取黑名单列表之后,才能从本地数据库获取到黑名单列表。 -```objectivec +```Objective-C // 从服务器获取黑名单列表。 // 异步方法 [[EMClient sharedClient].contactManager getBlackListFromServerWithCompletion:^(NSArray *aList, EMError *aError) { @@ -238,7 +238,7 @@ NSArray *userlist = [[EMClient sharedClient].contactManager getContacts]; 2. 从本地数据库获取黑名单列表 -```objectivec +```Objective-C // 同步方法 NSArray *blockList = [[EMClient sharedClient].contactManager getBlackList]; ``` @@ -251,7 +251,7 @@ NSArray *blockList = [[EMClient sharedClient].contactManager getBlackList]; 示例代码如下: -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].contactManager addUserToBlackList:@"aUsername" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { @@ -266,7 +266,7 @@ NSArray *blockList = [[EMClient sharedClient].contactManager getBlackList]; 你可以调用 `removeUserFromBlackList` 将用户从黑名单移除,用户发送消息等行为将恢复。 -```objectivec +```Objective-C // 异步方法 [[EMClient sharedClient].contactManager removeUserFromBlackList:@"aUsername" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { diff --git a/docs/document/ios/userprofile.md b/docs/document/ios/userprofile.md index c3dc673ec..4c18e17e6 100644 --- a/docs/document/ios/userprofile.md +++ b/docs/document/ios/userprofile.md @@ -40,7 +40,7 @@ 参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。 -```objectivec +```Objective-C // 设置用户所有属性。 EMUserInfo *userInfo = [[EMUserInfo alloc] init]; userInfo.userId = EMClient.sharedClient.currentUsername; @@ -57,7 +57,7 @@ userInfo.gender = 1; }]; ``` -```objectivec +```Objective-C // 以修改用户头像为例,演示如何修改指定用户属性。 NSString *url = @"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png"; @@ -89,14 +89,14 @@ NSString *url = @"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMD 示例代码如下: -```objectivec +```Objective-C // 获取用户所有属性,一次调用用户 ID 数量不能超过 100。 // 异步方法 [[EMClient sharedClient].userInfoManager fetchUserInfoById:@[EMClient.sharedClient.currentUsername] completion:^(NSDictionary *aUserDatas, EMError *aError) { }]; ``` -```objectivec +```Objective-C // 获取指定用户的指定用户属性。 NSString *userIds = @[@"user1",@"user2"]; NSArray *userInfoTypes = @[@(EMUserInfoTypeAvatarURL),@(EMUserInfoTypePhone),@(EMUserInfoTypeMail)]; @@ -121,7 +121,7 @@ NSArray *userInfoTypes = @[@(EMUserInfoTypeAvatarURL),@(EMUserInfoTy 如果你的场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现: -```objectivec +```Objective-C // 设置自定义消息的 `event` 为 `userCard` ,并在 `ext` 中添加展示名片所需要的用户 ID、昵称和头像等字段。 EMCustomMessageBody *body = [[EMCustomMessageBody alloc] init]; body.event = @"userCard"; diff --git a/docs/document/react-native/connection.md b/docs/document/react-native/connection.md index e7b75f2f3..0bde76c31 100644 --- a/docs/document/react-native/connection.md +++ b/docs/document/react-native/connection.md @@ -8,7 +8,7 @@ 你可以通过注册连接监听确认连接状态。 -```typescript +```TypeScript ChatClient.getInstance().addConnectionListener({ onConnected(): void { console.log("onConnected"); diff --git a/docs/document/react-native/conversation_delete.md b/docs/document/react-native/conversation_delete.md index 9471ce2fe..f42305fce 100644 --- a/docs/document/react-native/conversation_delete.md +++ b/docs/document/react-native/conversation_delete.md @@ -26,7 +26,7 @@ 示例代码如下: -```typescript +```TypeScript // convId: 会话 ID。 // convType:会话类型。 // isDeleteMessage:删除会话时是否同时删除服务端和本地的该会话中的消息。 @@ -44,7 +44,7 @@ ChatClient.getInstance() 你可以调用 `deleteConversation` 方法删除本地保存的指定会话,示例代码如下: -```typescript +```TypeScript // convId: 会话 ID。 // withMessage:删除会话时是否同时删除该会话中的消息。 ChatClient.getInstance() diff --git a/docs/document/react-native/conversation_list.md b/docs/document/react-native/conversation_list.md index eeafbfbc4..e5eff183e 100644 --- a/docs/document/react-native/conversation_list.md +++ b/docs/document/react-native/conversation_list.md @@ -36,7 +36,7 @@ 示例代码如下: -```typescript +```TypeScript // pageSize: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。如果为空字符串或传 `undefined`,SDK 从最新活跃的会话开始获取。 ChatClient.getInstance() @@ -61,7 +61,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.getAllConversations() .then(() => { diff --git a/docs/document/react-native/conversation_mark.md b/docs/document/react-native/conversation_mark.md index a10473728..40e27fc1b 100644 --- a/docs/document/react-native/conversation_mark.md +++ b/docs/document/react-native/conversation_mark.md @@ -8,7 +8,7 @@ 你需要自行维护会话标记与具体业务含义(比如 `MARK_0` 为重要会话)之间的映射关系。例如: -```typescript +```TypeScript const mapping = new Map(); mapping.set(ChatConversationMarkType.Type0, "important"); mapping.set(ChatConversationMarkType.Type1, "normal"); @@ -45,7 +45,7 @@ mapping.set(ChatConversationMarkType.Type2, "unimportant"); 对会话添加标记,例如会话标星,并不影响会话的其他逻辑,例如会话的未读消息数。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.addRemoteAndLocalConversationsMark( convIds, // 会话 ID 集合 @@ -65,7 +65,7 @@ ChatClient.getInstance() 调用该方法会同时移除本地和服务器端会话的标记。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.deleteRemoteAndLocalConversationsMark( convIds, // 会话 ID 集合 @@ -83,7 +83,7 @@ ChatClient.getInstance() 你可以调用 `fetchConversationsByOptions` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 0)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。 -```typescript +```TypeScript // 创建搜索条件对象 const option = ChatConversationFetchOptions.withMark( ChatConversationMarkType.Type0 @@ -103,7 +103,7 @@ ChatClient.getInstance() 对于本地会话,你可以调用 `getAllConversations` 方法获取本地所有会话后自己进行会话过滤。下面以查询标记了 `ChatConversationMarkType#Type0` 的所有本地会话为例。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.getAllConversations() .then((res) => { @@ -122,7 +122,7 @@ ChatClient.getInstance() 你可以调用 `ChatConversation#marks` 方法获取本地单个会话的所有标记,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.getConversation(convId, convType) .then((res) => { diff --git a/docs/document/react-native/conversation_overview.md b/docs/document/react-native/conversation_overview.md index dcfe8bf17..bea4d4da4 100644 --- a/docs/document/react-native/conversation_overview.md +++ b/docs/document/react-native/conversation_overview.md @@ -48,7 +48,7 @@ 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onConversationRead(from: string, to?: string): void { // 收到会话已读的事件。该事件在以下场景中触发: diff --git a/docs/document/react-native/conversation_pin.md b/docs/document/react-native/conversation_pin.md index b7efe7819..5baaeffb6 100644 --- a/docs/document/react-native/conversation_pin.md +++ b/docs/document/react-native/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```typescript +```TypeScript // isPinned: 设置是否置顶会话。 ChatClient.getInstance() .chatManager.pinConversation(convId, isPinned) @@ -53,7 +53,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // pageSize: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。若获取数据时传 `undefined` 或者空字符串(""),SDK 从最新置顶的会话开始查询。 ChatClient.getInstance() diff --git a/docs/document/react-native/conversation_receipt.md b/docs/document/react-native/conversation_receipt.md index 9f5b4fda4..52bdadb42 100644 --- a/docs/document/react-native/conversation_receipt.md +++ b/docs/document/react-native/conversation_receipt.md @@ -29,7 +29,7 @@ 1. 开启已读回执功能,即 SDK 初始化时设置 `ChatOptions#requireAck` 为 `true`。 -```typescript +```TypeScript // 设置是否需要接受方已读确认,默认为 true options.requireAck = true; ``` @@ -40,7 +40,7 @@ options.requireAck = true; 若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `ackMessageRead`,则需要调用多次。 -```typescript +```TypeScript const convId = ""; // 会话ID。 const convType = 0; // 会话类型。单聊。 ChatClient.getInstance() @@ -61,7 +61,7 @@ ChatClient.getInstance() 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `onConversationHasRead` 回调收到会话已读回执。 ::: -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onConversationRead: (from: string, to?: string) => { console.log(`onConversationRead: `, from, to); diff --git a/docs/document/react-native/conversation_unread.md b/docs/document/react-native/conversation_unread.md index 723bdc290..a773342fd 100644 --- a/docs/document/react-native/conversation_unread.md +++ b/docs/document/react-native/conversation_unread.md @@ -27,7 +27,7 @@ 你可以调用 `getUnreadCount` 方法获取所有本地会话的未读消息数,示例代码如下: -```typescript +```TypeScript // convId: 会话 ID // convType:会话类型 ChatClient.getInstance() @@ -44,7 +44,7 @@ ChatClient.getInstance() 你可以调用 `getConversationUnreadCount` 方法获取本地指定会话的未读消息数,示例代码如下: -```typescript +```TypeScript // convId: 会话 ID // convType:会话类型 ChatClient.getInstance() @@ -61,7 +61,7 @@ ChatClient.getInstance() 你可以调用 `markAllConversationsAsRead` 方法将本地所有会话设为已读,即将所有会话的未读消息数清零,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.markAllConversationsAsRead() .then(() => { @@ -76,7 +76,7 @@ ChatClient.getInstance() 你可以调用 `markAllMessagesAsRead` 方法对本地指定会话的未读消息数清零,示例代码如下: -```typescript +```TypeScript // convId:会话 ID // convType: 会话类型 ChatClient.getInstance() @@ -93,7 +93,7 @@ ChatClient.getInstance() 你可以调用 `markMessageAsRead` 方法将本地指定会话的单条未读消息置为已读。 -```typescript +```TypeScript // convId:会话 ID // convType: 会话类型 // msgId:消息 ID diff --git a/docs/document/react-native/group_attributes.md b/docs/document/react-native/group_attributes.md index 5a9668295..92c9dd6f9 100644 --- a/docs/document/react-native/group_attributes.md +++ b/docs/document/react-native/group_attributes.md @@ -31,7 +31,7 @@ 示例代码如下: -```typescript +```TypeScript // 修改群组名称。 ChatClient.getInstance() .groupManager.changeGroupName(groupId, local_name) @@ -49,7 +49,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.changeGroupDescription(groupId, desc) .then(() => { @@ -68,7 +68,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.updateGroupAnnouncement(groupId, announcement) .then(() => { @@ -85,7 +85,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.fetchAnnouncementFromServer(groupId) .then((ann) => { @@ -106,7 +106,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 设置文件进度回调 const callback = new (class implements ChatGroupFileStatusCallback { that: any; @@ -140,7 +140,7 @@ ChatClient.getInstance() 群主和群管理员可删除全部的群共享文件,群成员只能删除自己上传的群文件。示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.removeGroupSharedFile(groupId, fileId) .then(() => { @@ -155,7 +155,7 @@ ChatClient.getInstance() 所有群成员均可以调用 `fetchGroupFileListFromServer` 方法从服务器获取群组的共享文件列表。 -```typescript +```TypeScript // 分页获取群组文件 ChatClient.getInstance() .groupManager.fetchGroupFileListFromServer(groupId, pageSize, pageNum) @@ -173,7 +173,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 设置扩展字段 const extension = { key: "value" }; ChatClient.getInstance() diff --git a/docs/document/react-native/group_manage.md b/docs/document/react-native/group_manage.md index de253c6c0..8eefe655d 100644 --- a/docs/document/react-native/group_manage.md +++ b/docs/document/react-native/group_manage.md @@ -69,7 +69,7 @@ 示例代码如下: -```typescript +```TypeScript // 群组选项。核心选项为 `style`,用于设置群组类型。详见 `ChatGroupStyle`。 option.style = PrivateOnlyOwnerInvite; // 群组的名称,不能超过 128 个字符 @@ -99,7 +99,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 将要解散的群组 ID const groupId = "100"; ChatClient.getInstance() @@ -119,7 +119,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.leaveGroup(groupId) .then(() => { @@ -141,7 +141,7 @@ ChatClient.getInstance() 对于公有群,用户即使不加入群也能获取群组详情,而对于私有群,用户只有加入了群组才能获取群详情。 ::: -```typescript +```TypeScript // 从本地获取群组详情。 ChatClient.getInstance() .groupManager.getGroupWithId(groupId) @@ -153,7 +153,7 @@ ChatClient.getInstance() }); ``` -```typescript +```TypeScript // 从服务器获取群组详情。 ChatClient.getInstance() .groupManager.fetchGroupInfoFromServer(groupId) @@ -169,7 +169,7 @@ ChatClient.getInstance() 用户可以调用 `fetchJoinedGroupsFromServer` 方法从服务器获取自己加入和创建的群组列表。示例代码如下: -```typescript +```TypeScript // pageNum:当前页码,从 0 开始。 // pageSize:每页期望返回的群组数量,取值范围为[1,20]。 const pageSize = 10; @@ -187,7 +187,7 @@ ChatClient.getInstance() - 用户可以调用 `getJoinedGroups` 方法加载本地群组列表。为了保证数据的正确性,需要先从服务器获取自己加入和创建的群组列表。示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.getJoinedGroups() .then((groups) => { @@ -200,7 +200,7 @@ ChatClient.getInstance() - 用户还可以分页获取公开群列表: -```typescript +```TypeScript // 获取的群组列表来自服务器,但是不包括成员列表 ChatClient.getInstance() .groupManager.fetchPublicGroupsFromServer(pageSize, cursor) @@ -216,7 +216,7 @@ ChatClient.getInstance() 自 1.3.0 版本开始,你可以调用 `fetchJoinedGroupCount` 方法从服务器获取当前用户已加入的群组数量。单个用户可加入群组数量的上限取决于订阅的即时通讯的套餐包,详见[产品价格](/product/pricing.html#套餐包功能详情)。 -```typescript +```TypeScript ChatClient.getInstance() .groupManager.fetchJoinedGroupCount() .then((count: number) => { @@ -233,7 +233,7 @@ ChatClient.getInstance() 群成员可以调用 `blockGroup` 方法屏蔽群消息。屏蔽群消息后,该成员不再从指定群组接收消息,群主和群管理员不能进行此操作。示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.blockGroup(groupId) .then(() => { @@ -248,7 +248,7 @@ ChatClient.getInstance() 群成员可以调用 `unblockGroup` 方法解除屏蔽群消息。示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.unblockGroup(groupId) .then(() => { @@ -269,7 +269,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 创建一个群组事件监听 const groupListener: ChatGroupEventListener = new (class implements ChatGroupEventListener diff --git a/docs/document/react-native/group_members.md b/docs/document/react-native/group_members.md index 012ad8870..21ba55cef 100644 --- a/docs/document/react-native/group_members.md +++ b/docs/document/react-native/group_members.md @@ -54,7 +54,7 @@ 1. 调用 `fetchPublicGroupsFromServer` 方法从服务器获取公开群列表,查询到想要加入的群组 ID。示例代码如下: -```typescript +```TypeScript // 通过分页的方式获取公开群组的列表。 // 每页期望返回的群组数。 const pageSize = 10; @@ -77,7 +77,7 @@ ChatClient.getInstance() 示例代码如下: - ```typescript + ```TypeScript // groupId: 群组 ID ChatClient.getInstance() .groupManager.joinPublicGroup(groupId) @@ -91,7 +91,7 @@ ChatClient.getInstance() 2. 调用 `requestToJoinPublicGroup` 方法加入需要群主或管理员审批的公共群组,即 `ChatGroupStyle` 设置为 `PublicJoinNeedApproval`。示例代码如下: - ```typescript + ```TypeScript // 申请加入指定群组。 const groupId = "100"; const reason = "study typescript"; @@ -113,7 +113,7 @@ ChatClient.getInstance() 示例代码如下: - ```typescript + ```TypeScript // groupId: 群组 ID // username:用户 ID ChatClient.getInstance() @@ -130,7 +130,7 @@ ChatClient.getInstance() 示例代码如下: - ```typescript + ```TypeScript // groupId: 群组 ID // username:用户 ID // reason:拒绝的理由 @@ -154,7 +154,7 @@ ChatClient.getInstance() - 群主或群管理员加人,需要调用 `addMembers` 方法: - ```typescript + ```TypeScript // 群主或者管理员添加群成员 const groupId = "100"; // 群成员列表 @@ -175,7 +175,7 @@ ChatClient.getInstance() `EMGroupStyle` 设置为 `PrivateMemberCanInvite` 时,所有群成员均可以邀请人进群。 - ```typescript + ```TypeScript // groupId: 群组 ID // members:受邀用户列表 // reason:邀请的原因 @@ -193,7 +193,7 @@ ChatClient.getInstance() - 受邀用户同意加入群组,需要调用 `acceptInvitation` 方法。 - ```typescript + ```TypeScript // groupId: 群组 ID // inviter:邀请人的 ID ChatClient.getInstance() @@ -208,7 +208,7 @@ ChatClient.getInstance() - 受邀人拒绝入群组,需要调用 `declineInvitation` 方法。 - ```typescript + ```TypeScript // groupId: 群组 ID // inviter:邀请人的 ID // reason:拒绝的理由 @@ -228,7 +228,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.removeMembers(groupId, members) .then(() => { @@ -250,7 +250,7 @@ ChatClient.getInstance() 你可以调用 `setMemberAttribute` 方法设置指定群成员的自定义属性。自定义属性为 key-value 格式,key 表示属性名称,value 表示属性值,若 value 设置为空字符串即删除该自定义属性。设置后,群内其他成员会收到 `ChatGroupEventListener.onMemberAttributesChanged` 事件。 -```typescript +```TypeScript // groupId:群组 ID。 // member:群组成员的用户 ID。 // attributes:需要设置的群成员属性。 @@ -268,7 +268,7 @@ ChatClient.getInstance() 你可以调用 `fetchMemberAttributes` 方法获取单个群成员的所有自定义属性。 -```typescript +```TypeScript // groupId:群组 ID。 // member:群组成员的用户 ID。 ChatClient.getInstance() @@ -289,7 +289,7 @@ ChatClient.getInstance() 每次最多可获取 10 个群成员的自定义属性。 ::: -```typescript +```TypeScript // groupId:群组 ID // members:群成员的用户 ID,数组类型。 // attributeKeys: 要获取自定义属性的 key 的数组。若 keys 为空数组或不传则获取这些成员的所有自定义属性。 @@ -311,7 +311,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.changeOwner(groupId, newOwner) .then(() => { @@ -328,7 +328,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.addAdmin(groupId, memberId) .then(() => { @@ -345,7 +345,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.removeAdmin(groupId, memberId) .then(() => { @@ -366,7 +366,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.blockMembers(groupId, members) .then(() => { @@ -383,7 +383,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.unblockMembers(groupId, members) .then(() => { @@ -399,7 +399,7 @@ ChatClient.getInstance() 仅群主和群管理员可以调用 `fetchBlockListFromServer` 方法获取当前群组的黑名单。默认最多取 200 个。 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.fetchBlockListFromServer(groupId, pageSize, pageNum) .then((list) => { @@ -420,7 +420,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // groupId:群组 ID // members:将要被禁言的成员列表 // duration:禁言时间。若传 -1,表示永久禁言。 @@ -440,7 +440,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.unMuteMembers(groupId, members) .then(() => { @@ -457,7 +457,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // groupId:群组 ID // pageSize:期望获取的最大数量 // pageNum:请求第几页,从 1 开始 @@ -483,7 +483,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.muteAllMembers(groupId) .then(() => { @@ -500,7 +500,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.unMuteAllMembers(groupId) .then(() => { @@ -521,7 +521,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.addAllowList(groupId, members) .then(() => { @@ -540,7 +540,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.removeAllowList(groupId, members) .then(() => { @@ -555,7 +555,7 @@ ChatClient.getInstance() 所有群成员可以调用 `isMemberInAllowListFromServer` 方法检查自己是否在群白名单中,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.isMemberInAllowListFromServer(groupId) .then((isMember) => { @@ -572,7 +572,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .groupManager.fetchAllowListFromServer(groupId) .then(() => { @@ -587,7 +587,7 @@ ChatClient.getInstance() #### 通过服务器分页获取群组成员 -```typescript +```TypeScript // groupId:群组 ID // pageSize:期望获取的最大数量 // cursor:开始分页的位置,第一页为空,后续页面请使用第一页返回的结果 diff --git a/docs/document/react-native/initialization.md b/docs/document/react-native/initialization.md index f430dbbd7..7990530e4 100644 --- a/docs/document/react-native/initialization.md +++ b/docs/document/react-native/initialization.md @@ -16,7 +16,7 @@ 初始化示例代码: -```typescript +```TypeScript ChatClient.getInstance() .init( new ChatOptions({ diff --git a/docs/document/react-native/log.md b/docs/document/react-native/log.md index e30f731e7..09d9a8dbd 100644 --- a/docs/document/react-native/log.md +++ b/docs/document/react-native/log.md @@ -5,6 +5,6 @@ 如果开启日志调试模式,会通过控制台输出 SDK 日志。`debugModel` 设置为 `true`。 -```typescript +```TypeScript chatlog.log(`${ChatClient.TAG}: login: `, userName, "******", isPassword); ``` diff --git a/docs/document/react-native/login.md b/docs/document/react-native/login.md index bfdfff55e..8dc8f7fe0 100644 --- a/docs/document/react-native/login.md +++ b/docs/document/react-native/login.md @@ -10,7 +10,7 @@ 示例代码如下所示: -```typescript +```TypeScript ChatClient.getInstance() .createAccount(username, password) .then((value: any) => { @@ -31,7 +31,7 @@ ChatClient.getInstance() 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```typescript +```TypeScript // userId: 用户ID // userPassword: 用户密码或者token // isPassword: 是否使用密码 @@ -61,7 +61,7 @@ ChatClient.getInstance() 你可以调用 `logout` 方法退出登录。退出登录后,你不会再收到其他用户发送的消息。 -```typescript +```TypeScript // unbindDeviceToken: 是否基础推送token绑定 ChatClient.getInstance() .logout(unbindDeviceToken) diff --git a/docs/document/react-native/message_delete.md b/docs/document/react-native/message_delete.md index 866d60719..25dbf0336 100644 --- a/docs/document/react-native/message_delete.md +++ b/docs/document/react-native/message_delete.md @@ -31,7 +31,7 @@ 若使用该功能,需将 SDK 升级至 V1.4.0 或以上版本。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.deleteAllMessageAndConversation(clearServerData) .then(() => { @@ -54,7 +54,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 按消息 ID 删除 ChatClient.getInstance() .chatManager.removeMessagesFromServerWithMsgIds(convId, convType, msgIds) @@ -83,7 +83,7 @@ ChatClient.getInstance() 你可以调用 `deleteAllMessages` 方法删除指定会话的所有消息。 -```typescript +```TypeScript // convId:会话 ID // convType:会话类型 ChatClient.getInstance() @@ -100,7 +100,7 @@ ChatClient.getInstance() 你可以调用 `deleteMessagesWithTimestamp` 方法删除指定时间段的本地消息。 -```typescript +```TypeScript // startTs: 开始点的时间戳 // endTs: 结束点的时间戳 ChatClient.getInstance() @@ -117,7 +117,7 @@ ChatClient.getInstance() 你可以调用 `deleteMessage` 方法删除本地单个会话的指定消息。 -```typescript +```TypeScript // convId:会话 ID // convType: 会话类型 // msgId:消息 ID @@ -135,7 +135,7 @@ ChatClient.getInstance() 你可以调用 `ChatManager#removeMessagesWithTimestamp` 方法删除服务端的聊天室消息。删除后,该用户无法从服务端拉取到该消息,不过,聊天室会话中的其它用户的服务器消息不受影响,可以漫游获取。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.removeMessagesWithTimestamp({ convId: "foo", diff --git a/docs/document/react-native/message_forward.md b/docs/document/react-native/message_forward.md index f639b6e97..f29d28b93 100644 --- a/docs/document/react-native/message_forward.md +++ b/docs/document/react-native/message_forward.md @@ -30,7 +30,7 @@ 该功能也支持转发单条合并消息。 ::: -```typescript +```TypeScript const msg: ChatMessage = ChatMessage.createTextMessage("A", "hello", 0); // 原来的消息 const newMsg: ChatMessage = ChatMessage.createSendMessage({ ...msg, diff --git a/docs/document/react-native/message_import_insert.md b/docs/document/react-native/message_import_insert.md index 25ad6b436..7b20cdca8 100644 --- a/docs/document/react-native/message_import_insert.md +++ b/docs/document/react-native/message_import_insert.md @@ -27,7 +27,7 @@ 推荐一次导入 1,000 条以内的数据。 -```typescript +```TypeScript // msgs:将要插入的消息数组 ChatClient.getInstance() .chatManager.importMessages(msgs) @@ -49,7 +49,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance().chatManager.insertMessage(msg).then(() => { console.log('insert message success.'); }).catch((e) => { diff --git a/docs/document/react-native/message_modify.md b/docs/document/react-native/message_modify.md index 8226e81f3..d2b7ecd3b 100644 --- a/docs/document/react-native/message_modify.md +++ b/docs/document/react-native/message_modify.md @@ -36,7 +36,7 @@ 示例代码如下: -```typescript +```TypeScript // body 必须是文本消息体。可以从创建或者接收消息中获取。 ChatClient.getInstance() .chatManager.modifyMessageBody(msgId, body) @@ -54,7 +54,7 @@ ChatClient.getInstance() 若通过 RESTful API 修改自定义消息,消息的接收方也通过 `ChatMessageEventListener#onMessageContentChanged` 事件接收修改后的自定义消息。 ::: -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onMessageContentChanged: ( message: ChatMessage, diff --git a/docs/document/react-native/message_pin.md b/docs/document/react-native/message_pin.md index 26f105afc..de88b315d 100644 --- a/docs/document/react-native/message_pin.md +++ b/docs/document/react-native/message_pin.md @@ -32,7 +32,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.pinMessage( messageId // 消息ID @@ -51,7 +51,7 @@ ChatClient.getInstance() 群组或聊天室中的所有成员均可取消置顶消息,不论该消息由哪个成员置顶。取消置顶消息后,`EMMessage#pinnedInfo` 获取到的信息为空,该会话的置顶消息列表中也不再包含该消息。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.unpinMessage( messageId // 消息ID @@ -74,7 +74,7 @@ ChatClient.getInstance() 2. 若消息置顶后,用户撤回了该消息,则该消息从服务端移除,所有用户在从服务器拉取置顶消息列表时无法拉取到该消息。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.fetchPinnedMessages( convId, // 会话 ID @@ -95,7 +95,7 @@ ChatClient.getInstance() - 若消息为置顶状态,该类返回消息置顶的时间以及操作者的用户 ID。 - 若消息为非置顶状态,该类返回空。 -```typescript +```TypeScript // ... const msg: ChatMessage; const info = await msg.getPinInfo; @@ -104,7 +104,7 @@ const info = await msg.getPinInfo; ## 监听消息置顶事件 -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onMessagePinChanged: (params) => { // todo: 接收消息置顶状态变更 diff --git a/docs/document/react-native/message_recall.md b/docs/document/react-native/message_recall.md index 1c4d47487..08f16140e 100644 --- a/docs/document/react-native/message_recall.md +++ b/docs/document/react-native/message_recall.md @@ -36,7 +36,7 @@ 2. 附件类型消息,包括图片、音频和视频和文件消息,撤回消息后,消息附件也相应删除。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.recallMessage(msgId, { ext: "new added ext" }) .then(() => { @@ -54,7 +54,7 @@ ChatClient.getInstance() - 若用户在线接收了消息,消息撤回时,该事件中的 `ChatRecalledMessageInfo` 中的 `recallMessage` 为撤回的消息的内容,`recalledMessageId` 属性返回撤回的消息的 ID。 - 若消息发送和撤回时接收方离线,该事件中的 `ChatRecalledMessageInfo` 中的 `recallMessage` 为空,`recalledMessageId` 属性返回撤回的消息的 ID。 -```typescript +```TypeScript let listener = new (class implements ChatMessageEventListener { onMessagesRecalledInfo(info: Array): void { // 消息撤回通知,messages 为撤销的消息 diff --git a/docs/document/react-native/message_receipt.md b/docs/document/react-native/message_receipt.md index 5395716e9..70f0ba4bf 100644 --- a/docs/document/react-native/message_receipt.md +++ b/docs/document/react-native/message_receipt.md @@ -46,7 +46,7 @@ 1. 开启消息送达功能,即 SDK 初始化时将 `ChatOptions#requireDeliveryAck` 设置为 `true`。 -```typescript +```TypeScript // 设置是否需要接收方送达确认,默认 `false` 即不需要。 options.requireDeliveryAck = true; ``` @@ -55,7 +55,7 @@ options.requireDeliveryAck = true; 3. 发送方监听 `ChatMessageEventListener#onMessagesDelivered` 事件,收到接收方的送达回执。你可以在收到该通知时,显示消息的送达状态。 -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onMessagesDelivered: (messages: ChatMessage[]) => { console.log(`onMessagesDelivered:`, messages); @@ -73,7 +73,7 @@ ChatClient.getInstance().chatManager.addMessageListener({ 1. App 开启已读回执功能,即 SDK 初始化时将 `ChatOptions#requireAck` 设置为 `true`。 -```typescript +```TypeScript // 设置是否需要接受方已读确认,默认为true options.requireAck = true; ``` @@ -82,7 +82,7 @@ options.requireAck = true; - 聊天页面打开时,若收到消息,发送单条消息已读回执。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.markAllMessagesAsRead(convId, convType) .then(() => { @@ -95,7 +95,7 @@ ChatClient.getInstance() - 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onMessagesReceived: (messages: ChatMessage[]) => { console.log(`onMessagesReceived:`, messages); @@ -117,7 +117,7 @@ ChatClient.getInstance().chatManager.addMessageListener({ 消息发送方可以通过 `ChatMessageEventListener#onMessageRead` 事件监听指定消息是否已读,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onMessagesRead: (messages: ChatMessage[]) => { console.log(`onMessagesRead:`, messages); @@ -145,7 +145,7 @@ ChatClient.getInstance().chatManager.addMessageListener({ 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```typescript +```TypeScript // 设置是否需要接受方已读确认,默认为 `true`。 options.requireAck = true; ``` @@ -154,7 +154,7 @@ options.requireAck = true; 与单聊消息的 app 层级设置已读回执功能不同,群聊消息是在发送消息时设置指定消息是否需要已读回执。 -```typescript +```TypeScript const convId; // 会话ID。 const content; // 会话内容。 ChatMessage message = ChatMessage.createTextMessage(convId, content); @@ -163,7 +163,7 @@ message.needGroupAck = true; 3. 消息接收方发送群组消息的已读回执。 -```typescript +```TypeScript const convId; // 会话ID。 const convType; // 会话类型。群组为 1。 const msgId; // 消息ID。 @@ -183,7 +183,7 @@ ChatClient.getInstance() 发送方接收到群组消息已读回执后,其发出消息的属性 `ChatMessage#groupAckCount` 会有相应变化。 -```typescript +```TypeScript ChatClient.getInstance().chatManager.addMessageListener({ onGroupMessageRead: (messages: ChatMessage[]) => { console.log(`onGroupMessageRead:`, messages); @@ -195,7 +195,7 @@ ChatClient.getInstance().chatManager.addMessageListener({ 你可以调用 `ChatManager#fetchGroupAcks` 方法从服务器获取单条消息的已读回执的详情。 -```typescript +```TypeScript const msgId; // 消息ID。 const groupId; // 群组ID。 const startAckId; //回执ID。 diff --git a/docs/document/react-native/message_retrieve.md b/docs/document/react-native/message_retrieve.md index a30d6c02e..06bec03d4 100644 --- a/docs/document/react-native/message_retrieve.md +++ b/docs/document/react-native/message_retrieve.md @@ -50,7 +50,7 @@ 3. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```tsx +```TypeScript // convId 会话 ID:单聊、群聊和聊天室分别为对端用户 ID、群组 ID 和聊天室 ID。 // convType 会话类型:单聊、群聊和聊天室分别为 PeerChat、GroupChat 和 RoomChat。 // cursor 查询的起始消息 ID。若该参数设置为空字符串,从最新消息开始。 @@ -76,7 +76,7 @@ ChatClient.getInstance() 你可以调用 `getConversation` 方法从本地获取指定会话 ID 的会话,如果不存在可以创建。 -```typescript +```TypeScript // convId: 会话 ID。 // convType: 会话类型。 // createIfNeed:如果不存在则创建设置该值为 true。 @@ -94,7 +94,7 @@ ChatClient.getInstance() 你可以调用 `getMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 -```typescript +```TypeScript // msgId: 要获取的消息的消息 ID。 ChatClient.getInstance() .chatManager.getMessage(msgId) @@ -114,7 +114,7 @@ ChatClient.getInstance() 要使用该方法,需将 SDK 升级至 1.4.0 或以上版本。 ::: -```typescript +```TypeScript // convId: 会话 ID。 // convType:会话类型:单聊、群聊和聊天室分别为 `PeerChat`、`GroupChat` 和 `RoomChat`。 // msgType: 消息类型。 @@ -150,7 +150,7 @@ ChatClient.getInstance() 要使用该方法,需将 SDK 升级至 V1.4.0 或以上版本。 ::: -```typescript +```TypeScript // convId:会话 ID。 // convType:会话类型:单聊、群聊和聊天室分别为 `PeerChat`、`GroupChat` 和 `RoomChat`。 // startTime:搜索的起始时间戳,单位为毫秒。 @@ -180,7 +180,7 @@ ChatClient.getInstance() 你可以调用 `ChatManager.getMessageCountWithTimestamp` 方法从数据库中获取指定会话的指定时间段的消息数量。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.getMessageCountWithTimestamp({ convId: "foo", @@ -204,7 +204,7 @@ ChatClient.getInstance() 要使用该方法,需将 SDK 升级至 V1.4.0 或以上版本。 ::: -```typescript +```TypeScript // convId: 会话 ID。 // convType:会话类型。 // startMsgId: 搜索的起始消息 ID。 @@ -225,7 +225,7 @@ ChatClient.getInstance() 你可以调用 `getLatestMessage` 方法获取指定会话中的最新一条消息。 -```typescript +```TypeScript // convId: 会话 ID。 // convType:会话类型。 ChatClient.getInstance() @@ -242,7 +242,7 @@ ChatClient.getInstance() 你可以调用 `getLastReceivedMessage` 方法获取指定会话中最新收到的一条消息。 -```typescript +```TypeScript // convId: 会话 ID // convType:会话类型 ChatClient.getInstance() diff --git a/docs/document/react-native/message_search.md b/docs/document/react-native/message_search.md index 610832b43..dc71b208a 100644 --- a/docs/document/react-native/message_search.md +++ b/docs/document/react-native/message_search.md @@ -30,7 +30,7 @@ 若使用该功能,需将 SDK 升级至 V1.4.0 或以上版本。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.getMsgsWithKeyword({ keywords, // 搜索关键字 @@ -58,7 +58,7 @@ ChatClient.getInstance() - 方式一: -```typescript +```TypeScript // 直接调用 ChatClient.getInstance() .chatManager.getConvMsgsWithKeyword({ @@ -82,7 +82,7 @@ ChatClient.getInstance() - 方式二: -```typescript +```TypeScript // 通过会话对象调用 const conv = ChatClient.getInstance().chatManager.getConversation( convId, @@ -113,7 +113,7 @@ conv 若使用该功能,需将 SDK 升级至 V1.6.0 或以上版本。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.searchMessages({ msgTypes: [ChatMessageType.TXT], @@ -135,7 +135,7 @@ ChatClient.getInstance() 若使用该功能,需将 SDK 升级至 V1.6.0 或以上版本。 ::: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.searchMessagesInConversation({ convId: "foo", diff --git a/docs/document/react-native/message_send_receive.md b/docs/document/react-native/message_send_receive.md index fc7e281f4..8ba0e82d7 100644 --- a/docs/document/react-native/message_send_receive.md +++ b/docs/document/react-native/message_send_receive.md @@ -52,7 +52,7 @@ 示例代码: -```typescript +```TypeScript // 设置发送的消息类型。消息类型共支持 8 种。具体详见 `ChatMessageType` 枚举类型。 const messageType = ChatMessageType.TXT; // 设置消息接收对象。单聊时为对端用户 ID、群聊时为群组 ID,聊天室时为聊天室 ID。 @@ -93,7 +93,7 @@ ChatClient.getInstance() 对于聊天室消息,可设置消息优先级。示例代码如下: -```typescript +```TypeScript // 对于聊天室消息,还可以设置消息优先级。 if (msg.chatType === ChatMessageChatType.ChatRoom) { msg.messagePriority = priority; @@ -102,7 +102,7 @@ if (msg.chatType === ChatMessageChatType.ChatRoom) { 2. 通过 `ChatManager` 将该消息发出。发送消息时可以设置 `EMCallBack` 的实例,获取消息发送状态。 -```typescript +```TypeScript ChatClient.getInstance().chatManager.sendMessage(msg!, callback).then().catch(); ``` @@ -118,7 +118,7 @@ ChatClient.getInstance().chatManager.sendMessage(msg!, callback).then().catch(); 对于聊天室消息,你可以通过消息的 `ChatMessage.isBroadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```typescript +```TypeScript // 继承并实现 ChatMessageEventListener class ChatMessageEvent implements ChatMessageEventListener { onMessagesReceived(messages: ChatMessage[]): void { @@ -150,7 +150,7 @@ ChatClient.getInstance().chatManager.removeAllMessageListener(); 此外,发送附件类型消息时,可以在 `onProgress` 回调中获取附件上传的进度,以百分比表示,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.sendMessage(msg, { onProgress(localMsgId: string, progress: number): void { @@ -168,7 +168,7 @@ ChatClient.getInstance() 1. 发送语音消息前,在应用层录制语音文件。 2. 发送方调用 `createVoiceMessage` 方法传入语音文件的 URI、语音时长和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建语音消息,然后调用发送消息方法发送消息。SDK 会将语音文件上传至环信服务器。 -```typescript +```TypeScript // 构建语音消息 // 需传入本地语音文件地址、显示名称和播放时长(单位为秒) // 传入的语音文件的路径时,不需要添加 file://。 @@ -192,7 +192,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 1. 发送方调用 `createImageMessage` 方法传入图片的本地资源标志符 URI、设置是否发送原图以及接收方的用户 ID (群聊或聊天室分别为群组 ID 或聊天室 ID)创建图片消息,然后调用 `sendMessage` 方法发送该消息。SDK 会将图片上传至环信服务器,服务器自动生成图片缩略图。 -```typescript +```TypeScript // 构建图片消息 // 需要图片的本地地址,长宽,和界面用来显示的名称 // 传入的图片路径时,不需要添加 file://。 @@ -210,7 +210,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 2. 接收方收到图片消息,自动下载图片缩略图。 -```typescript +```TypeScript ChatClient.getInstance().init( new ChatOptions({ appKey, @@ -221,7 +221,7 @@ ChatClient.getInstance().init( 如果设置为手动下载,则需要设置 `isAutoDownload` 为 `false`,并且调用方法 `downloadThumbnail`。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.downloadThumbnail(msg, callback) .then() @@ -230,7 +230,7 @@ ChatClient.getInstance() 3. 对于接收方,收到 `onMessagesReceived` 回调,调用 `downloadAttachment` 下载原图。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.downloadAttachment(msg, callback) .then() @@ -247,7 +247,7 @@ ChatClient.getInstance() 2. 发送方调用 `createVideoMessage` 方法传入视频文件的本地资源标志符、缩略图的本地存储路径、视频时长以及接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID),然后调用 `sendMessage` 方法发送消息。SDK 会将视频文件上传至消息服务器。若需要视频缩略图,你需自行获取视频首帧的路径,将该路径传入 `createVideoMessage` 方法。 -```typescript +```TypeScript // 构建视频消息 // 视频消息相当于包含 2 个附件的消息,主要由视频和视频缩略图组成。视频参数包括视频本地地址、视频长宽值,显示名称,播放时间长度; // 如果设置缩略图,需指定缩略图的本地地址。 @@ -272,7 +272,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 4. 对于接收方,收到 `onMessagesReceived` 回调,可以调用 `downloadAttachment` 方法下载视频原文件,和[图片消息附件下载](#发送和接收图片消息)类似。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.downloadAttachment(msg, callback) .then() @@ -287,7 +287,7 @@ ChatClient.getInstance() 1. 发送方调用 `createFileMessage` 方法传入文件的本地资源标志符和接收方的用户 ID(群聊或聊天室分别为群组 ID 或聊天室 ID)创建文件消息,然后调用 `sendMessage` 方法发送文件消息。SDK 将文件上传至环信服务器。 -```typescript +```TypeScript // 构建文件消息 // 文件消息主要需要本地文件地址和文件在页面显示的名称。 // 传入的文件路径时,不需要添加 file://。 @@ -301,7 +301,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 2. 接收方收到 `onMessagesReceived` 回调,调用 `downloadAttachment` 方法下载文件。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.downloadAttachment(msg, callback) .then() @@ -314,7 +314,7 @@ ChatClient.getInstance() 当你要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```typescript +```TypeScript // 构建位置消息 // 位置消息可以传递经纬度和地名信息 const latitude = "114.78"; @@ -338,7 +338,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 透传消息发送后,不支持撤回。 ::: -```typescript +```TypeScript // 构建透传消息 // 根据透传消息可以执行具体的命令,命令的内容格式支持自定义 const action = "writing"; @@ -348,7 +348,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 请注意透传消息的接收方,也是由单独的回调进行通知,方便用户进行不同的处理。 -```typescript +```TypeScript let listener = new (class implements ChatMessageEventListener { onCmdMessagesReceived(messages: ChatMessage[]): void { // 这里接收透传消息数据 @@ -379,7 +379,7 @@ ChatClient.getInstance().chatManager.addMessageListener(listener); 以下示例代码展示如何发送输入状态的透传消息。 -```typescript +```TypeScript // 发送自己在输入状态中的命令消息 const action = "inputting"; const msg = ChatMessage.createCmdMessage(targetId, action, chatType); @@ -388,7 +388,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 以下示例代码展示如何接受和解析输入状态的透传消息。 -```typescript +```TypeScript let listener = new (class implements ChatMessageEventListener { onCmdMessagesReceived(messages: ChatMessage[]): void { // 收到命令消息 @@ -407,7 +407,7 @@ ChatClient.getInstance().chatManager.addMessageListener(listener); 除了几种消息之外,你可以自己定义消息类型,方便业务处理,即首先设置一个消息类型名称,然后可添加多种自定义消息。 -```typescript +```TypeScript // 构建自定义消息 // 消息内容由消息事件和扩展字段两部分组成,扩展字段用户可以自行实现和使用。 const event = "gift"; @@ -451,7 +451,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); 示例代码如下: -```typescript +```TypeScript // 构造合并消息。 const msg = ChatMessage.createCombineMessage(targetId, msgIdList, chatType, { title, @@ -473,7 +473,7 @@ EMClient.getInstance().chatManager().sendMessage(msg, callback).then().catch(); - 若附件已存在,该方法会直接解析附件并返回原始消息列表。 - 若附件不存在,该方法首先下载附件,然后解析附件并返回原始消息列表。 -```typescript +```TypeScript // message: 合并消息对象 // 通过异步返回原始消息列表。 ChatClient.getInstance() @@ -507,7 +507,7 @@ ChatClient.getInstance() 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```typescript +```TypeScript const content = "This is text message"; msg = ChatMessage.createTextMessage(targetId, content, chatType); msg.receiverList = ["001", "002"]; @@ -525,7 +525,7 @@ ChatClient.getInstance().chatManager.sendMessage(msg, { 当目前消息类型不满足用户需求时,可以在扩展部分保存更多信息,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```typescript +```TypeScript const msg = ChatMessage.createTextMessage(targetId, '文本消息', chatType); msg.attributes = { key: "value", diff --git a/docs/document/react-native/message_translation.md b/docs/document/react-native/message_translation.md index 5b563582d..af414f7c5 100644 --- a/docs/document/react-native/message_translation.md +++ b/docs/document/react-native/message_translation.md @@ -30,7 +30,7 @@ SDK 支持你通过调用 API 在项目中实现如下功能: 无论是按需翻译还是自动翻译,都需先调用 `fetchSupportedLanguages` 获取支持的翻译语言。获取支持的翻译语言的示例代码如下: -```typescript +```TypeScript // 获取支持的翻译语言 ChatClient.getInstance() .chatManager.fetchSupportedLanguages() @@ -46,7 +46,7 @@ ChatClient.getInstance() 接收方调用 `translateMessage` 对收到的文本消息进行翻译。翻译调用过程如下: -```typescript +```TypeScript // 创建文本消息,只有文本消息可以翻译 const msg = ChatMessage.createTextMessage(targetId, content); // 指定需要翻译的目标语言 @@ -64,7 +64,7 @@ ChatClient.getInstance() 翻译成功之后,译文信息会保存到消息中。调用 `translations` 获取译文内容。示例代码如下: -```typescript +```TypeScript const body = result.body as ChatTextMessageBody; console.log("translation: ", body.translations); ``` @@ -73,7 +73,7 @@ console.log("translation: ", body.translations); 创建消息时,发送方设置 `ChatTextMessageBody` 中的 `targetLanguages` 字段为译文语言,设置过程如下: -```typescript +```TypeScript // 指定翻译的目标语言 const languages: string[] = ["en"]; const msg = ChatMessage.createTextMessage( @@ -88,7 +88,7 @@ const msg = ChatMessage.createTextMessage( 接收方收到消息后,调用 `translations` 获取消息的译文列表,示例代码如下: -```typescript +```TypeScript const body = result.body as ChatTextMessageBody; console.log("translation: ", body.translations); ``` \ No newline at end of file diff --git a/docs/document/react-native/message_update.md b/docs/document/react-native/message_update.md index 12d233777..bd853f7dd 100644 --- a/docs/document/react-native/message_update.md +++ b/docs/document/react-native/message_update.md @@ -23,7 +23,7 @@ 你可以调用 `updateMessage` 方法更新指定消息。该方法会同时更新本地内存和数据库中的消息。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.updateMessage(newMsg) .then(() => { diff --git a/docs/document/react-native/moderation.md b/docs/document/react-native/moderation.md index 258296781..b0d0fc756 100644 --- a/docs/document/react-native/moderation.md +++ b/docs/document/react-native/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```typescript +```TypeScript // msgId:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 // reason:举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/react-native/multi_device.md b/docs/document/react-native/multi_device.md index 8c882773f..fb9c63fbf 100644 --- a/docs/document/react-native/multi_device.md +++ b/docs/document/react-native/multi_device.md @@ -59,7 +59,7 @@ 你可以调用 `getSelfIdsOnOtherPlatform` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getSelfIdsOnOtherPlatform() .then((ids) => { @@ -92,7 +92,7 @@ ChatClient.getInstance() 你可以调用 `getLoggedInDevicesFromServer` 方法从服务器获取指定账号的在线登录设备的列表。调用该方法后,在 SDK 返回的信息中,`ChatDeviceInfo` 中的 `deviceName` 属性表示自定义设备名称,若未自定义设备名称,返回设备型号。 -```typescript +```TypeScript // userId: 用户 ID. // pwdOrToken: 密码或者token // isPassword: 是否使用密码登录 @@ -114,7 +114,7 @@ ChatClient.getInstance() 登录成功后才会将该设置发送到服务器。 ::: -```typescript +```TypeScript // customDeviceName: 自定义设备名称。 ChatClient.getInstance() .init( @@ -149,7 +149,7 @@ ChatClient.getInstance() 登录成功后才会将该设置发送到服务器。 ::: -```typescript +```TypeScript // customOSType: 自定义设备类型。取值范围 [1,100]。 ChatClient.getInstance() .init( @@ -176,7 +176,7 @@ ChatClient.getInstance() 登录成功后才会将该设置发送到服务器。 ::: -```typescript +```TypeScript // 初始化设置登录额外信息 ChatClient.getInstance() .init( @@ -221,7 +221,7 @@ ChatClient.getInstance() 不登录也可以使用该接口。 ::: -```typescript +```TypeScript // resource: 可以通过 `getLoggedInDevicesFromServer` 获取。 const deviceInfo = await ChatClient.getInstance().getLoggedInDevicesFromServer( userId, @@ -246,7 +246,7 @@ ChatClient.getInstance() 不登录也可以使用该接口。 ::: -```typescript +```TypeScript ChatClient.getInstance() .kickAllDevices(userId, pwdOrToken, isPassword) .then(() => { @@ -267,7 +267,7 @@ ChatClient.getInstance() 多端多设备场景下,无聊天室操作相关事件,只支持聊天室中发送和接收消息的同步。 ::: -```typescript +```TypeScript let listener: ChatMultiDeviceEventListener = new (class implements ChatMultiDeviceEventListener { diff --git a/docs/document/react-native/overview.md b/docs/document/react-native/overview.md index b45c056f2..5b1ec902c 100644 --- a/docs/document/react-native/overview.md +++ b/docs/document/react-native/overview.md @@ -34,7 +34,7 @@ 初始化示例代码: -```typescript +```TypeScript ChatClient.getInstance() .init( new ChatOptions({ @@ -85,7 +85,7 @@ ChatClient.getInstance() 若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。 -```typescript +```TypeScript ChatClient.getInstance() .createAccount(username, password) .then((value: any) => { @@ -117,7 +117,7 @@ ChatClient.getInstance() **用户 ID +密码** 登录是传统的登录方式。用户名和密码都是你的终端用户自行决定,密码需要符合密码规则要求。 -```typescript +```TypeScript ChatClient.getInstance() .login(username, password, true) .then((value: any) => { @@ -134,7 +134,7 @@ ChatClient.getInstance() 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 ::: -```typescript +```TypeScript ChatClient.getInstance() .login(username, token, false) .then((value: any) => { @@ -160,7 +160,7 @@ ChatClient.getInstance() 登出也是异步返回。 -```typescript +```TypeScript ChatClient.getInstance() .logout() .then(() => { @@ -175,7 +175,7 @@ ChatClient.getInstance() 你需添加 `ChatConnectEventListener#onConnected` 回调。 -```typescript +```TypeScript // 监听器建议在初始化完成之后,登录之前设置,这样可以恰当地收到登录通知。 let listener = new (class s implements ChatConnectEventListener { onTokenWillExpire(): void { @@ -251,6 +251,6 @@ ChatClient.getInstance().addConnectionListener(listener); 如果开启日志调试模式,会通过控制台输出日志。`debugModel` 设置为 `true`。 -```typescript +```TypeScript chatlog.log(`${ChatClient.TAG}: login: `, userName, "******", isPassword); ``` diff --git a/docs/document/react-native/presence.md b/docs/document/react-native/presence.md index efe716895..9d09055fe 100644 --- a/docs/document/react-native/presence.md +++ b/docs/document/react-native/presence.md @@ -48,7 +48,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `ChatPresenceManager#subscribe` 方法订阅指定用户的在线状态,示例代码如下: -```typescript +```TypeScript // memberIds: 要订阅的用户列表 // expiry: 过期时长,单位为秒 ChatClient.getInstance() @@ -74,7 +74,7 @@ ChatClient.getInstance() 若取消指定用户的在线状态订阅,可调用 `ChatPresenceManager#unSubscribe` 方法,示例代码如下: -```typescript +```TypeScript // memberIds: 将要取消订阅的用户列表 ChatClient.getInstance() .presenceManager.unSubscribe(memberIds) @@ -90,7 +90,7 @@ ChatClient.getInstance() 用户在线时,可调用 `ChatPresenceManager#publishPresence` 方法发布自定义在线状态: -```typescript +```TypeScript // description: 状态描述 ChatClient.getInstance() .presenceManager.publishPresence(description) @@ -108,7 +108,7 @@ ChatClient.getInstance() 添加用户在线状态的监听器以及接收状态变更事件通知,示例代码如下: -```typescript +```TypeScript // 导入 Presence 监听模块 class ChatPresenceEvent implements ChatPresenceEventListener { onPresenceStatusChanged(list: ChatPresence[]): void { @@ -127,7 +127,7 @@ ChatClient.getInstance().presenceManager.addPresenceListener( 为方便用户管理订阅关系,SDK 提供 `ChatPresenceManager#fetchSubscribedMembers` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```typescript +```TypeScript // pageNum: 页码 // pageSize: 单次请求返回的成员数,取值范围为 [1, 50] ChatClient.getInstance() @@ -144,7 +144,7 @@ ChatClient.getInstance() 如果不关注用户的在线状态变更,你可以调用 `ChatPresenceManager#fetchPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```typescript +```TypeScript // memberIds: 要查询在线状态的用户列表,每次最多可传 100 个用户 ID。 ChatClient.getInstance() .presenceManager.fetchPresenceStatus(memberIds) diff --git a/docs/document/react-native/push/push_display.md b/docs/document/react-native/push/push_display.md index 3677f8b30..36786e341 100644 --- a/docs/document/react-native/push/push_display.md +++ b/docs/document/react-native/push/push_display.md @@ -11,7 +11,7 @@ 你可以分别调用 `updatePushNickname` 和 `updatePushDisplayStyle` 方法设置推送通知中显示的昵称(`nickname`)和通知显示样式(`displayStyle`),确定通知栏中的推送标题和推送内容。 -```typescript +```TypeScript ChatClient.getInstance() .pushManager.updatePushNickname(nickname) .then(() => { @@ -22,7 +22,7 @@ ChatClient.getInstance() }); ``` -```typescript +```TypeScript ChatClient.getInstance() .pushManager.updatePushDisplayStyle(displayStyle) .then(() => { @@ -35,7 +35,7 @@ ChatClient.getInstance() 你可以调用 `fetchPushOptionFromServer` 方法获取推送通知中的显示属性,如以下代码示例所示: -```typescript +```TypeScript ChatClient.getInstance() .pushManager.fetchPushOptionFromServer() .then(() => { @@ -195,7 +195,7 @@ ChatClient.getInstance() 创建推送消息时,你可以设置消息扩展字段自定义要显示的推送标题 `em_push_title` 和推送内容 `em_push_content`。 -```typescript +```TypeScript msg.attributes = { // 消息扩展字段。该字段为内置内置字段,字段名不可修改。 em_apns_ext: { @@ -207,7 +207,7 @@ msg.attributes = { 自定义显示字段的数据结构如下: -```java +```Java { "em_apns_ext": { "em_push_title": "custom push title", diff --git a/docs/document/react-native/push/push_extension.md b/docs/document/react-native/push/push_extension.md index d115e3da0..6bc85da82 100644 --- a/docs/document/react-native/push/push_extension.md +++ b/docs/document/react-native/push/push_extension.md @@ -8,7 +8,7 @@ 创建推送消息时,可以在消息中添加自定义字段,满足个性化业务需求。 -```typescript +```TypeScript msg.attributes = { // 消息扩展字段。 "em_push_ext": { @@ -43,7 +43,7 @@ msg.attributes = { 设置强制推送后,用户发送消息时会忽略接收方的免打扰设置,不论是否处于免打扰时间段都会正常向接收方推送消息。 -```typescript +```TypeScript // 下面以文本消息为例,其他类型的消息设置方法相同。 msg.attributes = { // 是否为强制推送。该字段为内置字段,取值如下:`true`:强制推送;(默认)`false`:非强制推送。 @@ -57,7 +57,7 @@ msg.attributes = { 发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方在发送消息时设置,而免打扰模式为接收方设置在指定时间段内不接收推送通知。 -```typescript +```TypeScript // 下面以文本消息为例,其他类型的消息设置方法相同。 msg.attributes = { // 是否发送静默消息。该字段为内置字段,取值如下:`true`:发送静默消息;(默认)`false`:推送该消息。 diff --git a/docs/document/react-native/push/push_get_device_token.md b/docs/document/react-native/push/push_get_device_token.md index 0835d2279..4daac7264 100644 --- a/docs/document/react-native/push/push_get_device_token.md +++ b/docs/document/react-native/push/push_get_device_token.md @@ -84,13 +84,13 @@ end 1. 添加头文件: -```objc + ```Objective-C #import ``` 2. 在 `AppDelegate` 的 `- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions` 中添加代码: -```objc + ```Objective-C [[PushClient sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; ``` @@ -98,19 +98,19 @@ end 在 `AppDelegate` 的 `- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken` 中添加代码: -```objc + ```Objective-C [[PushClient sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; ``` 在 `AppDelegate` 的 `- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;` 中添加代码: -```objc + ```Objective-C [[PushClient sharedInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error]; ``` 在 `AppDelegate` 的 `- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler` 中添加代码: -```objc + ```Objective-C [[PushClient sharedInstance] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; ``` @@ -221,7 +221,7 @@ HUAWEI_PUSH_APPID=xxx 在 `MainApplication` 文件中,在方法 `onCreate` 中添加如下代码: -```java +```Java registerActivityLifecycleCallbacks(new PushActivityLifecycleCallbacks()); ``` @@ -239,7 +239,7 @@ registerActivityLifecycleCallbacks(new PushActivityLifecycleCallbacks()); #### 步骤一 初始化推送 SDK -```tsx +```TypeScript import { ChatPushClient, getPlatform, @@ -277,7 +277,7 @@ ChatPushClient.getInstance() 添加推送监听器,通过该监听器获取推送 token 或者失败结果。 -```tsx +```TypeScript ChatPushClient.getInstance().addListener({ onError: (error) => { ToastAndroid.show("onError" + JSON.stringify(error), ToastAndroid.SHORT); @@ -292,7 +292,7 @@ ChatPushClient.getInstance().addListener({ 通过 `onReceivePushToken` 接收推送 Token。 -```tsx +```TypeScript ChatPushClient.getInstance() .getTokenAsync() .then(() => { diff --git a/docs/document/react-native/push/push_notification_mode_dnd.md b/docs/document/react-native/push/push_notification_mode_dnd.md index 4bec3b2c4..c81305bcf 100644 --- a/docs/document/react-native/push/push_notification_mode_dnd.md +++ b/docs/document/react-native/push/push_notification_mode_dnd.md @@ -79,7 +79,7 @@ 你可以调用 `setSilentModeForAll` 设置 app 级别的推送通知,并通过指定 `ChatSilentModeParam` 字段设置推送通知方式和免打扰模式,如下代码示例所示: -```typescript +```TypeScript // convId:会话 ID。 // convType:会话类型。 // 将推送通知方式设置为 `MENTION_ONLY`。 @@ -108,7 +108,7 @@ ChatClient.getInstance() 你可以调用 `fetchSilentModeForAll` 获取 app 级别的推送通知设置,如以下代码示例所示: -```typescript +```TypeScript ChatClient.getInstance() .pushManager.fetchSilentModeForAll() .then((result) => { @@ -123,7 +123,7 @@ ChatClient.getInstance() 你可以调用 `setSilentModeForConversation` 方法设置指定会话的推送通知,并通过指定 `ChatSilentModeParam` 字段设置推送通知方式和免打扰模式,如以下代码示例所示: -```typescript +```TypeScript // convId:会话 ID。 // convType:会话类型。 // 将推送通知方式设置为 `MENTION_ONLY`。 @@ -156,7 +156,7 @@ ChatClient.getInstance() 你可以调用 `fetchSilentModeForConversation` 方法获取指定会话的推送通知设置,如以下代码示例所示: -```typescript +```TypeScript // convId:会话 ID。 // convType:会话类型。 ChatClient.getInstance() @@ -180,7 +180,7 @@ ChatClient.getInstance() 你可以调用 `fetchSilentModeForConversations` 方法获取多个会话的推送通知设置,如以下示例代码所示: -```typescript +```TypeScript // conversations:会话列表。 ChatClient.getInstance() .pushManager.fetchSilentModeForConversations(conversations) @@ -198,7 +198,7 @@ ChatClient.getInstance() 以下代码示例显示了如何清除会话的推送通知方式: -```typescript +```TypeScript // convId:会话 ID。 // convType:会话类型。 ChatClient.getInstance() diff --git a/docs/document/react-native/push/push_send_token_to_server.md b/docs/document/react-native/push/push_send_token_to_server.md index f8e25af9c..63c20d29c 100644 --- a/docs/document/react-native/push/push_send_token_to_server.md +++ b/docs/document/react-native/push/push_send_token_to_server.md @@ -23,7 +23,7 @@ yarn add react-native-chat-sdk ![img](/images/react-native/push/push_get_certificate_name.png) -```tsx +```TypeScript import { getPlatform, getDeviceType } from "react-native-push-collection"; import { ChatClient, ChatOptions, ChatPushConfig } from "react-native-chat-sdk"; @@ -48,7 +48,7 @@ const pushType = React.useMemo(() => { ### 步骤三 初始化即时通讯 IM SDK -```tsx +```TypeScript ChatClient.getInstance() .init( new ChatOptions({ @@ -69,7 +69,7 @@ ChatClient.getInstance() ### 步骤四 初始化推送 SDK -```tsx +```TypeScript ChatPushClient.getInstance() .init({ platform: getPlatform(), @@ -99,7 +99,7 @@ ChatPushClient.getInstance() ### 步骤五 更新服务端的推送 Token -```tsx +```TypeScript ChatClient.getInstance() .updatePushConfig( new ChatPushConfig({ diff --git a/docs/document/react-native/push/push_translation.md b/docs/document/react-native/push/push_translation.md index c99f4e202..277b00fcd 100644 --- a/docs/document/react-native/push/push_translation.md +++ b/docs/document/react-native/push/push_translation.md @@ -6,7 +6,7 @@ 以下示例代码显示如何设置和获取推送通知的首选语言: -```typescript +```TypeScript // 设置推送通知的首选语言 ChatClient.getInstance() .pushManager.setPreferredNotificationLanguage(languageCode) diff --git a/docs/document/react-native/quickstart.md b/docs/document/react-native/quickstart.md index 99c871fc0..a81bf80e6 100644 --- a/docs/document/react-native/quickstart.md +++ b/docs/document/react-native/quickstart.md @@ -84,7 +84,7 @@ cd ios && pod install && cd .. 建议使用 `visual studio code` 打开文件夹 `simple_demo`,打开文件 `App.js`,删除全部内容,并添加如下内容: -```javascript +```JavaScript // 导入依赖库 import React, {useEffect} from 'react'; import { diff --git a/docs/document/react-native/reaction.md b/docs/document/react-native/reaction.md index 5ea4cb591..b3bc52309 100644 --- a/docs/document/react-native/reaction.md +++ b/docs/document/react-native/reaction.md @@ -37,7 +37,7 @@ Reaction 场景示例如下: 示例代码如下: -```typescript +```TypeScript // reaction: Reaction ID // msgId: 消息 ID // 在指定消息上添加 Reaction @@ -57,7 +57,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // reaction: Reaction ID // msgId: 消息 ID ChatClient.getInstance() @@ -78,7 +78,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // msgId: 消息 ID ChatClient.getInstance() .chatManager.getReactionList(msgId) @@ -92,7 +92,7 @@ ChatClient.getInstance() 消息的快捷访问方式。示例如下: -```typescript +```TypeScript // 通过消息快捷访问 Reaction 列表 const msg = ChatMessage.createTextMessage(targetId, content); msg.reactionList @@ -108,7 +108,7 @@ msg.reactionList 调用 `fetchReactionDetail` 方法可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容,添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```typescript +```TypeScript // reaction: Reaction ID // msgId: 消息 ID // pageSize: 单次请求返回的成员数,取值范围为 [1, 50] @@ -125,7 +125,7 @@ ChatClient.getInstance() ### 管理 Reaction 监听 -```typescript +```TypeScript // 监听 Reaction 更新 class ChatMessageEvent implements ChatMessageEventListener { onMessageReactionDidChange(_list: ChatMessageReactionEvent[]): void { diff --git a/docs/document/react-native/room_attributes.md b/docs/document/react-native/room_attributes.md index 8380bcfea..226325f2a 100644 --- a/docs/document/react-native/room_attributes.md +++ b/docs/document/react-native/room_attributes.md @@ -37,7 +37,7 @@ 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.fetchChatRoomAnnouncement(roomId) .then((ann) => { @@ -54,7 +54,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.updateChatRoomAnnouncement(roomId, announcement) .then(() => { @@ -71,7 +71,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.changeChatRoomSubject(roomId, subject) .then(() => { @@ -88,7 +88,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.changeChatRoomDescription(roomId, desc) .then(() => { @@ -104,7 +104,7 @@ ChatClient.getInstance() 聊天室所有成员均可调用 `fetchChatRoomAttributes` 方法获取聊天室指定自定义属性。 -```typescript +```TypeScript // 通过指定聊天室 ID 和属性 key 检索某些自定义属性。 如果 key 为 `null` 或空字符串,则获取所有内容。 ChatClient.getInstance() .roomManager.fetchChatRoomAttributes(roomId, keys) @@ -120,7 +120,7 @@ ChatClient.getInstance() 所有聊天室成员均可调用 `addAttributes` 方法设置或更新一个或多个聊天室自定义属性。利用该方法可设置新属性,也可以修改自己或其他成员设置的现有属性。设置后,其他聊天室成员收到 `onAttributesUpdated` 回调。 -```typescript +```TypeScript // 通过指定聊天室 ID、属性 key、属性值、deleteWhenLeft 和 overwrite 设置自定义属性。 // deleteWhenLeft:当前成员退出聊天室时是否自动删除其设置的自定义属性。 // overwrite:是否覆盖其他成员设置的 key 相同的属性。 @@ -144,7 +144,7 @@ ChatClient.getInstance() 聊天室成员可以调用 `removeAttributes` 方法删除聊天室自定义属性。利用该方法可删除自己和其他成员设置的自定义属性。删除后,聊天室其他成员收到 `onAttributesRemoved` 回调。 -```typescript +```TypeScript // 通过指定聊天室 ID、属性 key 和 `forced` 删除自定义属性。 // keys 可为数组格式,表示同时删除多个属性,失败返回错误信息。 // `forced` 表示是否删除其他成员设置的 key 相同的属性。 diff --git a/docs/document/react-native/room_manage.md b/docs/document/react-native/room_manage.md index f0a473819..62c14205c 100644 --- a/docs/document/react-native/room_manage.md +++ b/docs/document/react-native/room_manage.md @@ -41,7 +41,7 @@ 示例代码如下: -```typescript +```TypeScript // 聊天室名称,不能超过 128 个字符 const subject = ""; // 聊天室描述, 不能超过 512 个字符 @@ -71,7 +71,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .chatManager.joinChatRoomEx({ roomId: "foo", @@ -92,7 +92,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.fetchChatRoomInfoFromServer(roomId) .then((info) => { @@ -107,7 +107,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.getChatRoomWithId(roomId) .then((info) => { @@ -124,7 +124,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.destroyChatRoom(roomId) .then(() => { @@ -141,7 +141,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 实现监听器以及定义监听器对象。 const roomListener: ChatRoomEventListener = new (class implements ChatRoomEventListener @@ -296,7 +296,7 @@ ChatClient.getInstance().roomManager.addRoomListener(roomListener); 2. 收到通知事件后,调用 `fetchChatRoomInfoFromServer` 方法获取本地聊天室详情,其中包括聊天室当前人数。 -```typescript +```TypeScript ChatClient.getInstance() .chatManager.fetchChatRoomInfoFromServer( roomId // 房间ID diff --git a/docs/document/react-native/room_members.md b/docs/document/react-native/room_members.md index 0a44097d1..e17f2c275 100644 --- a/docs/document/react-native/room_members.md +++ b/docs/document/react-native/room_members.md @@ -34,7 +34,7 @@ 示例代码如下: -```typescript +```TypeScript //cursor:从该游标位置开始取数据。首次调用 cursor 传空值,从最新数据开始获取。 //pageSize:每页期望返回的成员数,最大值为 1,000。 ChatClient.getInstance() @@ -55,7 +55,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.leaveChatRoom(roomId) .then(() => { @@ -70,7 +70,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatOptions options = new ChatOptions(); options.deleteMessagesAsExitChatRoom = false; ``` @@ -85,7 +85,7 @@ options.deleteMessagesAsExitChatRoom = false; 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.removeChatRoomMembers(roomId, members) .then(() => { @@ -117,7 +117,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.blockChatRoomMembers(roomId, members) .then(() => { @@ -134,7 +134,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.unblockChatRoomMembers(roomId, members) .then(() => { @@ -151,7 +151,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.fetchChatRoomBlockList(roomId, pageNum, pageSize) .then((members) => { @@ -174,7 +174,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.fetchChatRoomAllowListFromServer(roomId) .then((members) => { @@ -191,7 +191,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.addMembersToChatRoomAllowList(roomId, members) .then((members) => { @@ -208,7 +208,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.removeMembersFromChatRoomAllowList(roomId, members) .then((members) => { @@ -223,7 +223,7 @@ ChatClient.getInstance() 所有聊天室成员可以调用 `isMemberInChatRoomAllowList` 方法检查自己是否在白名单中,示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.isMemberInChatRoomAllowList(roomId) .then((members) => { @@ -246,7 +246,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // duration:禁言时间。若传 -1,表示永久禁言。 ChatClient.getInstance() .roomManager.muteChatRoomMembers(roomId, muteMembers, duration) @@ -268,7 +268,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.unMuteChatRoomMembers(roomId, unMuteMembers) .then(() => { @@ -285,7 +285,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.fetchChatRoomMuteList(roomId, pageNum, pageSize) .then((members) => { @@ -308,7 +308,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.muteAllChatRoomMembers(roomId) .then((members) => { @@ -325,7 +325,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.unMuteAllChatRoomMembers(roomId) .then((members) => { @@ -344,7 +344,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.changeOwner(roomId, newOwner) .then(() => { @@ -361,7 +361,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.addChatRoomAdmin(roomId, admin) .then(() => { @@ -378,7 +378,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript ChatClient.getInstance() .roomManager.removeChatRoomAdmin(roomId, admin) .then(() => { diff --git a/docs/document/react-native/thread.md b/docs/document/react-native/thread.md index 490717968..00603c4fc 100644 --- a/docs/document/react-native/thread.md +++ b/docs/document/react-native/thread.md @@ -39,7 +39,7 @@ 示例代码如下: -```typescript +```TypeScript // name: 要创建的子区的名称 // msgId: 子区的父消息 ID // parentId: 子区的父节点,通常是群组 ID @@ -65,7 +65,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID ChatClient.getInstance() .chatManager.destroyChatThread(chatThreadID) @@ -90,7 +90,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID ChatClient.getInstance() .chatManager.joinChatThread(chatThreadID) @@ -110,7 +110,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID ChatClient.getInstance() .chatManager.leaveChatThread(chatThreadID) @@ -130,7 +130,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID // member: 子区成员的用户 ID ChatClient.getInstance() @@ -151,7 +151,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID // newChatThreadName: 修改的子区名称,长度不超过 64 个字符 ChatClient.getInstance() @@ -170,7 +170,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID ChatClient.getInstance() .chatManager.fetchChatThreadFromServer(chatThreadID) @@ -186,7 +186,7 @@ ChatClient.getInstance() 子区所属群组的所有成员均可以调用 `fetchMembersWithChatThreadFromServer` 方法从服务器分页获取子区成员列表。 -```typescript +```TypeScript // chatThreadId: 子区 ID // pageSize: 单次请求返回的成员数,取值范围为 [1, 50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -208,7 +208,7 @@ ChatClient.getInstance() 1. 用户可以调用 `fetchJoinedChatThreadFromServer` 方法从服务器分页获取自己加入和创建的子区列表: -```typescript +```TypeScript // pageSize: 单次请求返回的子区数,取值范围为 [1, 50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 ChatClient.getInstance() @@ -223,7 +223,7 @@ ChatClient.getInstance() 2. 用户可以调用 `fetchJoinedChatThreadWithParentFromServer` 方法从服务器分页获取指定群组中自己加入和创建的子区列表: -```typescript +```TypeScript // parentId: 群组 ID // pageSize: 单次请求返回的子区数,取值范围为 [1, 50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -243,7 +243,7 @@ ChatClient.getInstance() 3. 用户还可以调用 `fetchChatThreadWithParentFromServer` 方法从服务器分页获取指定群组的子区列表: -```typescript +```TypeScript // parentId: 群组 ID // pageSize: 单次请求返回的子区数,取值范围为 [1, 50] // cursor: 开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -263,7 +263,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // chatThreadIDs: 要查询的子区 ID 列表,每次最多可传入 20 个子区 ID ChatClient.getInstance() .chatManager.fetchLastMessageWithChatThread(chatThreadIDs) @@ -281,7 +281,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript class ChatMessageEvent implements ChatMessageEventListener { onChatMessageThreadCreated(msgThread: ChatMessageThreadEvent): void { console.log(`onChatMessageThreadCreated: `, msgThread); diff --git a/docs/document/react-native/thread_message.md b/docs/document/react-native/thread_message.md index dc3454a95..8004caa08 100644 --- a/docs/document/react-native/thread_message.md +++ b/docs/document/react-native/thread_message.md @@ -43,7 +43,7 @@ 示例代码如下: -```typescript +```TypeScript // chatThreadID: 子区 ID。 // content: 文本消息内容 // convType: 会话类型为群组会话,即 ChatConversationType.GroupChat @@ -75,7 +75,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 继承并实现 `ChatMessageEventListener` class ChatMessageEvent implements ChatMessageEventListener { onMessagesReceived(messages: ChatMessage[]): void { @@ -106,7 +106,7 @@ ChatClient.getInstance().chatManager.removeAllMessageListener(); 示例代码如下: -```typescript +```TypeScript // 继承并实现 `ChatMessageEventListener` class ChatMessageEvent implements ChatMessageEventListener { onMessagesRecalledInfo(infos: ChatRecalledMessageInfo[]): void { @@ -129,7 +129,7 @@ class ChatMessageEvent implements ChatMessageEventListener { 调用 `fetchHistoryMessages` 方法从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```typescript +```TypeScript // chatThreadID: 子区 ID。 const chatThreadID = "chatThreadID"; // 会话类型为群聊,即 ChatConversationType.GroupChat。 @@ -160,7 +160,7 @@ ChatClient.getInstance() 你可以调用 `getThreadConversation` 方法获取子区会话,然后从本地数据库中读取指定会话的消息: -```typescript +```TypeScript // 获取子区会话 ChatClient.getInstance() .chatManager.getThreadConversation(chatThreadID, createIfNeed) diff --git a/docs/document/react-native/user_relationship.md b/docs/document/react-native/user_relationship.md index ab36cb353..7d696cf7f 100644 --- a/docs/document/react-native/user_relationship.md +++ b/docs/document/react-native/user_relationship.md @@ -38,7 +38,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 1. 用户添加指定用户为好友 -```typescript +```TypeScript // 用户 ID const userId = "foo"; // 申请加为好友的理由 @@ -57,7 +57,7 @@ ChatClient.getInstance() 同意成为好友: -```typescript +```TypeScript // 用户 ID const userId = "bar"; ChatClient.getInstance() @@ -72,7 +72,7 @@ ChatClient.getInstance() 拒绝成为好友: -```typescript +```TypeScript // 用户 ID const userId = "bar"; ChatClient.getInstance() @@ -87,7 +87,7 @@ ChatClient.getInstance() 3. 接收方对于同意,申请方收到监听事件 `onContactInvited` -```typescript +```TypeScript const contactEventListener = new (class implements ChatContactEventListener { that: any; constructor(parent: any) { @@ -104,7 +104,7 @@ ChatClient.getInstance().contactManager.addContactListener( 4. 对方拒绝,收到监听事件 `onFriendRequestDeclined` -```typescript +```TypeScript const contactEventListener = new (class implements ChatContactEventListener { that: any; constructor(parent: any) { @@ -123,7 +123,7 @@ ChatClient.getInstance().contactManager.addContactListener( 删除好友时会同时删除对方联系人列表中的该用户,建议执行双重确认,以免发生误删操作。删除操作不需要对方同意或者拒绝。 -```typescript +```TypeScript // 用户 ID const userId = "tom"; // 是否保留聊天会话 @@ -144,7 +144,7 @@ ChatClient.getInstance() 好友备注的长度不能超过 100 个字符。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.setContactRemark({ userId: "xxx", remark: "user remark" }) .then() @@ -157,7 +157,7 @@ ChatClient.getInstance() - 一次性获取服务端好友列表。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.fetchAllContacts() .then((contactList: Contact[]) => { @@ -168,7 +168,7 @@ ChatClient.getInstance() - 分页获取服务端好友列表。 -```typescript +```TypeScript // cursor 数据获取的起始位置,获取第一页设置为 `空字符串` 或者 `undefined`。 // pageSize 获取每页的最大数目,取值范围为 [1,50]。 ChatClient.getInstance() @@ -184,7 +184,7 @@ ChatClient.getInstance() 此外,你也可以调用 `getAllContactsFromServer` 方法从服务器获取所有好友的列表,该列表只包含好友的用户 ID。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getAllContactsFromServer() .then((value) => { @@ -205,7 +205,7 @@ ChatClient.getInstance() - 获取本地单个好友。 -```typescript +```TypeScript // userId 获取指定用户的好友备注。 ChatClient.getInstance() .contactManager.getContact(userId) @@ -217,7 +217,7 @@ ChatClient.getInstance() - 一次性获取本地好友列表。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getAllContacts() .then((contactList: Contact[]) => { @@ -228,7 +228,7 @@ ChatClient.getInstance() 此外,你也可以调用 `getAllContactsFromDB` 方法从本地一次性获取所有好友的列表,该列表只包含好友的用户 ID。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getAllContactsFromDB() .then((value) => { @@ -245,7 +245,7 @@ ChatClient.getInstance() 用户可以将任何其他用户添加到黑名单列表,无论该用户是否是好友。好友被加入黑名单后仍在好友列表上显示。 -```typescript +```TypeScript // 用户 ID const userId = "tom"; // 将用户添加到黑名单 @@ -263,7 +263,7 @@ ChatClient.getInstance() 1. 使用本地缓存获取黑名单列表 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getBlockListFromDB() .then((list) => { @@ -278,7 +278,7 @@ ChatClient.getInstance() 从服务器获取黑名单列表之后,才能从本地数据库获取到黑名单列表。 -```typescript +```TypeScript ChatClient.getInstance() .contactManager.getBlockListFromServer() .then((list) => { @@ -293,7 +293,7 @@ ChatClient.getInstance() 被移出黑名单后,用户发送消息等行为将恢复。 -```typescript +```TypeScript // 用户 ID const userId = "tom"; // 将用户从黑名单移除 diff --git a/docs/document/react-native/userprofile.md b/docs/document/react-native/userprofile.md index 16a5643aa..fdf10c0f0 100644 --- a/docs/document/react-native/userprofile.md +++ b/docs/document/react-native/userprofile.md @@ -37,7 +37,7 @@ 参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。 -```typescript +```TypeScript // 更新当前用户信息 // 除了用户 ID,其他属性都可以更新 // 可以同时更新任何一个或者多个属性 @@ -79,7 +79,7 @@ ChatClient.getInstance() 示例代码如下: -```typescript +```TypeScript // 指定获取的一个或者多个用户 ID,一次调用用户 ID 数量不超过 100。 const userIds = ["tom", "json"]; // 执行获取操作 @@ -95,7 +95,7 @@ ChatClient.getInstance() ### 获取当前用户的属性 -```typescript +```TypeScript // 执行获取操作 ChatClient.getInstance() .userManager.fetchOwnInfo() @@ -122,7 +122,7 @@ ChatClient.getInstance() 如果使用场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现: -```typescript +```TypeScript // 自定义消息。消息内容由两部分组成:消息事件和扩展字段。 // 扩展字段用户可以自行实现和使用。 const event = "userCard"; diff --git a/docs/document/server-side/java_server_sdk.md b/docs/document/server-side/java_server_sdk.md index b3bdb279a..9ccbd83ad 100644 --- a/docs/document/server-side/java_server_sdk.md +++ b/docs/document/server-side/java_server_sdk.md @@ -40,7 +40,7 @@ implementation 'com.easemob.im:im-sdk-core:0.8.56' #### 1. 使用 Easemob App Credentials 的情况 -```java +```Java 建议写到配置类中,示例如下: @Configuration public class Config { @@ -77,7 +77,7 @@ public class Config { 举个例子,我们要注册一个用户,就可以这样写: -```java +```Java @Service public class UserService { @@ -107,7 +107,7 @@ API 的返回值是响应式的,如果希望阻塞,可以使用上面例子 建议写到配置类中,示例如下: -```java +```Java @Configuration public class Config { @@ -153,7 +153,7 @@ logging.level.com.easemob.im.shaded.io.netty=error 示例: -```java +```Java @Configuration public class Config { @@ -186,7 +186,7 @@ public class Config { 如果不想使用 Server SDK 注册环信 ID 的限制,可以在初始化配置时添加 ‘turnOffUserNameValidation()’ (SDK 需要使用 0.3.5 以上的版本) -```java +```Java // 强烈建议不要使用纯数字或者有规律的字符串来注册环信 ID,否则用户可能容易遭受到攻击、接收到垃圾消息。 EMProperties properties = EMProperties.builder() .setAppkey("appkey") @@ -202,7 +202,7 @@ EMProperties properties = EMProperties.builder() 如果你使用的代代理不需要认证,那么需要传入自己的 IP、端口。 -```java +```Java EMProxy proxy = EMProxy.builder() .setIP("ip") .setPort(80) @@ -218,7 +218,7 @@ EMProperties properties = EMProperties.builder() 如果你使用的代理需要认证,那么需要传入自己的 IP、端口、账号以及密码。 -```java +```Java EMProxy proxy = EMProxy.builder() .setIP("ip") .setPort(80) diff --git a/docs/document/server-side/java_server_sdk_2.0.md b/docs/document/server-side/java_server_sdk_2.0.md index 26be25606..8aaa57c14 100644 --- a/docs/document/server-side/java_server_sdk_2.0.md +++ b/docs/document/server-side/java_server_sdk_2.0.md @@ -39,7 +39,7 @@ implementation 'com.easemob.im:im-sdk-core:1.0.11' #### 1. 使用 Easemob App Credentials 的情况 -```java +```Java SDK 初始化建议写到配置类中,示例如下: @Configuration public class Config { @@ -83,7 +83,7 @@ public class Config { 注意:在使用各业务 API 前,一定要保证 SDK 初始化完成。 -```java +```Java @Service public class UserService { @@ -112,7 +112,7 @@ public class UserService { 建议写到配置类中,示例如下: -```java +```Java try { Configuration.setDefaultApiClient(ApiClient.builder() .setBasePath("https://Your privatized address name") @@ -137,7 +137,7 @@ try { 示例: -```java +```Java try { Configuration.setDefaultApiClient(ApiClient.builder() .setBasePath("Rest BasePath") @@ -161,7 +161,7 @@ try { 如果你使用的代代理不需要认证,那么需要传入自己的 IP、端口。 -```java +```Java ApiClient.EMProxy proxy = ApiClient.EMProxy.builder() .setIP("ip") .setPort(80) @@ -182,7 +182,7 @@ try { 如果你使用的代理需要认证,那么需要传入自己的 IP、端口、账号以及密码。 -```java +```Java ApiClient.EMProxy proxy = ApiClient.EMProxy.builder() .setIP("ip") .setPort(80) diff --git a/docs/document/unity/connection.md b/docs/document/unity/connection.md index 2f06217e1..9e55f4f73 100644 --- a/docs/document/unity/connection.md +++ b/docs/document/unity/connection.md @@ -8,7 +8,7 @@ 你可以通过注册连接监听确认连接状态。 -```csharp +```C-Sharp // 监听器建议在初始化完成之后,登录之前设置,这样可确保收到登录通知。 class ConnectionDelegate : IConnectionDelegate diff --git a/docs/document/unity/conversation_delete.md b/docs/document/unity/conversation_delete.md index 0b666a106..354cecd1d 100644 --- a/docs/document/unity/conversation_delete.md +++ b/docs/document/unity/conversation_delete.md @@ -24,7 +24,7 @@ 你可以调用 `DeleteConversationFromServer` 方法删除服务器端会话,并选择是否删除服务端的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。调用该接口会删除本地会话。该接口不影响其他用户的会话和消息。 -```csharp +```C# // 如果需要保留服务端的历史消息,`isDeleteServerMessages` 传 `false`。 SDKClient.Instance.ChatManager.DeleteConversationFromServer(conversationId, conversationType, isDeleteServerMessages, new CallBack( onSuccess: () => @@ -40,14 +40,14 @@ SDKClient.Instance.ChatManager.DeleteConversationFromServer(conversationId, conv - 你可以调用 `DeleteConversation` 方法删除本地会话及其聊天消息: -```csharp +```C# //如需保留历史消息,传 `false`。 SDKClient.Instance.ChatManager.DeleteConversation(conversationId, true); ``` - 你可以调用 `DeleteMessage` 方法删除指定会话中指定的一条历史消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.DeleteMessage(msgId); ``` diff --git a/docs/document/unity/conversation_list.md b/docs/document/unity/conversation_list.md index 4a6030942..59aea2bac 100644 --- a/docs/document/unity/conversation_list.md +++ b/docs/document/unity/conversation_list.md @@ -37,7 +37,7 @@ 3. 通过 RESTful 接口发送的消息默认不创建或写入会话。若会话中的最新一条消息通过 RESTful 接口发送,获取会话列表时,该会话中的最新一条消息显示为通过非 RESTful 接口发送的最新消息。若要开通 RESTful 接口发送的消息写入会话列表的功能,需在[环信即时通讯控制台开通](/product/enable_and_configure_IM.html#设置通过-restful-api-发送的消息写入会话列表)。 ::: -```csharp +```C# // limit: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。若获取数据时传 `null` 或者空字符串(""),SDK 从最新活跃的会话开始查询。 int limit = 10; @@ -66,7 +66,7 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor(pinOnly, cur 若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本。 -```csharp +```C# SDKClient.Instance.ChatManager.GetConversationsFromServerWithPage(pageNum, pageSize, new ValueCallBack>( //获取会话成功后的处理逻辑。 //list 为 List 类型。 @@ -89,6 +89,6 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithPage(pageNum, pageS 示例代码如下: -```csharp +```C# Listlist = SDKClient.Instance.ChatManager.LoadAllConversations(); ``` \ No newline at end of file diff --git a/docs/document/unity/conversation_mark.md b/docs/document/unity/conversation_mark.md index dd8c3faad..06e3af496 100644 --- a/docs/document/unity/conversation_mark.md +++ b/docs/document/unity/conversation_mark.md @@ -8,7 +8,7 @@ 你需要自行维护会话标记与具体业务含义(比如 `MarkType0` 为重要会话)之间的映射关系。例如: -```csharp +```C# Dictionary dict = new Dictionary(); dict.Add(MarkType0, "important"); dict.Add(MarkType1, "normal"); @@ -47,7 +47,7 @@ dict.Add(MarkType4, "girls"); 对会话添加标记,例如会话标星,并不影响会话的其他逻辑,例如会话的未读消息数。 ::: -```csharp +```C# List list = new List(); list.Add("huanhuan"); bool isMarked = true; @@ -67,7 +67,7 @@ SDKClient.Instance.ChatManager.MarkConversations(list, isMarked, (MarkType)mark, 调用该方法会同时移除本地和服务器端会话的标记。 -```csharp +```C# List list = new List(); list.Add("huanhuan"); bool isMarked = false; @@ -85,7 +85,7 @@ SDKClient.Instance.ChatManager.MarkConversations(list, isMarked, (MarkType)mark, 你可以调用 `GetConversationsFromServerWithCursor` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 0)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。 -```csharp +```C# SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor((MarkType)mark, cursor, limit, new ValueCallBack>( onSuccess: (result) => { @@ -104,7 +104,7 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor((MarkType)ma 对于本地会话,你可以调用 `LoadAllConversations` 方法获取本地所有会话后自己进行会话过滤。下面以查询标记了 `EMConversation.EMMarkType.MARK_0` 的所有本地会话为例。 -```csharp +```C# //最终的查询结果全部放入 result 中。 List result = new List(); List localConversations = SDKClient.Instance.ChatManager.LoadAllConversations(); @@ -125,7 +125,7 @@ foreach(var conv in localConversations) 你可以调用 `Conversation#Marks` 方法获取本地单个会话的所有标记,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("conversationId", conversationType); List Marks = conv.Marks(); ``` diff --git a/docs/document/unity/conversation_overview.md b/docs/document/unity/conversation_overview.md index 256e4af3f..95aad9c27 100644 --- a/docs/document/unity/conversation_overview.md +++ b/docs/document/unity/conversation_overview.md @@ -43,7 +43,7 @@ 示例代码如下: -```csharp +```C# public class ChatManagerDelegate : IChatManagerDelegate { // 收到会话已读的事件。该事件在以下场景中触发: // 1. 当消息接收方调用 `SendConversationReadAck 方法,SDK 会执行此回调, diff --git a/docs/document/unity/conversation_pin.md b/docs/document/unity/conversation_pin.md index c9537e582..ca4f37846 100644 --- a/docs/document/unity/conversation_pin.md +++ b/docs/document/unity/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.PinConversation(convId, isPinned, new CallBack( onSuccess: () => { diff --git a/docs/document/unity/conversation_receipt.md b/docs/document/unity/conversation_receipt.md index c12670254..15a1a579d 100644 --- a/docs/document/unity/conversation_receipt.md +++ b/docs/document/unity/conversation_receipt.md @@ -29,7 +29,7 @@ 1. 开启已读回执功能,即 SDK 初始化时设置 `Options#RequireAck` 为 `true`。 - ```csharp + ```C# // 设置是否需要接受方已读确认,默认为 true options.RequireAck = true; ``` @@ -40,7 +40,7 @@ options.RequireAck = true; 若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `SendMessageReadAck`,则需要调用多次。 -```csharp +```C# SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallBack( onSuccess: () => { @@ -59,7 +59,7 @@ SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallB 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `OnConversationRead` 回调收到会话已读回执。 ::: -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... diff --git a/docs/document/unity/conversation_unread.md b/docs/document/unity/conversation_unread.md index bb3e7d3d1..dffb88ec5 100644 --- a/docs/document/unity/conversation_unread.md +++ b/docs/document/unity/conversation_unread.md @@ -27,7 +27,7 @@ 你可以调用 `GetUnreadMessageCount` 方法获取本地所有会话的未读消息数量,示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetUnreadMessageCount(); ``` @@ -35,7 +35,7 @@ SDKClient.Instance.ChatManager.GetUnreadMessageCount(); 你可以调用 `UnReadCount` 方法获取本地指定会话的未读消息数,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); int unread = conv.UnReadCount; ``` @@ -44,7 +44,7 @@ int unread = conv.UnReadCount; 你可以调用 `MarkAllConversationsAsRead` 方法将本地所有会话设为已读,即将所有会话的未读消息数清零,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); SDKClient.Instance.ChatManager.MarkAllConversationsAsRead(); ``` @@ -53,7 +53,7 @@ SDKClient.Instance.ChatManager.MarkAllConversationsAsRead(); 你可以调用 `MarkAllMessageAsRead` 方法对指定会话的未读消息数清零,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.MarkAllMessageAsRead(); ``` @@ -62,7 +62,7 @@ conv.MarkAllMessageAsRead(); 你可以调用 `markMessageAsRead` 方法将指定会话的单条未读消息置为已读。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.MarkMessageAsRead(msgId); ``` diff --git a/docs/document/unity/error.md b/docs/document/unity/error.md index e63945948..f9474c126 100644 --- a/docs/document/unity/error.md +++ b/docs/document/unity/error.md @@ -13,7 +13,7 @@ 例如,注册时用户返回已存在的错误可以这样检测: -```csharp +```C# SDKClient.Instance.Login(username, passwd, callback: new CallBack( onSuccess: () => diff --git a/docs/document/unity/group_attributes.md b/docs/document/unity/group_attributes.md index ee129f3aa..da08cdef2 100644 --- a/docs/document/unity/group_attributes.md +++ b/docs/document/unity/group_attributes.md @@ -31,7 +31,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupName(groupId, groupName, new CallBack( onSuccess: () => { @@ -48,7 +48,7 @@ SDKClient.Instance.GroupManager.ChangeGroupName(groupId, groupName, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupDescription(groupId, description, new CallBack( onSuccess: () => { @@ -65,7 +65,7 @@ SDKClient.Instance.GroupManager.ChangeGroupDescription(groupId, description, new 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UpdateGroupAnnouncement(groupId, announcement, new CallBack( onSuccess: () => { @@ -82,7 +82,7 @@ SDKClient.Instance.GroupManager.UpdateGroupAnnouncement(groupId, announcement, n 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupAnnouncementFromServer(currentGroupId, new ValueCallBack( onSuccess: (str) => { @@ -101,7 +101,7 @@ SDKClient.Instance.GroupManager.GetGroupAnnouncementFromServer(currentGroupId, n 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UploadGroupSharedFile(groupId, filePath, new CallBack( onSuccess: () => { @@ -120,7 +120,7 @@ SDKClient.Instance.GroupManager.UploadGroupSharedFile(groupId, filePath, new Cal 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.DeleteGroupSharedFile(groupId, id, new CallBack( onSuccess: () => { @@ -137,7 +137,7 @@ SDKClient.Instance.GroupManager.DeleteGroupSharedFile(groupId, id, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupFileListFromServer(groupId, pageNum, pageSize, callback: new ValueCallBack> ( onSuccess: (fileList) => { @@ -154,7 +154,7 @@ SDKClient.Instance.GroupManager.GetGroupFileListFromServer(groupId, pageNum, pag 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UpdateGroupExt(currentGroupId, extension, new CallBack( onSuccess: () => { diff --git a/docs/document/unity/group_manage.md b/docs/document/unity/group_manage.md index 5a38d54af..bd3809cbf 100644 --- a/docs/document/unity/group_manage.md +++ b/docs/document/unity/group_manage.md @@ -54,7 +54,7 @@ 示例代码如下: -```csharp +```C# GroupOptions option = new GroupOptions(GroupStyle.PrivateMemberCanInvite); option.MaxCount = 100; SDKClient.Instance.GroupManager.CreateGroup(groupname, option, desc, members, callback:new ValueCallBack( @@ -85,7 +85,7 @@ SDKClient.Instance.GroupManager.CreateGroup(groupname, option, desc, members, ca 示例代码如下: -```csharp +```C# // 获取公开群组列表 SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(callback: new ValueCallBack>( //result 为 CursorResult @@ -117,7 +117,7 @@ SDKClient.Instance.GroupManager.JoinPublicGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.DestroyGroup(groupId, new CallBack( onSuccess: () => { @@ -134,7 +134,7 @@ SDKClient.Instance.GroupManager.DestroyGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.LeaveGroup(groupId, new CallBack( onSuccess: () => { @@ -157,7 +157,7 @@ SDKClient.Instance.GroupManager.LeaveGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# // 根据群组 ID 从本地获取群组详情。 Group group = SDKClient.Instance.GroupManager.GetGroupWithId(groupId); @@ -177,7 +177,7 @@ SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(groupId, new Val 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupMemberListFromServer(groupId, pageSize, cursor, callback: new ValueCallBack>( onSuccess: (result) => { @@ -192,7 +192,7 @@ SDKClient.Instance.GroupManager.GetGroupMemberListFromServer(groupId, pageSize, 用户可以调用 `FetchJoinedGroupsFromServer` 方法从服务器获取自己加入和创建的群组列表。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.FetchJoinedGroupsFromServer(callback: new ValueCallBack>( onSuccess: (groupList) => { }, @@ -204,13 +204,13 @@ SDKClient.Instance.GroupManager.FetchJoinedGroupsFromServer(callback: new ValueC 用户可以调用 `GetJoinedGroups` 方法加载本地群组列表。为了保证数据的正确性,需要先从服务器获取自己加入和创建的群组列表。示例代码如下: -```csharp +```C# List groupList = SDKClient.Instance.GroupManager.GetJoinedGroups(); ``` 用户还可以调用 `FetchPublicGroupsFromServer` 方法从服务器分页获取公开群组列表。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(pageSize, cursor, callback: new ValueCallBack>( onSuccess: (result) => { @@ -225,7 +225,7 @@ SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(pageSize, cursor, ca 自 1.3.0 版本开始,你可以调用 `FetchMyGroupsCount` 方法从服务器获取当前用户已加入的群组数量。单个用户可加入群组数量的上限取决于订阅的即时通讯的套餐包,详见[产品价格](/product/pricing.html#套餐包功能详情)。 -```csharp +```C# SDKClient.Instance.GroupManager.FetchMyGroupsCount(new ValueCallBack( onSuccess: (count) => { @@ -242,7 +242,7 @@ SDKClient.Instance.GroupManager.FetchMyGroupsCount(new ValueCallBack( 所有群成员均可以调用 `BlockGroup` 方法屏蔽群消息。屏蔽群消息后,该成员不再从指定群组接收群消息。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.BlockGroup(groupId, new CallBack( onSuccess: () => { @@ -257,7 +257,7 @@ SDKClient.Instance.GroupManager.BlockGroup(groupId, new CallBack( 群成员可以调用 `UnBlockGroup` 方法解除屏蔽群消息。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnBlockGroup(groupId, new CallBack( onSuccess: () => { @@ -274,7 +274,7 @@ SDKClient.Instance.GroupManager.UnBlockGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(currentGroupId, new ValueCallBack( onSuccess: (group) => { // 检查用户是否屏蔽了该群的消息 @@ -295,7 +295,7 @@ SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(currentGroupId, 示例代码如下: -```csharp +```C# // 实现监听器以及定义监听器对象 // 在本例中,用户 A 为当前用户。 public class GroupManagerDelegate : IGroupManagerDelegate { diff --git a/docs/document/unity/group_members.md b/docs/document/unity/group_members.md index 5b056cdf6..e22305cad 100644 --- a/docs/document/unity/group_members.md +++ b/docs/document/unity/group_members.md @@ -35,7 +35,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -52,7 +52,7 @@ SDKClient.Instance.GroupManager.AddGroupMembers(groupId, members, new CallBack( 示例代码如下: -```csharp +```C# List members = new List(); members.Add("member1"); members.Add("member2"); @@ -84,7 +84,7 @@ SDKClient.Instance.GroupManager.DeleteGroupMembers(groupId, members, callback: n 示例代码如下: -```csharp +```C# Dictionary dict = new Dictionary(); dict.Add("key", "value"); @@ -110,7 +110,7 @@ SDKClient.Instance.GroupManager.SetMemberAttributes(groupId, userId, dict, new C 示例代码如下: -```csharp +```C# List userList = new List(); userList.Add("user"); @@ -139,7 +139,7 @@ SDKClient.Instance.GroupManager.FetchMemberAttributes(groupId, userList, keyList 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupOwner(groupId, newOwner, new CallBack( onSuccess: () => { @@ -158,7 +158,7 @@ SDKClient.Instance.GroupManager.ChangeGroupOwner(groupId, newOwner, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupAdmin(groupId, adminId, new CallBack( onSuccess: () => { @@ -175,7 +175,7 @@ SDKClient.Instance.GroupManager.AddGroupAdmin(groupId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.RemoveGroupAdmin(groupId, adminId, new CallBack( onSuccess: () => { @@ -194,7 +194,7 @@ SDKClient.Instance.GroupManager.RemoveGroupAdmin(groupId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.BlockGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -211,7 +211,7 @@ SDKClient.Instance.GroupManager.BlockGroupMembers(groupId, members, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnBlockGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -228,7 +228,7 @@ SDKClient.Instance.GroupManager.UnBlockGroupMembers(groupId, members, new CallBa 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupBlockListFromServer(groupId, pageNum, pageSize, callback: new ValueCallBack>( onSuccess: (list) => { @@ -247,7 +247,7 @@ SDKClient.Instance.GroupManager.GetGroupBlockListFromServer(groupId, pageNum, pa 示例代码如下: -```csharp +```C# // muteMilliseconds:禁言时间。若传 -1,表示永久禁言。 SDKClient.Instance.GroupManager.MuteGroupMembers(groupId, members, new CallBack( onSuccess: () => @@ -265,7 +265,7 @@ SDKClient.Instance.GroupManager.MuteGroupMembers(groupId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnMuteGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -282,7 +282,7 @@ SDKClient.Instance.GroupManager.UnMuteGroupMembers(groupId, members, new CallBac 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupMuteListFromServer(groupId, callback: new ValueCallBack>( onSuccess: (dict) => { }, @@ -302,7 +302,7 @@ SDKClient.Instance.GroupManager.GetGroupMuteListFromServer(groupId, callback: ne 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.MuteGroupAllMembers(groupId, new CallBack( onSuccess: () => { }, @@ -316,7 +316,7 @@ SDKClient.Instance.GroupManager.MuteGroupAllMembers(groupId, new CallBack( 仅群主和群管理员可以调用 `UnMuteGroupAllMembers` 方法取消全员禁言,示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnMuteGroupAllMembers(groupId, new CallBack( onSuccess: () => { }, @@ -336,7 +336,7 @@ SDKClient.Instance.GroupManager.UnMuteGroupAllMembers(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupAllowList(groupId, members, new CallBack( onSuccess: () => { }, @@ -352,7 +352,7 @@ SDKClient.Instance.GroupManager.AddGroupAllowList(groupId, members, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.RemoveGroupAllowList(groupId, members, new CallBack( onSuccess: () => { }, @@ -366,7 +366,7 @@ SDKClient.Instance.GroupManager.RemoveGroupAllowList(groupId, members, new CallB 所有群成员可以调用 `CheckIfInGroupAllowList` 方法检查自己是否在群白名单中,示例代码如下: -```csharp +```C# public void CheckIfInGroupAllowList(final String groupId, EMValueCallBack callBack) SDKClient.Instance.GroupManager.CheckIfInGroupAllowList(groupId, new ValueCallBack( onSuccess: (ret) => { @@ -382,7 +382,7 @@ SDKClient.Instance.GroupManager.CheckIfInGroupAllowList(groupId, new ValueCallBa 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupAllowListFromServer(currentGroupId, callback: new ValueCallBack>( onSuccess: (list) => { }, diff --git a/docs/document/unity/initialization.md b/docs/document/unity/initialization.md index 5fd987866..f6221562c 100644 --- a/docs/document/unity/initialization.md +++ b/docs/document/unity/initialization.md @@ -16,7 +16,7 @@ 初始化示例代码: -```csharp +```C# var options = new Options("appkey"); //将该参数设置为你的 App Key //其他 Options 配置。 SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/unity/log.md b/docs/document/unity/log.md index 441c41415..76b1e7dfa 100644 --- a/docs/document/unity/log.md +++ b/docs/document/unity/log.md @@ -10,7 +10,7 @@ SDK 默认不输出调试信息(所有日志,包括调试信息、警告和错误),只需输出错误日志。若需调试信息,首先要开启调试模式。 -```csharp +```C# Options options = new Options("YourAppKey"); options.DebugMode = true; SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/unity/login.md b/docs/document/unity/login.md index 1204fb2d9..1fe1d1bda 100644 --- a/docs/document/unity/login.md +++ b/docs/document/unity/login.md @@ -10,7 +10,7 @@ 示例代码如下所示: -```csharp +```C# SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( @@ -37,7 +37,7 @@ SDKClient.Instance.CreateAccount(username, password, 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```csharp +```C# SDKClient.Instance.LoginWithToken(username, token, true, callback: new CallBack( @@ -63,7 +63,7 @@ SDKClient.Instance.LoginWithToken(username, token, true, 2. **用户 ID + 密码**登录是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合[密码规则要求](/document/server-side/account_system.html#开放注册单个用户)。 -```csharp +```C# SDKClient.Instance.Login(username, password, callback: new CallBack( @@ -106,7 +106,7 @@ SDKClient.Instance.Login(username, password, 异步方法: -```csharp +```C# SDKClient.Instance.Logout(false, callback: new CallBack( onSuccess: () => diff --git a/docs/document/unity/message_delete.md b/docs/document/unity/message_delete.md index 14ad6cd7d..bf36197ec 100644 --- a/docs/document/unity/message_delete.md +++ b/docs/document/unity/message_delete.md @@ -31,7 +31,7 @@ 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# bool clearServerData = false; // or true SDKClient.Instance.ChatManager.DeleteAllMessagesAndConversations(clearServerData, new CallBack( onSuccess: () => @@ -53,7 +53,7 @@ SDKClient.Instance.ChatManager.DeleteAllMessagesAndConversations(clearServerData 若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本。 ::: -```csharp +```C# // 按时间删除历史消息 SDKClient.Instance.ChatManager.RemoveMessagesFromServer(convId, ctype, time, new CallBack( onSuccess: () => @@ -78,7 +78,7 @@ SDKClient.Instance.ChatManager.RemoveMessagesFromServer(convId, ctype, msgList, 你可以删除本地指定会话的所有消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteAllMessages()){ @@ -93,7 +93,7 @@ else{ 你可以删除本地指定会话在一段时间内的本地消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteMessages(startTime, endTime)) { @@ -108,7 +108,7 @@ else { 你可以删除本地单个会话的指定消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteMessage(msgid)){ diff --git a/docs/document/unity/message_deliver_only_online.md b/docs/document/unity/message_deliver_only_online.md index f613d7e6e..ee127cc39 100644 --- a/docs/document/unity/message_deliver_only_online.md +++ b/docs/document/unity/message_deliver_only_online.md @@ -27,7 +27,7 @@ 下面以发送文本消息为例进行说明: -```csharp +```C# // 创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊时为对端用户 ID、群聊时为群组 ID。 Message message = Message.CreateTextSendMessage(conversationId, content); diff --git a/docs/document/unity/message_forward.md b/docs/document/unity/message_forward.md index 1492bc851..7eb8c519f 100644 --- a/docs/document/unity/message_forward.md +++ b/docs/document/unity/message_forward.md @@ -30,7 +30,7 @@ 该功能也支持转发单条合并消息。 ::: -```csharp +```C# // messageId 为要转发的消息 ID。 //string messageId = "xxx"; diff --git a/docs/document/unity/message_import_insert.md b/docs/document/unity/message_import_insert.md index 2af695dfe..215f708bb 100644 --- a/docs/document/unity/message_import_insert.md +++ b/docs/document/unity/message_import_insert.md @@ -30,7 +30,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.ImportMessages(messages, new CallBack( onSuccess: () => { }, @@ -46,7 +46,7 @@ SDKClient.Instance.ChatManager.ImportMessages(messages, new CallBack( 消息会根据消息中的 Unix 时间戳插入本地数据库,SDK 会更新会话的 `latestMessage` 等属性。 -```csharp +```C# // 将消息插入到指定会话中。 Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.InsertMessage(message); diff --git a/docs/document/unity/message_modify.md b/docs/document/unity/message_modify.md index 52f005a74..b7b348eb7 100644 --- a/docs/document/unity/message_modify.md +++ b/docs/document/unity/message_modify.md @@ -36,7 +36,7 @@ 示例代码如下: -```csharp +```C# TextBody tb = new TextBody("new content"); SDKClient.Instance.ChatManager.ModifyMessage(msgId, tb, new ValueCallBack( onSuccess: (dmsg) => @@ -51,7 +51,7 @@ ``` 消息修改后,消息的接收方会收到 `IChatManagerDelegate#OnMessageContentChanged` 事件,该事件中会携带修改后的消息对象、最新一次修改消息的用户以及消息的最新修改时间。对于群聊会话,除了修改消息的用户,群组内的其他成员均会收到该事件。 -```csharp +```C# // 继承并实现 `IChatManagerDelegate`。 public class ChatManagerDelegate : IChatManagerDelegate { diff --git a/docs/document/unity/message_pin.md b/docs/document/unity/message_pin.md index e42629247..e995dfeb6 100644 --- a/docs/document/unity/message_pin.md +++ b/docs/document/unity/message_pin.md @@ -31,7 +31,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```csharp +```C# bool isPinned = true; SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( onSuccess: () => @@ -49,7 +49,7 @@ SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( 群组或聊天室中的所有成员均可取消置顶消息,不论该消息由哪个成员置顶。取消置顶消息后,`Message#PinnedInfo` 获取到的信息中 `PinnedBy` 为空,`PinnedAt` 为`0`,该会话的置顶消息列表中也不再包含该消息。 -```csharp +```C# bool isPinned = false; SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( onSuccess: () => @@ -70,7 +70,7 @@ SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( 2. 若消息置顶后,用户撤回了该消息,则该消息从服务端移除,所有用户在从服务器拉取置顶消息列表时无法拉取到该消息。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.GetPinnedMessagesFromServer(convId, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) @@ -90,7 +90,7 @@ SDKClient.Instance.ChatManager.GetPinnedMessagesFromServer(convId, new ValueCall - 若消息为置顶状态,该类返回消息置顶的时间以及操作者的用户 ID。 - 若消息为非置顶状态,则 `PinnedInfo` 中的 `PinnedBy` 为空,`PinnedAt` 为 `0`。 -```csharp +```C# PinnedInfo pinnedInfo = msg.PinnedInfo; string operatorId = pinnedInfo.PinnedBy; long pinTime = pinnedInfo.PinnedAt; @@ -105,7 +105,7 @@ if (operatorId.CompareTo("") != 0 && pinTime != 0) ## 监听消息置顶事件 -```csharp +```C# public class ChatManagerDelegate : IChatManagerDelegate { // 实现 IChatManagerDelegate 中的其它功能 diff --git a/docs/document/unity/message_recall.md b/docs/document/unity/message_recall.md index 46362d25d..b326f3ad5 100644 --- a/docs/document/unity/message_recall.md +++ b/docs/document/unity/message_recall.md @@ -36,7 +36,7 @@ 2. 附件类型消息,包括图片、音频和视频和文件消息,撤回消息后,消息附件也相应删除。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.RecallMessage("Message ID", "Please ignore the message", new CallBack( onSuccess: () => { Debug.Log("回撤成功"); @@ -57,6 +57,6 @@ SDKClient.Instance.ChatManager.RecallMessage("Message ID", "Please ignore the me - 若用户在线接收了消息,消息撤回时,该事件中的 `RecallMessageInfo` 中的 `RecallMessage` 为撤回的消息的内容,`RecallMessageId` 属性返回撤回的消息的 ID。 - 若消息发送和撤回时接收方离线,该事件中的 `RecallMessageInfo` 中的 `RecallMessage` 为空,`RecallMessageId` 属性返回撤回的消息的 ID。 -```csharp +```C# void OnMessagesRecalled(List recallMessagesInfo); ``` \ No newline at end of file diff --git a/docs/document/unity/message_receipt.md b/docs/document/unity/message_receipt.md index c9296c464..73db1d3f7 100644 --- a/docs/document/unity/message_receipt.md +++ b/docs/document/unity/message_receipt.md @@ -46,7 +46,7 @@ 1. 开启消息送达功能,即 SDK 初始化时将 `Options#RequireDeliveryAck` 设置为 `true`。 -```csharp +```C# // 设置是否需要接收方送达确认,默认 `false` 即不需要。 options.RequireDeliveryAck = true; ``` @@ -55,7 +55,7 @@ options.RequireDeliveryAck = true; 3. 发送方监听 `IChatManagerDelegate#OnMessagesDelivered` 事件,收到接收方的送达回执。你可以在收到该通知时,显示消息的送达状态。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -87,7 +87,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 参考如下步骤在单聊中实现消息已读回执。 1. App 开启已读回执功能,即 SDK 初始化时将 `Options#RequireAck` 设置为 `true`。 -```csharp +```C# // 设置是否需要接受方已读确认,默认为true options.RequireAck = true; ``` @@ -96,7 +96,7 @@ options.RequireAck = true; - 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```csharp +```C# SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallBack( onSuccess: () => { @@ -111,7 +111,7 @@ SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallB - 聊天页面打开时,若收到消息,发送单条消息已读回执。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -167,7 +167,7 @@ public void SendReadAck(Message message) 消息发送方可以通过 `IChatManagerDelegate#OnMessagesRead` 事件监听指定消息是否已读,示例代码如下: -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -206,7 +206,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 1. 开启已读回执功能,即 SDK 初始化时将 `Options#RequireAck` 设置为 `true`。 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```csharp +```C# // 设置是否需要接受方已读确认,默认为 `true`。 options.RequireAck = true; ``` @@ -215,14 +215,14 @@ options.RequireAck = true; 与单聊消息的 app 层级设置已读回执功能不同,群聊消息是在发送消息时设置指定消息是否需要已读回执。 -```csharp +```C# Message msg = Message.CreateTextSendMessage(to, content); msg.IsNeedGroupAck = true; ``` 3. 消息接收方发送群组消息的已读回执。 -```csharp +```C# public void sendAckMessage(EMMessage message) { if (message.HasReadAck) { @@ -256,7 +256,7 @@ public void sendAckMessage(EMMessage message) { 发送方接收到群组消息已读回执后,其发出消息的属性 `Message#GroupAckCount` 会有相应变化。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -280,7 +280,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 你可以调用 `ChatManager#FetchGroupReadAcks` 方法从服务器获取单条消息的已读回执的详情。 -```csharp +```C# //messageId 消息 ID。 //groupId 群组 ID。 //pageSize 每页获取群消息已读回执的条数。取值范围[1,50]。 diff --git a/docs/document/unity/message_retrieve.md b/docs/document/unity/message_retrieve.md index cea7fb2d6..f58821481 100644 --- a/docs/document/unity/message_retrieve.md +++ b/docs/document/unity/message_retrieve.md @@ -46,7 +46,7 @@ 3. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```csharp +```C# FetchServerMessagesOption option = new FetchServerMessagesOption(); // 消息搜索方向。`UP` 表示按消息时间戳递减的方向获取,即先获取最新消息;`DOWN` 表示按消息时间戳递增的方向获取,即先获取最老的消息。 option.Direction = MessageSearchDirection.UP; @@ -86,7 +86,7 @@ 为确保数据可靠,我们建议你多次调用该方法,且每次获取的消息数小于 50 条。获取到数据后,SDK 会自动将消息更新到本地数据库。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, type, startId, pageSize, new ValueCallBack>( // 获取历史消息成功。 // result 为 CursorResult 类型。 @@ -103,7 +103,7 @@ SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, ty 你可以从本地数据库中读取指定会话的消息,示例代码如下: -```csharp +```C# // 获取本地会话。 Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); // 该方法获取 `startMsgId` 之前的 `pagesize` 条消息。 @@ -121,7 +121,7 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack 你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 -```csharp +```C# // msgId:要获取消息的消息 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("msgId"); ``` @@ -132,7 +132,7 @@ Message msg = SDKClient.Instance.ChatManager.LoadMessage("msgId"); 每次最多可获取 400 条消息。若未获取到任何消息,SDK 返回空列表。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); // type:消息类型;count:每次获取的消息数量,取值范围为 [1,400];direction:消息搜索方向:(默认)`UP`:按消息时间戳的逆序搜索;`DOWN`:按消息时间戳的正序搜索。 conv.LoadMessagesWithMsgType(type: MessageBodyType.TXT, count: 50, direction: MessageSearchDirection.UP, new ValueCallBack>( @@ -153,7 +153,7 @@ conv.LoadMessagesWithMsgType(type: MessageBodyType.TXT, count: 50, direction: Me 每次最多可获取 400 条消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); // startTime:搜索的起始时间戳;endTime:搜索的结束时间戳;count:每次获取的消息数量,取值范围为 [1,400]。 conv.LoadMessagesWithTime(startTime: startTime, endTime: endTime, count: 50, new ValueCallBack>( diff --git a/docs/document/unity/message_search.md b/docs/document/unity/message_search.md index d230d7ffa..ff6ab73d5 100644 --- a/docs/document/unity/message_search.md +++ b/docs/document/unity/message_search.md @@ -25,7 +25,7 @@ 你可以调用 `LoadMessagesWithKeyword` 方法根据关键字搜索本地数据库中单个会话中指定用户发送的消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); conv.LoadMessagesWithKeyword( @@ -60,7 +60,7 @@ conv.LoadMessagesWithKeyword( 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.SearchMsgFromDB("keywords", -1, 10, "from", MessageSearchDirection.UP, MessageSearchScope.CONTENT, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) @@ -80,7 +80,7 @@ SDKClient.Instance.ChatManager.SearchMsgFromDB("keywords", -1, 10, "from", Messa 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# conv.LoadMessagesWithScope("keywords", MessageSearchScope.CONTENT, -1, 10, "from", MessageSearchDirection.UP, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) diff --git a/docs/document/unity/message_send_receive.md b/docs/document/unity/message_send_receive.md index fa8726370..84be054ea 100644 --- a/docs/document/unity/message_send_receive.md +++ b/docs/document/unity/message_send_receive.md @@ -53,7 +53,7 @@ 示例代码: -```csharp +```C# //创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊为对端用户的 ID,群聊为群组 ID,聊天室时为聊天室 ID。 Message msg = Message.CreateTextSendMessage(conversationId, content); @@ -89,7 +89,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 对于聊天室消息,你可以通过消息的 `Message#Broadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -118,7 +118,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 参考如下示例代码创建并发送语音消息: -```csharp +```C# // localPath 为语音文件的本地资源路径,`displayName` 为消息显示名称,语音消息可以设置为空 ""。 // fileSize 为语音文件大小,duration 为语音时长(秒)。 Message msg = Message.CreateVoiceSendMessage(toChatUsername, localPath, displayName, fileSize, duration); @@ -145,7 +145,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 接收方收到语音消息后,参考如下示例代码获取语音消息的附件: -```csharp +```C# // 注意:这里的 "Message ID" 是消息发送成功以后(CallBack 中的 onSuccess 被触发以后),被发送消息的 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("Message ID"); if (msg != null) @@ -169,7 +169,7 @@ else { 参考如下示例代码,创建并发送图片消息: -```csharp +```C# //`localPath` 为图片本地资源路径。 //`displayName` 为图片显示名称。 //`fileSize` 为用户上传的图片文件大小,单位为字节。 @@ -198,7 +198,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 接收方收到图片消息后,参考如下示例代码获取图片消息的缩略图和附件: -```csharp +```C# //注意:这里的 "Message ID" 是消息发送成功以后(`CallBack` 中的 `onSuccess` 被触发以后),被发送消息的 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("Message ID"); if (msg != null) @@ -233,7 +233,7 @@ else { 参考如下示例代码,创建并发送短视频消息: -```csharp +```C# Message msg = Message.CreateVideoSendMessage(toChatUsername, localPath, displayName, thumbnailLocalPath, fileSize, duration, width, height); //发送消息。 @@ -259,7 +259,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 短视频文件本身需要通过 `SDKClient.Instance.ChatManager.DownloadAttachment` 下载,下载完成后,使用相应消息 `Body` 的 `LocalPath` 成员获取短视频文件路径。 -```csharp +```C# // 接收到视频消息需先下载附件才能打开。 SDKClient.Instance.ChatManager.DownloadAttachment("Message ID", new CallBack( onSuccess: () => { @@ -293,7 +293,7 @@ SDKClient.Instance.ChatManager.DownloadAttachment("Message ID", new CallBack( 参考如下示例代码创建并发送文件消息: -```csharp +```C# // localPath 为文件本地路径,displayName 为消息显示名称,fileSize 为文件大小。 Message msg = Message.CreateFileSendMessage(toChatUsername,localPath, displayName, fileSize); @@ -339,7 +339,7 @@ else { 当你需要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```csharp +```C# //`latitude` 为纬度,`longitude` 为经度,`locationAddress` 为具体位置内容,`buildingName` 为建筑名称。 Message msg = Message.CreateLocationSendMessage(toChatUsername, latitude, longitude, locationAddress, buildingName); @@ -361,7 +361,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 透传消息发送后,不支持撤回。 ::: -```csharp +```C# //`action` 可以自定义。 string action = "actionXXX"; Message msg = Message.CreateCmdSendMessage(toChatUsername, action); @@ -377,7 +377,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 请注意透传消息的接收方,也是由单独的回调进行通知,方便用户进行不同的处理。 -```csharp +```C# // 继承并实现 `IChatManagerDelegate`。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -421,7 +421,7 @@ SDKClient.Instance.ChatManager.AddChatManagerDelegate(adelegate); 以下示例代码展示如何发送输入状态的透传消息。 -```csharp +```C# //发送表示正在输入的透传消息 string msgTypingBegin = "TypingBegin"; @@ -447,7 +447,7 @@ void _sendBeginTyping() { 以下示例代码展示如何接受和解析输入状态的透传消息。 -```csharp +```C# int typingTime = 10; void OnCmdMessagesReceived(List list) { @@ -472,7 +472,7 @@ void OnCmdMessagesReceived(List list) { 除了几种消息之外,你可以自己定义消息类型,方便业务处理,即首先设置一个消息类型名称,然后可添加多种自定义消息。 -```csharp +```C# //`event` 为字符串类型的自定义事件,比如礼物消息,可以设置: string event = "gift"; @@ -520,7 +520,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 示例代码如下: -```csharp +```C# String title = "A和B的聊天记录"; String summary = "A:这是A的消息内容\nB:这是B的消息内容"; String compatibleText = "您当前的版本不支持该消息,请升级到最新版本"; @@ -549,7 +549,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( - 若附件已存在,该方法会直接解析附件并返回原始消息列表。 - 若附件不存在,该方法首先下载附件,然后解析附件并返回原始消息列表。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchCombineMessageDetail(msg, new ValueCallBack>( onSuccess: (list) => { // 处理并展示消息列表 @@ -581,7 +581,7 @@ SDKClient.Instance.ChatManager.FetchCombineMessageDetail(msg, new ValueCallBack< 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```csharp +```C# // 创建一条文本消息。 Message msg = Message.CreateTextSendMessage(groupId, content); // 会话类型:群组和聊天室聊天,分别为 `Group` 和 `Room`。 @@ -612,7 +612,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 当目前消息类型不满足用户需求时,可以在扩展部分保存更多信息,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```csharp +```C# Message msg = Message.CreateTextSendMessage(toChatUsername, content); // 增加自定义属性。 diff --git a/docs/document/unity/message_translation.md b/docs/document/unity/message_translation.md index 1fb8badea..f8934d8ed 100644 --- a/docs/document/unity/message_translation.md +++ b/docs/document/unity/message_translation.md @@ -30,7 +30,7 @@ SDK 支持你通过调用 API 在项目中实现如下功能: 无论是按需翻译还是自动翻译,都需先调用 `FetchSupportLanguages` 获取支持的翻译语言。示例代码如下: -```csharp +```C# // 获取翻译服务支持的语言。 SDKClient.Instance.ChatManager.FetchSupportLanguages(new ValueCallBack>( onSuccess: (list) => @@ -52,7 +52,7 @@ SDKClient.Instance.ChatManager.FetchSupportLanguages(new ValueCallBack( onSuccess: (dmsg) => { @@ -75,7 +75,7 @@ SDKClient.Instance.ChatManager.TranslateMessage(msg, targetLanguages, new ValueC 创建消息时,发送方设置 `TextBody` 中的 `TargetLanguages` 字段为译文语言,设置过程如下: -```csharp +```C# Message msg = Message.CreateTextSendMessage(to, text); TextBody tb = (TextBody)msg.Body; tb.TargetLanguages = languageList; @@ -85,7 +85,7 @@ tb.TargetLanguages = languageList; 接收方收到消息后,接收方从 `TextBody` 中获取消息的译文列表,示例代码如下: -```csharp +```C# TextBody tb = (TextBody)msg.Body; foreach(var it in tb.Translations) { diff --git a/docs/document/unity/message_update.md b/docs/document/unity/message_update.md index fc8fc112b..3726c4d4b 100644 --- a/docs/document/unity/message_update.md +++ b/docs/document/unity/message_update.md @@ -25,13 +25,13 @@ - 直接调用 `UpdateMessage` 方法更新 SDK 本地数据库中的消息。 -```csharp +```C# SDKClient.Instance.ChatManager.UpdateMessage(message): ``` - 若正在使用 `Conversation` 类,可以先获取会话,再调用 `UpdateMessage` 方法更新 SDK 本地数据库会话中的消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, type); conv.UpdateMessage(message); ``` diff --git a/docs/document/unity/moderation.md b/docs/document/unity/moderation.md index 73f3c2fe8..a04aefd57 100644 --- a/docs/document/unity/moderation.md +++ b/docs/document/unity/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```csharp +```C# // msgId:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 // reason:举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/unity/multi_device.md b/docs/document/unity/multi_device.md index 8009457bb..e3a320bfa 100644 --- a/docs/document/unity/multi_device.md +++ b/docs/document/unity/multi_device.md @@ -61,7 +61,7 @@ 你可以调用 `GetSelfIdsOnOtherPlatform` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```csharp +```C# SDKClient.Instance.ContactManager.GetSelfIdsOnOtherPlatform(new ValueCallBack>( onSuccess: (list) => { @@ -94,7 +94,7 @@ SDKClient.Instance.ContactManager.GetSelfIdsOnOtherPlatform(new ValueCallBack
  • >( @@ -141,7 +141,7 @@ SDKClient.Instance.GetLoggedInDevicesFromServerWithToken(username, token, 登录成功后才会将该设置发送到服务器。 ::: -```csharp +```C# // 设置设备名称并进行初始化 Options options = new Options("YouAppKey"); ooptions.CustomDeviceName = "MyDeviceName"; @@ -182,7 +182,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 登录成功后才会将该设置发送到服务器。 ::: -```csharp +```C# Options options = new Options("YouAppKey"); ooptions.CustomOSType = 1; SDKClient.Instance.InitWithOptions(options); @@ -197,7 +197,7 @@ SDKClient.Instance.InitWithOptions(options); 不登录也可以使用该接口。 ::: -```csharp +```C# // username:账户名称,password:账户密码。 SDKClient.Instance.GetLoggedInDevicesFromServer(username, password, callback: new ValueCallBack>( @@ -256,7 +256,7 @@ SDKClient.Instance.KickDeviceWithToken(username, token, resource, 不登录也可以使用该接口。 ::: -```csharp +```C# SDKClient.Instance.KickAllDevices(username, password, callback: new CallBack( @@ -298,7 +298,7 @@ SDKClient.Instance.KickAllDevicesWithToken(username, token, 多端多设备场景下,无聊天室操作相关事件,只支持聊天室中发送和接收消息的同步。 ::: -```csharp +```C# //继承并实现 IMultiDeviceDelegate。 public class MultiDeviceDelegate : IMultiDeviceDelegate { public void onContactMultiDevicesEvent(MultiDevicesOperation operation, string target, string ext) { diff --git a/docs/document/unity/overview.md b/docs/document/unity/overview.md index c8408cc35..d37e3a9f2 100644 --- a/docs/document/unity/overview.md +++ b/docs/document/unity/overview.md @@ -20,7 +20,7 @@ 初始化示例代码: -```csharp +```C# Options options = new Options(appkey); options.AutoLogin = false; options.UsingHttpsOnly = true; @@ -63,7 +63,7 @@ SDKClient.Instance.InitWithOptions(options); 若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。 -```csharp +```C# SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( @@ -97,7 +97,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录: 1. **用户 ID + 密码** 登录是传统的登录方式。 -```csharp +```C# SDKClient.Instance.Login(username, password, callback: new CallBack( @@ -127,7 +127,7 @@ SDKClient.Instance.Login(username, password, 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 ::: -```csharp +```C# SDKClient.Instance.Login(username, token, true, callback: new CallBack( @@ -160,7 +160,7 @@ SDKClient.Instance.Login(username, token, true, 登出也是异步返回。 -```csharp +```C# SDKClient.Instance.Logout(false, callback: new CallBack( onSuccess: () => @@ -180,7 +180,7 @@ SDKClient.Instance.Logout(false, 你需添加 `IConnectionDelegate#OnConnected` 回调。 -```csharp +```C# // 监听器建议在初始化完成之后,登录之前设置,这样可确保收到登录通知。 class ConnectionDelegate : IConnectionDelegate { @@ -255,7 +255,7 @@ SDKClient.Instance.DeleteConnectionDelegate(connectionDelegate); SDK 默认不输出调试信息(所有日志,包括调试信息、警告和错误),只需输出错误日志。若需调试信息,首先要开启调试模式。 -```csharp +```C# Options options = new Options("YourAppKey"); options.DebugMode = true; SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/unity/presence.md b/docs/document/unity/presence.md index bff6ceb45..7e098694a 100644 --- a/docs/document/unity/presence.md +++ b/docs/document/unity/presence.md @@ -50,7 +50,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `PresenceManager#SubscribePresences` 方法订阅指定用户的在线状态,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.SubscribePresences(members, expiry, new ValueCallBack>( onSuccess: (list) => { @@ -84,7 +84,7 @@ SDKClient.Instance.PresenceManager.SubscribePresences(members, expiry, new Value 示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.PublishPresence(ext, new CallBack( onSuccess: () => { Debug.Log($"PublishPresence success."); @@ -99,14 +99,14 @@ SDKClient.Instance.PresenceManager.PublishPresence(ext, new CallBack( 添加用户在线状态的监听器,示例代码如下: -```csharp +```C# PresenceManagerDelegate presenceManagerDelegate = new PresenceManagerDelegate(); SDKClient.Instance.PresenceManager.AddPresenceManagerDelegate(presenceManagerDelegate); ``` 参考如下示例代码,使用 `IPresenceManagerDelegate` 监听器实现以下接口。当订阅的用户在线状态发生变化时,会收到`OnPresenceUpdated` 回调。 -```csharp +```C# public interface IPresenceManagerDelegate { void OnPresenceUpdated(List presences); @@ -117,7 +117,7 @@ public interface IPresenceManagerDelegate 若取消指定用户的在线状态订阅,可调用 `PresenceManager#UnsubscribePresences` 方法,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.UnsubscribePresences(mem_list, new CallBack( onSuccess: () => { Debug.Log($"UnsubscribePresences success."); @@ -132,7 +132,7 @@ SDKClient.Instance.PresenceManager.UnsubscribePresences(mem_list, new CallBack( 为方便用户管理订阅关系,SDK 提供 `PresenceManager#FetchSubscribedMembers` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.FetchSubscribedMembers(pageNum, pageSize, new ValueCallBack>( onSuccess: (list) => { @@ -149,7 +149,7 @@ SDKClient.Instance.PresenceManager.FetchSubscribedMembers(pageNum, pageSize, new 如果不关注用户的在线状态变更,你可以调用 `PresenceManager#FetchPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```csharp +```C# // members:要查询状态的用户 ID,每次最多可传 100 个用户 ID。 SDKClient.Instance.PresenceManager.FetchPresenceStatus(members, new ValueCallBack>( onSuccess: (list) => diff --git a/docs/document/unity/quickstart.md b/docs/document/unity/quickstart.md index 423eb80a8..5a562c562 100644 --- a/docs/document/unity/quickstart.md +++ b/docs/document/unity/quickstart.md @@ -89,7 +89,7 @@ 在 **TestCode.cs** 头部添加以下命名空间: -```csharp +```C# using AgoraChat; using AgoraChat.MessageBody; ``` @@ -98,7 +98,7 @@ using AgoraChat.MessageBody; 在 `InitSDK` 方法中添加以下代码完成 SDK 初始化: -```csharp +```C# var options = new Options("appkey"); //将该参数设置为你的 App Key SDKClient.Instance.InitWithOptions(options); ``` @@ -107,7 +107,7 @@ SDKClient.Instance.InitWithOptions(options); 在 `SignUpAction` 方法尾部添加以下代码,创建即时通讯系统的登录账户,示例代码如下: -```csharp +```C# SDKClient.Instance.CreateAccount(username: Username.text, Password.text, callback: new CallBack( onSuccess: () => { AddLogToLogText("sign up sdk succeed"); @@ -126,7 +126,7 @@ SDKClient.Instance.CreateAccount(username: Username.text, Password.text, callbac 在 `SignInAction` 方法尾部添加以下代码,使用账号登录即时通讯系统,示例代码如下: -```csharp +```C# SDKClient.Instance.Login(username: Username.text, pwdOrToken: Password.text, callback: new CallBack( onSuccess: () => { AddLogToLogText("sign in sdk succeed"); @@ -155,7 +155,7 @@ SDKClient.Instance.LoginWithToken(username: Username.text, pwdOrToken: Password. 在 `SignOutAction` 方法尾部添加以下代码,登出即时通讯系统,示例代码如下: -```csharp +```C# SDKClient.Instance.Logout(true, callback: new CallBack( onSuccess: () => { AddLogToLogText("sign out sdk succeed"); @@ -170,7 +170,7 @@ SDKClient.Instance.Logout(true, callback: new CallBack( 在 `SendMessageAction` 方法尾部添加以下代码,创建和发送一条文本消息,示例代码如下: -```csharp +```C# Message msg = Message.CreateTextSendMessage(SignChatId.text, MessageContent.text); SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( onSuccess: () => { @@ -190,7 +190,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 在类声明的头部继承 `IChatManagerDelegate` 对象。 -```csharp +```C# public class TestCode : MonoBehaviour, IChatManagerDelegate ``` @@ -199,7 +199,7 @@ public class TestCode : MonoBehaviour, IChatManagerDelegate 由于这里只测试消息接收回调,所以其他回调暂时无需实现,保留空函数即可。 -```csharp +```C# public void OnMessagesReceived(List messages) { foreach (Message msg in messages) { @@ -290,13 +290,13 @@ public void OnMessagePinChanged(string messageId, string conversationId, bool is 在 `AddChatDelegate` 方法中添加以下代码,将 `TestCode` 对象实例加入监听列表。 -```csharp +```C# SDKClient.Instance.ChatManager.AddChatManagerDelegate(this); ``` 在 `RemoveChatDelegate` 方法中添加以下代码,在对象释放时将其在监听列表中移除。 -```csharp +```C# SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(this); ``` diff --git a/docs/document/unity/reaction.md b/docs/document/unity/reaction.md index 23e413423..892a441fc 100644 --- a/docs/document/unity/reaction.md +++ b/docs/document/unity/reaction.md @@ -44,7 +44,7 @@ Reaction 场景示例如下: 示例代码如下: -```csharp +```C# // 添加 Reaction。 SDKClient.Instance.ChatManager.AddReaction(msg_id, reaction, new CallBack( onSuccess: () => @@ -81,7 +81,7 @@ SDKClient.Instance.ChatManager.AddReactionManagerDelegate(reactionManagerDelegat 示例代码如下: -```csharp +```C# // 删除 Reaction。 SDKClient.Instance.ChatManager.RemoveReaction(msg_id, reaction, new CallBack( onSuccess: () => @@ -116,7 +116,7 @@ SDKClient.Instance.ChatManager.AddReactionManagerDelegate(reactionManagerDelegat 调用 `GetReactionList` 可以从服务器获取指定消息的 Reaction 概览列表,列表内容包含 Reaction 内容、添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetReactionList(messageIdList, chatType, groupId, new ValueCallBack>>( onSuccess: (dict) => { @@ -142,7 +142,7 @@ onError: (code, desc) => 调用 `GetReactionDetail` 可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容、添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetReactionDetail(msg_id, reaction, cursor, pageSize, new ValueCallBack>( onSuccess: (ret) => { diff --git a/docs/document/unity/room_attributes.md b/docs/document/unity/room_attributes.md index 14233e28f..ffb32af7b 100644 --- a/docs/document/unity/room_attributes.md +++ b/docs/document/unity/room_attributes.md @@ -35,7 +35,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomAnnouncement(roomId, new ValueCallBack( onSuccess: (announcement) => { }, @@ -50,7 +50,7 @@ SDKClient.Instance.RoomManager.FetchRoomAnnouncement(roomId, new ValueCallBack { }, @@ -65,7 +65,7 @@ SDKClient.Instance.RoomManager.UpdateRoomAnnouncement(roomId, announcement, new 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.ChangeRoomName(roomId, name, new CallBack( onSuccess: () => { }, @@ -80,7 +80,7 @@ SDKClient.Instance.RoomManager.ChangeRoomName(roomId, name, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.ChangeRoomDescription(roomId, newDesc, new CallBack( onSuccess: () => { }, @@ -97,7 +97,7 @@ SDKClient.Instance.RoomManager.ChangeRoomDescription(roomId, newDesc, new CallBa 示例代码如下: -```csharp +```C# /** * 异步方法。 * @@ -120,7 +120,7 @@ SDKClient.Instance.RoomManager.FetchAttributes(roomId, keys, new ValueCallBack( 示例代码如下: -```csharp +```C# // 获取公开聊天室列表,每次最多可获取 1,000 个。 SDKClient.Instance.RoomManager.FetchPublicRoomsFromServer(callback: new ValueCallBack>( //result 为 PageResult 类型 @@ -96,7 +96,7 @@ SDKClient.Instance.RoomManager.JoinRoom(roomId, new ValueCallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomInfoFromServer(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -111,7 +111,7 @@ SDKClient.Instance.RoomManager.FetchRoomInfoFromServer(roomId, new ValueCallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.DestroyRoom(roomId, new CallBack( onSuccess: () => { }, @@ -126,7 +126,7 @@ SDKClient.Instance.RoomManager.DestroyRoom(roomId, new CallBack( 示例代码如下: -```csharp +```C# // 实现监听器以及定义监听器对象 public class RoomManagerDelegate : IRoomManagerDelegate { ...... @@ -145,7 +145,7 @@ SDKClient.Instance.RoomManager.AddRoomManagerDelegate(adelegate); 具体可以添加的回调事件如下: -```csharp +```C# public interface IRoomManagerDelegate { // 解散聊天室。聊天室所有成员会收到该事件。 @@ -191,7 +191,7 @@ public interface IRoomManagerDelegate 2. 收到通知事件后,调用 `RoomManager#GetChatRoom` 方法获取本地聊天室详情,再通过`RoomManager#MemberCount` 获取聊天室当前人数。 -```csharp +```C# class RoomManagerDelegate : IRoomManagerDelegate { public void OnMemberJoinedFromRoom(string roomId, string participant) diff --git a/docs/document/unity/room_members.md b/docs/document/unity/room_members.md index 0ae1be57e..5b902943d 100644 --- a/docs/document/unity/room_members.md +++ b/docs/document/unity/room_members.md @@ -34,7 +34,7 @@ 示例代码如下: -```csharp +```C# //cursor:从该游标位置开始取数据。首次调用 cursor 传空值,从最新数据开始获取。 //pageSize:每页期望返回的成员数,最大值为 1,000。 SDKClient.Instance.RoomManager.FetchRoomMembers(roomId, cursor, pageSize, callback: new ValueCallBack>( @@ -54,7 +54,7 @@ SDKClient.Instance.RoomManager.FetchRoomMembers(roomId, cursor, pageSize, callba 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.LeaveRoom(roomId, new CallBack( onSuccess: () => { }, @@ -67,7 +67,7 @@ SDKClient.Instance.RoomManager.LeaveRoom(roomId, new CallBack( 示例代码如下: -```csharp +```C# Options options = new Options(); options. DeleteMessagesAsExitRoom = false; ``` @@ -85,7 +85,7 @@ options. DeleteMessagesAsExitRoom = false; 示例代码如下: -```csharp +```C# List members = new List(); members.Add("member1"); members.Add("member2"); @@ -117,7 +117,7 @@ SDKClient.Instance.RoomManager.DeleteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.BlockRoomMembers(roomId, members, new CallBack( onSuccess: () => { @@ -134,7 +134,7 @@ SDKClient.Instance.RoomManager.BlockRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.UnBlockRoomMembers(roomId, members, new CallBack( onSuccess: () => { }, @@ -149,7 +149,7 @@ SDKClient.Instance.RoomManager.UnBlockRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomBlockList(roomId, pageNum, pageSize, callback: new ValueCallBack>( // list 类型为 List。 onSuccess: (list) => { @@ -171,7 +171,7 @@ SDKClient.Instance.RoomManager.FetchRoomBlockList(roomId, pageNum, pageSize, cal 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchAllowListFromServer(roomId, new ValueCallBack>( onSuccess: (list) => { //list是返回的白名单列表 @@ -185,7 +185,7 @@ SDKClient.Instance.RoomManager.FetchAllowListFromServer(roomId, new ValueCallBac 所有聊天室成员可以调用 `CheckIfInRoomAllowList` 方法检查自己是否在白名单中,示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.CheckIfInRoomAllowList(roomId, new ValueCallBack( onSuccess: (b) => { //b是返回的布尔类型 @@ -201,7 +201,7 @@ SDKClient.Instance.RoomManager.CheckIfInRoomAllowList(roomId, new ValueCallBack< 示例代码如下: -```csharp +```C# //list是添加的白名单列表 SDKClient.Instance.RoomManager.AddAllowListMembers(roomId, list, new CallBack( onSuccess: () => { @@ -217,7 +217,7 @@ SDKClient.Instance.RoomManager.AddAllowListMembers(roomId, list, new CallBack( 示例代码如下: -```csharp +```C# //list是移除的白名单列表 SDKClient.Instance.RoomManager.RemoveAllowListMembers(roomId, list, new CallBack( onSuccess: () => { @@ -239,7 +239,7 @@ SDKClient.Instance.RoomManager.RemoveAllowListMembers(roomId, list, new CallBack 示例代码如下: -```csharp +```C# // muteMilliseconds:禁言时间。若传 -1,表示永久禁言。 SDKClient.Instance.RoomManager.MuteRoomMembers(roomId, members, new CallBack( onSuccess: () => { @@ -259,7 +259,7 @@ SDKClient.Instance.RoomManager.MuteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.UnMuteRoomMembers(roomId, members, new CallBack( onSuccess: () => { }, @@ -274,7 +274,7 @@ SDKClient.Instance.RoomManager.UnMuteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomMuteList(roomId, pageSize, pageNum, callback: new ValueCallBack>( onSuccess: (dict) => { }, @@ -295,7 +295,7 @@ SDKClient.Instance.RoomManager.FetchRoomMuteList(roomId, pageSize, pageNum, call 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.MuteAllRoomMembers(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -310,7 +310,7 @@ SDKClient.Instance.RoomManager.MuteAllRoomMembers(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -327,7 +327,7 @@ SDKClient.Instance.RoomManager.UnMuteAllRoomMembers(roomId, new ValueCallBack { }, @@ -342,7 +342,7 @@ SDKClient.Instance.RoomManager.ChangeRoomOwner(roomId, newOwner, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.AddRoomAdmin(roomId, adminId, new CallBack( onSuccess: () => { }, @@ -357,7 +357,7 @@ SDKClient.Instance.RoomManager.AddRoomAdmin(roomId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.RemoveRoomAdmin(roomId, adminId, new CallBack( onSuccess: () => { }, diff --git a/docs/document/unity/thread.md b/docs/document/unity/thread.md index 7560d8c60..27c065934 100644 --- a/docs/document/unity/thread.md +++ b/docs/document/unity/thread.md @@ -41,7 +41,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.CreateThread(threadName, msgId, groupid, new ValueCallBack( onSuccess: (thread) => { @@ -70,7 +70,7 @@ SDKClient.Instance.ThreadManager.CreateThread(threadName, msgId, groupid, new Va 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.DestroyThread(tid, new CallBack( onSuccess: () => { @@ -96,7 +96,7 @@ SDKClient.Instance.ThreadManager.DestroyThread(tid, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.JoinThread(tid, new ValueCallBack( onSuccess: (thread) => { @@ -121,7 +121,7 @@ SDKClient.Instance.ThreadManager.JoinThread(tid, new ValueCallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.LeaveThread(tid, new CallBack( onSuccess: () => { @@ -142,7 +142,7 @@ SDKClient.Instance.ThreadManager.LeaveThread(tid, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.RemoveThreadMember(tid, uname, new CallBack( onSuccess: () => { @@ -163,7 +163,7 @@ SDKClient.Instance.ThreadManager.RemoveThreadMember(tid, uname, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.ChangeThreadSubject(tid, subject, new CallBack( onSuccess: () => { @@ -182,7 +182,7 @@ SDKClient.Instance.ThreadManager.ChangeThreadSubject(tid, subject, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.GetThreadDetail(tid, new ValueCallBack( onSuccess: (thread) => { @@ -203,7 +203,7 @@ SDKClient.Instance.ThreadManager.GetThreadDetail(tid, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -224,7 +224,7 @@ SDKClient.Instance.ThreadManager.FetchThreadMembers(tid, cursor, page_size, new 1. 用户可以调用 `FetchMineJoinedThreadList` 方法从服务器分页获取自己加入和创建的子区列表: -```csharp +```C# SDKClient.Instance.ThreadManager.FetchMineJoinedThreadList(cursor, page_size, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -243,7 +243,7 @@ SDKClient.Instance.ThreadManager.FetchThreadMembers(tid, cursor, page_size, new 2. 用户还可以调用 `FetchThreadListOfGroup` 方法从服务器分页获取指定群组的子区列表: -```csharp +```C# SDKClient.Instance.ThreadManager.FetchThreadListOfGroup(tid, joined, cursor, page_size, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -266,7 +266,7 @@ SDKClient.Instance.ThreadManager.FetchThreadListOfGroup(tid, joined, cursor, pag 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.GetLastMessageAccordingThreads(threadIds, new ValueCallBack>( onSuccess: (dict) => { @@ -289,7 +289,7 @@ SDKClient.Instance.ThreadManager.GetLastMessageAccordingThreads(threadIds, new V 示例代码如下: -```csharp +```C# class ThreadManagerDelegate : IChatThreadManagerDelegate { diff --git a/docs/document/unity/thread_message.md b/docs/document/unity/thread_message.md index 0cd80e2c8..06165c620 100644 --- a/docs/document/unity/thread_message.md +++ b/docs/document/unity/thread_message.md @@ -44,7 +44,7 @@ 示例代码如下: -```csharp +```C# // 创建一条文本消息,`content` 为消息文字内容,`chatThreadId` 为子区 ID。 Message msg = Message.CreateTextSendMessage(chatThreadId, content); // 设置消息类型,子区消息需要将 `ChatType` 设置为 `GroupChat`。 @@ -73,7 +73,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 示例代码如下: -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -100,7 +100,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 示例代码如下: -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -129,7 +129,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 调用 `FetchHistoryMessagesFromServer` 方法从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(threadId, ConversationType.Group, startMsgId, pageSize, MessageSearchDirection.DOWN, new ValueCallBack>( onSuccess: (result) => { @@ -148,7 +148,7 @@ SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(threadId, Conversa 调用 `EMChatManager#getAllConversations()` 会返回单聊和群聊的会话,不会返回子区会话,你可以通过调用以下方法从本地数据库中读取指定子区会话的消息: -```csharp +```C# // 需要指定会话类型为 `ConversationType.Group`,且 `isChatThread` 设置为 `true` Conversation conversation = SDKClient.Instance.ChatManager.GetConversation(chatThreadId, EMConversationType.GroupChat, createIfNotExists, isChatThread); // 如需处理本地数据库中消息,用以下方法到数据库中获取,SDK 会将这些消息自动存入此会话。 diff --git a/docs/document/unity/user_relationship.md b/docs/document/unity/user_relationship.md index 1d7053614..20a31f124 100644 --- a/docs/document/unity/user_relationship.md +++ b/docs/document/unity/user_relationship.md @@ -41,7 +41,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 调用 `AddContact` 添加指定用户为好友,示例代码如下: -```csharp +```C# //username 为要添加的好友的用户名,reason 为添加原因 SDKClient.Instance.ContactManager.AddContact(username, reason, callback: new CallBack( onSuccess: () => @@ -59,7 +59,7 @@ SDKClient.Instance.ContactManager.AddContact(username, reason, callback: new Cal 请监听与好友请求相关事件的回调,这样当用户收到好友请求,可以调用接受请求的 RESTful API 添加好友。服务器不会重复下发与好友请求相关的事件,建议退出应用时保存相关的请求数据。设置监听示例代码如下: -```csharp +```C# //继承并实现 IContactManagerDelegate。 public class ContactManagerDelegate : IContactManagerDelegate { // 当前用户新增了联系人。用户 B 向用户 A 发送好友请求,用户 A 同意该请求,用户 A 收到该事件,而用户 B 收到 `onContactAgreed` 事件。 @@ -96,7 +96,7 @@ SDKClient.Instance.ContactManager.RemoveContactManagerDelegate(adelegate); 收到后 `OnContactInvited`,调用 `AcceptInvitation` 或 `DeclineInvitation` 接受或拒绝邀请。 -```csharp +```C# //同意好友请求。 SDKClient.Instance.ContactManager.AcceptInvitation(username, callback: new CallBack( onSuccess: () => @@ -126,7 +126,7 @@ SDKClient.Instance.ContactManager.DeclineInvitation(username, callback: new Call 删除好友后,对方会收到 `OnContactDeleted` 回调。 -```csharp +```C# SDKClient.Instance.ContactManager.DeleteContact(username, callback: new CallBack( onSuccess: () => { @@ -141,7 +141,7 @@ SDKClient.Instance.ContactManager.DeleteContact(username, callback: new CallBack 你可以调用 `GetAllContactsFromServer` 方法从服务器获取好友列表: -```csharp +```C# SDKClient.Instance.ContactManager.GetAllContactsFromServer(new ValueCallBack>( onSuccess: (list) => { @@ -158,7 +158,7 @@ SDKClient.Instance.ContactManager.GetAllContactsFromServer(new ValueCallBacklist = SDKClient.Instance.ContactManager.GetAllContactsFromDB(); ``` @@ -172,7 +172,7 @@ Listlist = SDKClient.Instance.ContactManager.GetAllContactsFromDB(); 用户可以将任何其他用户添加到黑名单列表,无论该用户是否是好友。好友被加入黑名单后仍在好友列表上显示。 -```csharp +```C# //将好友拉入黑名单后,用户依然可以向该好友发送消息,但无法接收该好友发送的消息。 SDKClient.Instance.ContactManager.AddUserToBlockList(username, callback: new CallBack( onSuccess: () => @@ -188,7 +188,7 @@ SDKClient.Instance.ContactManager.AddUserToBlockList(username, callback: new Cal 你可以调用 `RemoveUserFromBlockList` 将用户从黑名单移除,用户发送消息等行为将恢复。 -```csharp +```C# SDKClient.Instance.ContactManager.RemoveUserFromBlockList(username, callback: new CallBack( onSuccess: () => { @@ -203,7 +203,7 @@ SDKClient.Instance.ContactManager.RemoveUserFromBlockList(username, callback: ne 你可以调用 `GetBlockListFromServer` 从服务端获取黑名单列表。示例代码如下: -```csharp +```C# SDKClient.Instance.ContactManager.GetBlockListFromServer(new ValueCallBack>( onSuccess: (list) => { diff --git a/docs/document/unity/userprofile.md b/docs/document/unity/userprofile.md index 62086128f..bc2951016 100644 --- a/docs/document/unity/userprofile.md +++ b/docs/document/unity/userprofile.md @@ -36,7 +36,7 @@ 参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。 -```csharp +```C# //设置所有用户属性。 UserInfo userInfo; userInfo.UserId = currentId; @@ -75,7 +75,7 @@ SDKClient.Instance.UserInfoManager.UpdateOwnInfo(userInfo, new CallBack( 示例代码如下: -```csharp +```C# //获取一个或多个用户的所有属性,一次调用用户 ID 数量不超过 100。 List idList = new List(); idList.Add("username"); @@ -106,7 +106,7 @@ SDKClient.Instance.UserInfoManager.FetchUserInfoByUserId(idList, type, startId, 如果使用场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现: -```csharp +```C# // 设置自定义消息的 `event` 为 `"userCard"`,并在 `ext` 中添加展示名片所需要的用户 ID、昵称和头像等字段。 string event = "userCard"; Dictionary adict = new Dictionary(); diff --git a/docs/document/web/connection.md b/docs/document/web/connection.md index a9b2867f6..52eaeb8f8 100644 --- a/docs/document/web/connection.md +++ b/docs/document/web/connection.md @@ -6,7 +6,7 @@ ## 监听连接状态 -```javascript +```JavaScript conn.addEventHandler("connectionListener", { onConnected: () => { console.log("连接成功"); diff --git a/docs/document/web/conversation_delete.md b/docs/document/web/conversation_delete.md index efb94910f..e76be7d0f 100644 --- a/docs/document/web/conversation_delete.md +++ b/docs/document/web/conversation_delete.md @@ -23,7 +23,7 @@ 你可以调用 `deleteConversation` 方法删除服务器端会话及其对应的消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息,其他用户不受影响。 -```javascript +```JavaScript let options = { // 会话 ID:单聊为对方的用户 ID,群聊为群组 ID。 channel: "channel", diff --git a/docs/document/web/conversation_list.md b/docs/document/web/conversation_list.md index e8adff659..87acf8067 100644 --- a/docs/document/web/conversation_list.md +++ b/docs/document/web/conversation_list.md @@ -36,7 +36,7 @@ 示例代码如下: -```javascript +```JavaScript // pageSize: 每页期望获取的会话数量。取值范围为 [1,50],默认为 `20`。 // cursor:开始获取数据的游标位置。若传空字符串(''),SDK 从最新活跃的会话开始获取。 connection.getServerConversations({pageSize:50, cursor: ''}).then((res)=>{ diff --git a/docs/document/web/conversation_local.md b/docs/document/web/conversation_local.md index f43b4ff16..656e9416b 100644 --- a/docs/document/web/conversation_local.md +++ b/docs/document/web/conversation_local.md @@ -32,7 +32,7 @@ 会话对象的结构如下所示: -```typescript +```TypeScript interface ConversationItem { // 会话 ID。 conversationId: string; @@ -51,7 +51,7 @@ interface ConversationItem { 若支持本地会话存储,需要集成本地存储插件。**该插件只支持通过[按需导入 SDK](import_sdk_minicore.html)的方式集成**。示例代码如下: -```javascript +```JavaScript import MiniCore from "easemob-websdk/miniCore/miniCore"; import * as contactPlugin from "easemob-websdk/contact/contact"; import * as localCachePlugin from "easemob-websdk/localCache/localCache"; @@ -77,7 +77,7 @@ miniCore.open({ 示例代码如下: -```javascript +```JavaScript miniCore.localCache.getLocalConversations().then((res)=>{ // 获取本地会话列表成功。 @@ -89,7 +89,7 @@ miniCore.localCache.getLocalConversations().then((res)=>{ 你可以调用 `getLocalConversation` 方法获取单个本地会话对象,示例代码如下: -```javascript +```JavaScript const options = { // 会话类型:单聊和群聊分别为 `singleChat` 和 `groupChat`。 conversationType: 'singleChat', @@ -109,7 +109,7 @@ miniCore.localCache.getLocalConversation(options).then((res)=>{ 示例代码如下: -```javascript +```JavaScript const options = { // 会话类型:单聊和群聊分别为 `singleChat` 和 `groupChat`。 @@ -129,7 +129,7 @@ miniCore.localCache.setLocalConversationCustomField(options).then(()=>{ 你可以调用 `clearConversationUnreadCount` 方法对单个本地会话的未读消息数清零。示例代码如下: -```javascript +```JavaScript const options = { // 会话类型:单聊和群聊分别为 `singleChat` 和 `groupChat`。 @@ -149,7 +149,7 @@ miniCore.localCache.clearConversationUnreadCount(options).then(()=>{ 示例代码如下: -```javascript +```JavaScript const options = { // 会话类型:单聊和群聊分别为 `singleChat` 和 `groupChat`。 conversationType: 'singleChat', @@ -168,7 +168,7 @@ miniCore.localCache.removeLocalConversation(options).then(()=>{ 你可以调用 `getServerConversations` 方法获取服务端会话列表并同步到本地数据库。示例代码如下: -```javascript +```JavaScript const options = { /** 每页期望获取的会话数量。取值范围为 [1,50],默认为 `20`。*/ pageSize: 20, diff --git a/docs/document/web/conversation_mark.md b/docs/document/web/conversation_mark.md index d8ef74fa4..586a4f54a 100644 --- a/docs/document/web/conversation_mark.md +++ b/docs/document/web/conversation_mark.md @@ -8,7 +8,7 @@ 你需要自行维护会话标记与具体业务含义之间的映射,例如 [`MarkType.mark_0`](https://doc.easemob.com/jsdoc/enums/Types.ContactType.MarkType.html)表示待处理会话。 -```javascript +```JavaScript const MarkMap = new Map(); MarkMap.set(0, 'IMPORTANT'); MarkMap.set(1, 'NORMAL'); @@ -44,7 +44,7 @@ MarkMap.set(2, 'STAR'); ::: -```javascript +```JavaScript const options = { conversations: [ {conversationId: 'test', conversationType: 'singleChat'}, @@ -64,7 +64,7 @@ conn.addConversationMark(options).then(() => { 调用该方法会同时移除本地和服务器端会话的标记。 -```javascript +```JavaScript const options = { conversations: [ {conversationId: 'test', conversationType: 'singleChat'}, @@ -82,7 +82,7 @@ conn.removeConversationMark(options).then(() => { 你可以调用 `getServerConversationsByFilter` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 `0`)、未读消息数、会话标记以及最新一条消息。 -```javascript +```JavaScript const options = { pageSize: 10, cursor: '', diff --git a/docs/document/web/conversation_overview.md b/docs/document/web/conversation_overview.md index 582319857..82076058e 100644 --- a/docs/document/web/conversation_overview.md +++ b/docs/document/web/conversation_overview.md @@ -28,7 +28,7 @@ SDK 提供了会话已读事件 `onChannelMessage`,用户可以通过该事件 示例代码如下: -```javascript +```JavaScript conn.addEventHandler("handlerId", { onChannelMessage: (message) => { // 收到会话已读的事件。该事件在以下场景中触发: diff --git a/docs/document/web/conversation_pin.md b/docs/document/web/conversation_pin.md index 74948b554..9b8723b2f 100644 --- a/docs/document/web/conversation_pin.md +++ b/docs/document/web/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```javascript +```JavaScript connection.pinConversation({conversationId:'conversationId', conversationType: 'singleChat', isPinned: true}) ``` @@ -43,7 +43,7 @@ connection.pinConversation({conversationId:'conversationId', conversationType: ' 示例代码如下,返回数据类型参见[从服务器分页获取会话列表](conversation_list#从服务器分页获取会话列表)。 -```javascript +```JavaScript // pageSize: 每页返回的会话数。取值范围为 [1,50]。 // cursor:开始获取数据的游标位置。若传空字符串(''),SDK 从最新置顶的会话开始查询。 connection.getServerPinnedConversations({pageSize:50, cursor: ''}) diff --git a/docs/document/web/conversation_receipt.md b/docs/document/web/conversation_receipt.md index c1490834a..d1d6832c5 100644 --- a/docs/document/web/conversation_receipt.md +++ b/docs/document/web/conversation_receipt.md @@ -33,7 +33,7 @@ 若会话中存在多条未读消息,建议发送会话已读回执,因为若发送消息已读回执,则需要调用多次。 -```javascript +```JavaScript let option = { chatType: "singleChat", // 会话类型,设置为单聊。 type: "channel", // 消息类型。channel 表示会话已读回执。 @@ -51,7 +51,7 @@ conn.send(msg); 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `onChannelMessage` 回调接收会话已读回执。 ::: -```javascript +```JavaScript conn.addEventHandler("customEvent", { onChannelMessage: (message) => {}, }); @@ -63,7 +63,7 @@ conn.addEventHandler("customEvent", { - 对于群聊会话,你可以调用以下接口发送已读回执,清空指定群组会话的未读数。与单聊会话不同,对于群聊会话,调用以下接口只会清空服务端的群组会话的未读数,不会触发 `onChannelMessage` 回调。 -```javascript +```JavaScript let option = { chatType: "groupChat", // 会话类型,设置为群聊。 type: "channel", // 消息类型。channel 表示会话已读回执。 diff --git a/docs/document/web/easecallkit.md b/docs/document/web/easecallkit.md index ecd0e6294..70aa00b5a 100644 --- a/docs/document/web/easecallkit.md +++ b/docs/document/web/easecallkit.md @@ -41,7 +41,7 @@ import Callkit from 'chat-callkit'; 调用 `init` 初始化 `CallKit`。 -```javascript +```JavaScript /** * 初始化 CallKit * @@ -60,7 +60,7 @@ CallKit.init(appId, agoraUid, connection); 一对一通话时,主叫方向被叫方发送短信作为通话邀请。 -```javascript +```JavaScript let options = { /** 通话类型: * 0:一对一音频通话 @@ -86,7 +86,7 @@ CallKit.startCall(options); 在多人通话中,主叫方向群组或聊天室发送文本消息,同时向用户发送命令消息加入通话。 -```javascript +```JavaScript let options = { /** 通话类型: * 0:一对一音频通话 @@ -120,7 +120,7 @@ CallKit.startCall(options); 通话邀请发送后,如果被叫方在线且可以通话,将通过 `onInvite` 回调收到邀请。你可以弹出一个用户界面,让被叫方在该回调中接受或拒绝邀请。 -```javascript +```JavaScript /** * 处理通话邀请。 * @@ -144,7 +144,7 @@ CallKit.answerCall(result, accessToken); 在通话中,你还可以监听以下回调事件: -```javascript +```JavaScript function Call() { // 处理会话状态变更。 const handleCallStateChange = (info) => { diff --git a/docs/document/web/group_attributes.md b/docs/document/web/group_attributes.md index 33b6eda2e..dd0efc3a6 100644 --- a/docs/document/web/group_attributes.md +++ b/docs/document/web/group_attributes.md @@ -27,7 +27,7 @@ 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", groupName: "groupName", @@ -45,7 +45,7 @@ conn.modifyGroup(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId" }; @@ -60,7 +60,7 @@ conn.fetchGroupAnnouncement(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", announcement: "A announcement of group" @@ -74,7 +74,7 @@ conn.updateGroupAnnouncement(option).then(res => console.log(res)) 所有群组成员均可调用 `uploadGroupSharedFile` 方法上传共享文件至群组,单个群共享文件大小限制为 10 MB。上传共享文件后,其他群成员收到 `uploadFile` 事件。 -```javascript +```JavaScript let option = { groupId: "groupId", file: file, // 获取的文件对象。 @@ -90,7 +90,7 @@ conn.uploadGroupSharedFile(option); 所有群成员均可调用 `downloadGroupSharedFile` 方法下载共享文件。 -```javascript +```JavaScript let option = { groupId: "groupId", fileId: "fileId", // 文件 ID。 @@ -108,7 +108,7 @@ conn.downloadGroupSharedFile(option); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", fileId: "fileId", // 文件 ID。 @@ -120,7 +120,7 @@ conn.deleteGroupSharedFile(option).then(res => console.log(res)) 所有群成员均可调用 `getGroupSharedFilelist` 方法获取群组的共享文件列表。 -```javascript +```JavaScript let option = { groupId: "groupId" }; diff --git a/docs/document/web/group_manage.md b/docs/document/web/group_manage.md index e99b7a148..d282ff1e5 100644 --- a/docs/document/web/group_manage.md +++ b/docs/document/web/group_manage.md @@ -49,7 +49,7 @@ 创建群组的示例代码如下: -```javascript +```JavaScript let option = { data: { groupname: "groupName", @@ -74,7 +74,7 @@ conn.createGroup(option).then((res) => console.log(res)); 1. 群成员调用 `inviteUsersToGroup` 方法邀请用户入群。 -```javascript +```JavaScript conn.inviteUsersToGroup({ groupId: "groupId", users: ["user1", "user2"] }); ``` @@ -87,13 +87,13 @@ conn.inviteUsersToGroup({ groupId: "groupId", users: ["user1", "user2"] }); - 受邀用户同意加入群组,需要调用 `acceptGroupJoinRequest` 方法。用户加入成功后,邀请人会收到 `acceptInvite` 事件,群组所有成员会收到 `memberPresence` 事件。 - ```javascript + ```JavaScript conn.acceptGroupInvite({ invitee: "myUserId", groupId: "groupId" }); ``` - 受邀用户拒绝入群,需要调用 `rejectGroupJoinRequest` 方法。邀请人会收到 `rejectInvite` 事件。 - ```javascript + ```JavaScript conn.rejectGroupInvite({ invitee: "myUserId", groupId: "groupId" }); ``` @@ -105,7 +105,7 @@ conn.inviteUsersToGroup({ groupId: "groupId", users: ["user1", "user2"] }); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", }; @@ -122,7 +122,7 @@ conn.destroyGroup(option).then((res) => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { // 单个群组 ID 或群组 ID 数组。 groupId: "groupId", @@ -138,7 +138,7 @@ conn.getGroupInfo(option).then((res) => { 示例代码如下: -```javascript +```JavaScript let pageNum = 1, pageSize = 100; let option = { @@ -153,7 +153,7 @@ conn.listGroupMembers(option).then((res) => console.log(res)); - 用户可以调用 `getJoinedGroups` 方法获取当前用户加入和创建的群组列表,代码如下: -```javascript +```JavaScript conn.getJoinedGroups({ pageNum: 0, pageSize: 20, @@ -164,7 +164,7 @@ conn.getJoinedGroups({ - 用户还可以分页获取公开群列表: -```javascript +```JavaScript let option = { limit: 20, cursor: cursor, @@ -178,7 +178,7 @@ SDK 提供 `addEventHandler` 方法用于注册监听事件。开发者可以通 示例代码如下: -```javascript +```JavaScript // 创建一个群组事件监听器 // 在该方法的举例中,用户 A 表示当前用户。 conn.addEventHandler("eventName", { diff --git a/docs/document/web/group_members.md b/docs/document/web/group_members.md index 265a48453..f9287c6c6 100644 --- a/docs/document/web/group_members.md +++ b/docs/document/web/group_members.md @@ -36,7 +36,7 @@ 1. 用户可获取 [公开群列表](group_manage.html#获取群组列表)。 2. 调用 `joinGroup` 方法传入群组 ID,申请加入对应群组。示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", message: "I am Tom" @@ -53,7 +53,7 @@ conn.joinGroup(option).then(res => console.log(res)) 示例代码如下: - ```javascript + ```JavaScript conn.acceptGroupJoinRequest({ applicant: "userId", groupId: "groupId", @@ -66,7 +66,7 @@ conn.joinGroup(option).then(res => console.log(res)) 示例代码如下: - ```javascript + ```JavaScript conn.rejectGroupJoinRequest({ applicant: "userId", groupId: "groupId", @@ -82,7 +82,7 @@ conn.joinGroup(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId" }; @@ -95,7 +95,7 @@ conn.leaveGroup(option).then(res => console.log(res)) - 移出单个群成员,示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", username: "username" @@ -105,7 +105,7 @@ conn.removeGroupMember(option).then(res => console.log(res)) - 批量移出群成员,示例代码如下: -```javascript +```JavaScript connection.removeGroupMembers({groupId: 'groupId', users: ['user1', 'user2']}) ``` @@ -125,7 +125,7 @@ connection.removeGroupMembers({groupId: 'groupId', users: ['user1', 'user2']}) 示例代码如下: -```javascript +```JavaScript let options = { groupId: 'groupId', userId: 'userId', @@ -147,7 +147,7 @@ connection.removeGroupMembers({groupId: 'groupId', users: ['user1', 'user2']}) 示例代码如下: -```javascript +```JavaScript let options = { groupId: 'groupId', userId: 'userId' @@ -170,7 +170,7 @@ connection.removeGroupMembers({groupId: 'groupId', users: ['user1', 'user2']}) 示例代码如下: -```javascript +```JavaScript let options = { groupId: 'groupId', userIds: ['userId'], @@ -191,7 +191,7 @@ connection.removeGroupMembers({groupId: 'groupId', users: ['user1', 'user2']}) 仅群主可以调用 `changeGroupOwner` 方法将群所有权移交给指定群成员。成功移交后,原群主变为普通成员,新群主会收到 `changeOwner` 事件。 -```javascript +```JavaScript let option = { groupId: "groupId", newOwner: "userId" @@ -207,7 +207,7 @@ conn.changeGroupOwner(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", username: "userId" @@ -223,7 +223,7 @@ conn.setGroupAdmin(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", username: "userId" @@ -235,7 +235,7 @@ conn.removeGroupAdmin(option).then(res => console.log(res)) 所有群成员均可调用 `getGroupAdmin` 获取群组下所有管理员,示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId" }; @@ -258,7 +258,7 @@ conn.getGroupAdmin(option).then((res) => { 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", users: ["user1", "user2"] @@ -272,7 +272,7 @@ conn.addUsersToGroupAllowlist(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", userName: "userId" @@ -286,7 +286,7 @@ conn.removeGroupAllowlistMember(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", userName: "userId" @@ -300,7 +300,7 @@ conn.isInGroupAllowlist(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId" } @@ -315,7 +315,7 @@ conn.getGroupAllowlist(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", usernames: ["user1", "user2"] @@ -329,7 +329,7 @@ conn.blockGroupMembers(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", usernames: ["user1", "user2"] @@ -343,7 +343,7 @@ conn.unblockGroupMembers(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", }; @@ -362,7 +362,7 @@ conn.getGroupBlocklist(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", username: "user1" || ["user1", "user2"], @@ -377,7 +377,7 @@ conn.muteGroupMember(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", username: "user1" || ["user1", "user2"] @@ -391,7 +391,7 @@ conn.unmuteGroupMember(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId" }; @@ -406,7 +406,7 @@ conn.getGroupMutelist(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", }; @@ -419,7 +419,7 @@ conn.disableSendGroupMsg(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { groupId: "groupId", }; diff --git a/docs/document/web/import_sdk_minicore.md b/docs/document/web/import_sdk_minicore.md index 4bc7fd664..d88e2f210 100644 --- a/docs/document/web/import_sdk_minicore.md +++ b/docs/document/web/import_sdk_minicore.md @@ -41,7 +41,7 @@ yarn add easemob-websdk 根据项目需求引入相应的功能模块。例如,引入用户关系模块: -```javascript +```JavaScript import MiniCore from "easemob-websdk/miniCore/miniCore"; import * as contactPlugin from "easemob-websdk/contact/contact"; ``` @@ -50,7 +50,7 @@ import * as contactPlugin from "easemob-websdk/contact/contact"; 将引入的功能模块注册到 miniCore 中: -```javascript +```JavaScript const miniCore = new MiniCore({ appKey: "your appKey", }); @@ -63,7 +63,7 @@ miniCore.usePlugin(contactPlugin, "contact"); 注册所需模块后,即可在项目中使用这些模块提供的功能: -```javascript +```JavaScript // 获取联系人列表 miniCore.contact.getContacts(); ``` @@ -78,7 +78,7 @@ miniCore.contact.getContacts(); 示例代码如下: -```javascript +```JavaScript // 登录 miniCore.open({ username: "username", @@ -94,7 +94,7 @@ miniCore.close(); 示例代码如下: -```javascript +```JavaScript miniCore.addEventHandler("handlerId", { onTextMessage: (message) => { console.log(message); @@ -106,7 +106,7 @@ miniCore.addEventHandler("handlerId", { 示例代码如下: -```javascript +```JavaScript import { EasemobChat } from "easemob-websdk"; //发送文本消息 const sendTextMsg = () => { diff --git a/docs/document/web/initialization.md b/docs/document/web/initialization.md index 5e5d236b5..2f66dd306 100644 --- a/docs/document/web/initialization.md +++ b/docs/document/web/initialization.md @@ -8,7 +8,7 @@ ## 初始化参数说明 -```javascript +```JavaScript import ChatSDK from "easemob-websdk"; const conn = new ChatSDK.connection({ appKey: "Your appKey", diff --git a/docs/document/web/integration.md b/docs/document/web/integration.md index a739b8343..460bf4f6d 100644 --- a/docs/document/web/integration.md +++ b/docs/document/web/integration.md @@ -60,7 +60,7 @@ yarn add easemob-websdk 根据项目需求引入相应的功能模块。例如,引入用户关系模块: -```javascript +```JavaScript import MiniCore from "easemob-websdk/miniCore/miniCore"; import * as contactPlugin from "easemob-websdk/contact/contact"; ``` @@ -69,7 +69,7 @@ import * as contactPlugin from "easemob-websdk/contact/contact"; 将引入的功能模块注册到 miniCore 中: -```javascript +```JavaScript const miniCore = new MiniCore({ appKey: "your appKey", }); @@ -82,7 +82,7 @@ miniCore.usePlugin(contactPlugin, "contact"); 注册所需模块后,即可在项目中使用这些模块提供的功能: -```javascript +```JavaScript // 获取联系人列表 miniCore.contact.getContacts(); ``` @@ -97,7 +97,7 @@ miniCore.contact.getContacts(); 示例代码如下: -```javascript +```JavaScript // 登录 miniCore.open({ username: "username", @@ -113,7 +113,7 @@ miniCore.close(); 示例代码如下: -```javascript +```JavaScript miniCore.addEventHandler("handlerId", { onTextMessage: (message) => { console.log(message); @@ -125,7 +125,7 @@ miniCore.addEventHandler("handlerId", { 示例代码如下: -```javascript +```JavaScript import { EasemobChat } from "easemob-websdk"; //发送文本消息 const sendTextMsg = () => { @@ -149,7 +149,7 @@ const sendTextMsg = () => { ### 引入 JavaScript SDK -```javascript +```JavaScript import EC from "easemob-websdk"; ``` @@ -157,7 +157,7 @@ import EC from "easemob-websdk"; 在下面的导入代码中,`EasemobChat` 是 SDK 类型的命名空间。 -```javascript +```JavaScript import EC, { EasemobChat } from "easemob-websdk"; ``` @@ -177,7 +177,7 @@ import EC, { EasemobChat } from "easemob-websdk"; 1. Nuxt 项目, 你可以在 mounted 生命周期动态导入 SDK: -```javascript +```JavaScript export default { mounted: () => { import("easemob-websdk").then((res) => { @@ -193,7 +193,7 @@ export default { 2. 对于 Next 项目, 要使用客户端组件,你可以在文件顶部的导入上方添加 `use client` 指令。 -```tsx +```TypeScript 'use client' import { useEffect } from 'react' diff --git a/docs/document/web/log.md b/docs/document/web/log.md index 870f3c0e6..5b40095e6 100644 --- a/docs/document/web/log.md +++ b/docs/document/web/log.md @@ -6,18 +6,18 @@ 开启日志输出: -```javascript +```JavaScript logger.enableAll(); ``` - 设置日志不输出到控制台: -```javascript +```JavaScript logger.setConsoleLogVisibility(false) ``` - 监听 SDK 日志事件: -```javascript +```JavaScript logger.onLog = (log)=>{ console.log('im logger', log) } @@ -25,20 +25,20 @@ logger.onLog = (log)=>{ 关闭日志输出: -```javascript +```JavaScript logger.disableAll(); ``` 设置日志输出等级: -```javascript +```JavaScript // 0 - 5 或者 'TRACE','DEBUG','INFO','WARN','ERROR','SILENT'; logger.setLevel(0); ``` 设置缓存日志: -```javascript +```JavaScript logger.setConfig({ useCache: false, // 是否缓存 maxCache: 3 * 1024 * 1024, // 最大缓存字节 @@ -49,7 +49,7 @@ logger.setLevel(0); 下载日志: -```javascript +```JavaScript logger.download(); ``` diff --git a/docs/document/web/login.md b/docs/document/web/login.md index d9e012a62..5f71b189e 100644 --- a/docs/document/web/login.md +++ b/docs/document/web/login.md @@ -10,7 +10,7 @@ 示例代码如下所示: -```javascript +```JavaScript conn.registerUser({ username: "user1", password: "xxx", @@ -29,7 +29,7 @@ conn.registerUser({ 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```javascript +```JavaScript conn .open({ user: "username", @@ -45,7 +45,7 @@ conn 2. **用户 ID + 密码**登录是传统的登录方式。用户 ID 和密码均由你的终端用户自行决定,密码需要符合[密码规则要求](/document/server-side/account_system.html#开放注册单个用户)。 -```javascript +```JavaScript conn .open({ user: "username", @@ -61,7 +61,7 @@ conn ## 退出登录 -```javascript +```JavaScript conn.close(); ``` diff --git a/docs/document/web/message_delete.md b/docs/document/web/message_delete.md index 3197be770..9b61ac044 100644 --- a/docs/document/web/message_delete.md +++ b/docs/document/web/message_delete.md @@ -27,7 +27,7 @@ 若使用该功能,需将 SDK 升级至 V4.5.0 或以上版本。 ::: -```javascript +```JavaScript conn.deleteAllMessagesAndConversations().then(() => { // 清除全部会话和消息记录成功 }) @@ -45,7 +45,7 @@ conn.deleteAllMessagesAndConversations().then(() => { 示例代码如下: -```javascript +```JavaScript // 按时间删除消息 connection.removeHistoryMessages({targetId: 'userId', chatType: 'singleChat', beforeTimeStamp: Date.now()}) diff --git a/docs/document/web/message_deliver_only_online.md b/docs/document/web/message_deliver_only_online.md index 802da546e..7196e81cc 100644 --- a/docs/document/web/message_deliver_only_online.md +++ b/docs/document/web/message_deliver_only_online.md @@ -26,7 +26,7 @@ 下面以发送文本消息为例进行说明: -```javascript +```JavaScript // 发送文本消息。 function sendTextMessage() { let option = { diff --git a/docs/document/web/message_modify.md b/docs/document/web/message_modify.md index 9f8836c75..c55eec108 100644 --- a/docs/document/web/message_modify.md +++ b/docs/document/web/message_modify.md @@ -42,7 +42,7 @@ 示例代码如下: -```javascript +```JavaScript // 注册修改消息事件 conn.addEventHandler("modifiedMessage", { diff --git a/docs/document/web/message_pin.md b/docs/document/web/message_pin.md index 3a01a2ab9..deb4ea699 100644 --- a/docs/document/web/message_pin.md +++ b/docs/document/web/message_pin.md @@ -30,7 +30,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```javascript +```JavaScript const options = { // 会话类型:单聊、群聊和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`。 @@ -54,7 +54,7 @@ conn.pinMessage(options).then(()=>{ 会话中的所有成员均可取消置顶消息,不论该消息是由哪个成员置顶。取消置顶消息后,该会话的置顶消息列表中也不再包含该消息。 -```javascript +```JavaScript const options = { // 会话类型:单聊、群聊和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`。 @@ -83,7 +83,7 @@ conn.unpinMessage(options).then(()=>{ 示例代码如下: -```javascript +```JavaScript const options = { // 会话 ID conversationId: 'conversationId', @@ -105,7 +105,7 @@ conn.getServerPinnedMessages(options).then((res)=>{ 你可以设置消息置顶监听,通过 `onMessagePinEvent` 事件监听消息的置顶。 -```javascript +```JavaScript conn.addEventHandler("eventName", { onMessagePinEvent: (event) => { console.log(event, '收到消息置顶操作事件') diff --git a/docs/document/web/message_recall.md b/docs/document/web/message_recall.md index f7816db9f..5c1f6af60 100644 --- a/docs/document/web/message_recall.md +++ b/docs/document/web/message_recall.md @@ -32,7 +32,7 @@ 2. 附件类型消息,包括图片、音频和视频和文件消息,撤回消息后,消息附件也相应删除。 ::: -```javascript +```JavaScript let option = { // 要撤回消息的消息 ID。 mid: "msgId", @@ -57,7 +57,7 @@ conn.recallMessage(option) 你可以设置消息撤回监听,通过 `onRecallMessage` 监听消息撤回状态。 -```javascript +```JavaScript conn.addEventHandler('MESSAGES',{ onRecallMessage: (msg) => { // 这里需要在本地删除对应的消息,也可以插入一条消息:“XXX撤回一条消息”。 diff --git a/docs/document/web/message_receipt.md b/docs/document/web/message_receipt.md index c33596836..7db24fc06 100644 --- a/docs/document/web/message_receipt.md +++ b/docs/document/web/message_receipt.md @@ -58,7 +58,7 @@ 当接收方收到消息后,SDK 底层会自动进行消息送达回执。 -```javascript +```JavaScript const conn = new websdk.connection({ appKey: "your appKey", delivery: true, @@ -67,7 +67,7 @@ const conn = new websdk.connection({ 2. 接收方收到消息后,发送方会收到 `onDeliveredMessage` 回调,得知消息已送达接收方。 -```javascript +```JavaScript conn.addEventHandler("customEvent", { onReceivedMessage: function (message) {}, // 收到消息送达服务器回执。 onDeliveredMessage: function (message) {}, // 收到消息送达客户端回执。 @@ -88,7 +88,7 @@ conn.addEventHandler("customEvent", { 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```javascript +```JavaScript let option = { chatType: "singleChat", // 会话类型,设置为单聊。 type: "channel", // 消息类型。 @@ -100,7 +100,7 @@ conn.send(msg); - 聊天页面打开时,若收到消息,发送消息已读回执,如下所示: -```javascript +```JavaScript let option = { type: "read", // 消息类型为消息已读回执。 chatType: "singleChat", // 会话类型,这里为单聊。 @@ -115,7 +115,7 @@ conn.send(msg); 你可以调用接口监听指定消息是否已读,示例代码如下: -```javascript +```JavaScript conn.addEventHandler("customEvent", { onReadMessage: (message) => {}, }); @@ -139,7 +139,7 @@ conn.addEventHandler("customEvent", { 1. 群成员发送消息时若需已读回执,需设置 `allowGroupAck` 为 `true`: -```javascript +```JavaScript sendGroupReadMsg = () => { let option = { type: 'txt', // 消息类型。 @@ -160,7 +160,7 @@ sendGroupReadMsg = () => { 2. 阅读消息后,消息接收方发送群消息已读回执。 -```javascript +```JavaScript sendReadMsg = () => { let option = { type: "read", // 消息是否已读。 @@ -179,7 +179,7 @@ sendReadMsg = () => { - `onReadMessage`:消息发送方在线时监听该回调。 - `onStatisticMessage`:消息发送方离线时监听该回调。 - ```javascript + ```JavaScript // 在线时可以在 onReadMessage 里监听。 conn.addEventHandler("customEvent", { onReadMessage: (message) => { @@ -203,7 +203,7 @@ sendReadMsg = () => { 4. 消息发送方收到群消息已读回执后,可以获取已阅读该消息的用户的详细信息: - ```javascript + ```JavaScript conn .getGroupMsgReadUser({ msgId: "messageId", // 消息 ID。 diff --git a/docs/document/web/message_retrieve.md b/docs/document/web/message_retrieve.md index 34ad3735a..0adf77b1b 100644 --- a/docs/document/web/message_retrieve.md +++ b/docs/document/web/message_retrieve.md @@ -31,7 +31,7 @@ 4. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```javascript +```JavaScript connection.getHistoryMessages({ targetId: 'targetId', // 单聊为对端用户 ID,群组聊天为群组 ID。 chatType: 'groupChat', // 会话类型:单聊、群组聊天和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`。 @@ -50,7 +50,7 @@ connection.getHistoryMessages({ 为确保数据可靠,我们建议你每次最多获取 50 条消息,可多次获取。 -```javascript +```JavaScript let options = { // 对方的用户 ID 或者群组 ID 或聊天室 ID。 targetId: "user1", diff --git a/docs/document/web/message_send_receive.md b/docs/document/web/message_send_receive.md index 1af1023a2..510184df6 100644 --- a/docs/document/web/message_send_receive.md +++ b/docs/document/web/message_send_receive.md @@ -54,7 +54,7 @@ 默认情况下,SDK 对单个用户发送消息的频率未做限制。如果你联系了环信商务设置了该限制,一旦在单聊、群聊或聊天室中单个用户的消息发送频率超过设定的上限,SDK 会上报错误,即错误码 509 `MESSAGE_CURRENT_LIMITING`。 -```javascript +```JavaScript // 发送文本消息。 function sendTextMessage() { let option = { @@ -80,7 +80,7 @@ function sendTextMessage() { 对于聊天室消息,可设置消息优先级。示例代码如下: -```javascript +```JavaScript // 发送文本消息。 function sendTextMessage() { let option = { @@ -110,7 +110,7 @@ function sendTextMessage() { 对于聊天室消息,你可以通过消息的 `broadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 conn.addEventHandler("eventName", { // SDK 与环信服务器连接成功。 @@ -180,7 +180,7 @@ conn.addEventHandler("eventName", { 对于消息附件,你也可以将附件上传到自己的服务器,而不是环信服务器,然后发送消息。这种情况下,需要在 SDK 初始化时将 [`Connection` 类中的 `useOwnUploadFun` 参数](https://doc.easemob.com/jsdoc/classes/Connection.Connection-1.html)设置为 `true`。例如,对于图片消息,上传附件后,调用 `sendPrivateUrlImg` 方法传入图片的 URL 发送图片消息。 -```javascript +```JavaScript function sendPrivateUrlImg() { let option = { chatType: "singleChat", @@ -204,7 +204,7 @@ function sendPrivateUrlImg() { 参考以下代码示例创建和发送语音消息: -```javascript +```JavaScript function sendPrivateAudio() { // 获取语音文件。 let input = document.getElementById("audio"); @@ -258,7 +258,7 @@ function sendPrivateAudio() { 接收方收到 `onAudioMessage` 回调,根据消息 `url` 字段获取语音文件的服务器地址,从而获取语音文件。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 conn.addEventHandler("eventName", { // 当前用户收到语音消息。 @@ -276,7 +276,7 @@ conn.addEventHandler("eventName", { 请参考以下代码示例创建和发送图片消息: -```javascript +```JavaScript function sendPrivateImg() { // 选择本地图片文件。 let input = document.getElementById("image"); @@ -334,7 +334,7 @@ function sendPrivateImg() { 接收方收到 `onImageMessage` 回调,根据消息 `url` 字段获取图片文件的服务器地址,从而获取图片文件。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 conn.addEventHandler("eventName", { // 当前用户收到图片消息。 @@ -354,7 +354,7 @@ conn.addEventHandler("eventName", { 参考以下代码示例创建和发送视频消息: -```javascript +```JavaScript function sendPrivateVideo() { // 选择本地视频文件。 let input = document.getElementById("video"); @@ -408,7 +408,7 @@ function sendPrivateVideo() { 接收方收到 `onVideoMessage` 回调,根据消息 `url` 字段获取视频文件的服务器地址,从而获取视频文件。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 conn.addEventHandler("eventName", { // 当前用户收到视频消息。 @@ -426,7 +426,7 @@ conn.addEventHandler("eventName", { 参考以下代码示例创建、发送和接收文件消息: -```javascript +```JavaScript function sendPrivateFile() { // 选择本地文件。 let input = document.getElementById("file"); @@ -483,7 +483,7 @@ function sendPrivateFile() { 接收方收到 `onFileMessage` 回调,根据消息 `url` 字段获取文件的服务器地址,从而获取文件。 -```javascript +```JavaScript // 使用 `addEventHandler` 监听回调事件 conn.addEventHandler("eventName", { // 当前用户收到文件消息。 @@ -499,7 +499,7 @@ conn.addEventHandler("eventName", { 当你需要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```javascript +```JavaScript const sendLocMsg = () => { let coords; if (navigator.geolocation) { @@ -531,7 +531,7 @@ const sendLocMsg = () => { 参考以下代码示例发送和接收透传消息: -```javascript +```JavaScript function sendCMDMessage() { let option = { // 消息类型。 @@ -585,7 +585,7 @@ function sendCMDMessage() { 发送输入状态的用户。 -```typescript +```TypeScript let previousChangedTimeStamp = 0; // 监听输入状态的变化 const onInputChange = function () { @@ -623,7 +623,7 @@ const sendBeginTyping = function () { 接收输入状态的用户。 -```typescript +```TypeScript // 设置状态监听器 let timer; conn.addEventHandler("message", { @@ -650,7 +650,7 @@ const beginTimer = () => { 参考以下示例代码创建和发送自定义消息: -```javascript +```JavaScript function sendCustomMsg() { // 自定义事件。 let customEvent = "customEvent"; @@ -718,7 +718,7 @@ function sendCustomMsg() { 示例代码如下: -```javascript +```JavaScript let option = { chatType: "singleChat", type: "combine", @@ -756,7 +756,7 @@ conn.send 合并消息实际上是一种附件消息。收到合并消息后,你可以调用 `downloadAndParseCombineMessage` 方法下载合并消息附件并解析出原始消息列表。 -```javascript +```JavaScript connection .downloadAndParseCombineMessage({ url: msg.url, @@ -784,7 +784,7 @@ connection 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```javascript +```JavaScript // 发送定向文本消息。 function sendTextMessage() { let option = { @@ -816,7 +816,7 @@ function sendTextMessage() { 如果上述消息类型无法满足要求,你可以使用消息扩展为消息添加属性。这种情况可用于更复杂的消息传递场景,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```javascript +```JavaScript function sendTextMessage() { let option = { type: "txt", diff --git a/docs/document/web/message_translation.md b/docs/document/web/message_translation.md index a045e195a..4209dabf2 100644 --- a/docs/document/web/message_translation.md +++ b/docs/document/web/message_translation.md @@ -29,7 +29,7 @@ SDK 支持你通过调用 API 在项目中实现如下功能: 无论是按需翻译还是自动翻译,都需先调用 `getSupportLanguages` 获取支持的翻译语言。示例代码如下: -```javascript +```JavaScript conn.getSupportedLanguages().then(res => console.log(res)) ``` @@ -37,7 +37,7 @@ conn.getSupportedLanguages().then(res => console.log(res)) 接收方调用 `translateMessage` 将接收到的消息翻译成目标语言。示例代码如下: -```javascript +```JavaScript conn.translateMessage({text: 'hello', languages: [zh-Hans]}) ``` @@ -47,7 +47,7 @@ conn.translateMessage({text: 'hello', languages: [zh-Hans]}) 示例代码如下: -```javascript +```JavaScript // 发送消息。 let option = { chatType: 'singleChat', diff --git a/docs/document/web/moderation.md b/docs/document/web/moderation.md index 0fcc4bec5..0179d5398 100644 --- a/docs/document/web/moderation.md +++ b/docs/document/web/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```javascript +```JavaScript connection.reportMessage({ reportType: 'report type', // 非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 reportReason: 'report reason', // 举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/web/multi_device.md b/docs/document/web/multi_device.md index a19a666db..4fe7ac993 100644 --- a/docs/document/web/multi_device.md +++ b/docs/document/web/multi_device.md @@ -31,7 +31,7 @@ 你可以调用 `getSelfIdsOnOtherPlatform` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```javascript +```JavaScript conn.getSelfIdsOnOtherPlatform().then((res) => { console.log(res, '获取当前用户其他登录设备的登录 Id 列表成功'); // 选择一个登录 ID 作为消息接收方。 @@ -60,7 +60,7 @@ conn.getSelfIdsOnOtherPlatform().then((res) => { 登录成功后才会将该设置发送到服务器。 ::: -```javascript +```JavaScript // 设置自定义扩展信息 conn.setLoginInfoCustomExt("你的自定义扩展信息json字符串"); @@ -93,7 +93,7 @@ conn.getSelfIdsOnOtherPlatform().then((res) => { 子区和删除漫游消息事件会触发 `onMultiDeviceEvent` 事件,示例代码如下: -```javascript +```JavaScript conn.addEventHandler("handlerId", { onContactAgreed: (event) => {}, onGroupEvent: (event) => {}, diff --git a/docs/document/web/overview.md b/docs/document/web/overview.md index 31953d38b..c7eb98e3f 100644 --- a/docs/document/web/overview.md +++ b/docs/document/web/overview.md @@ -18,13 +18,13 @@ - 对于 JavaScript SDK,导入代码如下: -```javascript +```JavaScript import EC from "easemob-websdk"; ``` - 对于 TypeScript SDK,导入代码如下, EasemobChat 是 SDK 类型的命名空间。 -```javascript +```JavaScript import EC, { EasemobChat } from "easemob-websdk"; ``` @@ -32,7 +32,7 @@ import EC, { EasemobChat } from "easemob-websdk"; Nuxt 项目, 你可以在 mounted 生命周期动态导入 SDK: -```javascript +```JavaScript export default { mounted: () => { import("easemob-websdk").then((res) => { @@ -70,7 +70,7 @@ export default function Home() { 使用 SDK 前需要进行初始化,示例代码如下: -```javascript +```JavaScript const conn = new EC.connection({ appKey: "your appKey", }); @@ -105,7 +105,7 @@ const conn = new EC.connection({ 若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。 -```javascript +```JavaScript conn .registerUser({ /** 用户 ID。 */ @@ -137,7 +137,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录: 1. **用户 ID +密码** 登录是传统的登录方式。用户 ID 和密码都是你的终端用户自行决定,密码需要符合密码规则要求。 -```javascript +```JavaScript conn .open({ user: "username", @@ -157,7 +157,7 @@ conn 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 ::: -```javascript +```JavaScript conn .open({ user: "username", @@ -178,7 +178,7 @@ conn ## 退出登录 -```typescript +```TypeScript conn.close(); ``` @@ -186,7 +186,7 @@ conn.close(); 你可以通过注册连接监听器确认连接状态。 -```javascript +```JavaScript conn.addEventHandler("handlerId", { onConnected: () => { console.log("onConnected"); @@ -235,18 +235,18 @@ conn.addEventHandler("handlerId", { 开启日志输出: -```javascript +```JavaScript logger.enableAll(); ``` - 设置日志不输出到控制台: -```javascript +```JavaScript logger.setConsoleLogVisibility(false) ``` - 监听 SDK 日志事件: -```javascript +```JavaScript logger.onLog = (log)=>{ console.log('im logger', log) } @@ -254,20 +254,20 @@ logger.onLog = (log)=>{ 关闭日志输出: -```javascript +```JavaScript logger.disableAll(); ``` 设置日志输出等级: -```javascript +```JavaScript // 0 - 5 或者 'TRACE','DEBUG','INFO','WARN','ERROR','SILENT'; logger.setLevel(0); ``` 设置缓存日志: -```javascript +```JavaScript logger.setConfig({ useCache: false, // 是否缓存 maxCache: 3 * 1024 * 1024, // 最大缓存字节 @@ -278,7 +278,7 @@ logger.setLevel(0); 下载日志: -```javascript +```JavaScript logger.download(); ``` diff --git a/docs/document/web/presence.md b/docs/document/web/presence.md index 7f41a5de7..5c87fdc78 100644 --- a/docs/document/web/presence.md +++ b/docs/document/web/presence.md @@ -48,7 +48,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `subscribePresence` 方法订阅指定用户的在线状态,示例代码如下: -```javascript +```JavaScript let option = { usernames: ['Alice','Bob'], expiry: 7*24*3600 // 单位为秒 @@ -69,7 +69,7 @@ conn.subscribePresence(option).then(res => {console.log(res)}) 用户在线时,可调用 `publishPresence` 方法发布自定义在线状态,示例代码如下: -```javascript +```JavaScript let option = { description: 'custom presence' } @@ -82,7 +82,7 @@ conn.publishPresence(option).then(res => {console.log(res)}) 参考如下代码,添加用户在线状态的监听器: -```javascript +```JavaScript WebIM.conn.addEventHandler('MESSAGES',{ onPresenceStatusChange: => (msg) { // 这里可以处理订阅用户状态更新后的逻辑。 @@ -95,7 +95,7 @@ WebIM.conn.addEventHandler('MESSAGES',{ 若取消指定用户的在线状态订阅,可调用 `unsubscribePresence` 方法,示例代码如下: -```javascript +```JavaScript let option = { usernames: ['Alice','Bob'] } @@ -106,7 +106,7 @@ conn.unsubscribePresence(option).then(res => {console.log(res)}) 为方便用户管理订阅关系,SDK 提供 `getSubscribedPresencelist` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```javascript +```JavaScript let option = { pageNum: 0, pageSize: 50 @@ -118,7 +118,7 @@ conn.getSubscribedPresencelist(option).then(res => {console.log(res)}) 如果不关注用户的在线状态变更,你可以调用 `getPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```javascript +```JavaScript let option = { //usernames:要查询状态的用户 ID,每次最多可传 100 个用户 ID。 usernames: ['Alice','Bob'] diff --git a/docs/document/web/privatecloud.md b/docs/document/web/privatecloud.md index e8fbdf50f..1ddce7445 100644 --- a/docs/document/web/privatecloud.md +++ b/docs/document/web/privatecloud.md @@ -8,7 +8,7 @@ 在 `src/utils/WebIMConfig.js` 文件中,进行如下修改: -```javascript +```JavaScript appkey: 'easemob#easeim', // 私有化的 App Key isHttpDNS: false, // 是否允许通过 DNS 获取。由于私有云需自己配置,这里必须为 `false`。 socketServer: 'https://xxx.xxxxx.com', // 私有化的 WebSocket 地址 @@ -19,7 +19,7 @@ restServer: 'https://xxx.xxxxx.com', // 私有化的 RESTful 服务器地址。 在 `src/utils/WebIM.js` 文件中,进行如下修改: -```javascript +```JavaScript appKey: WebIM.config.appkey, url: WebIM.config.socketServer, apiUrl: WebIM.config.restServer, @@ -35,7 +35,7 @@ restServer: 'https://xxx.xxxxx.com', // 私有化的 RESTful 服务器地址。 在 `src/IM/initwebsdk.js` 文件中,进行如下修改: -```javascript +```JavaScript const DEFAULT_APPKEY = "easemob#easeim"; // 私有化的 App Key const DEFAULT_URL = "https://xxx.xxxxx.com"; // 私有化的 WebSocket 地址 const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务器地址 @@ -49,7 +49,7 @@ const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务 1. 在 `/demo/src/config/WebIMConfig.js` 中修改配置信息,如下所示: -```javascript +```JavaScript appkey: appkey || 'easemob-demo#zim', isHttpDNS: false, restServer: rest.restServer || (window.location.protocol === 'https:' ? 'https:' : 'http:') + '//xxx.xxxxx.com', @@ -58,7 +58,7 @@ const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务 2. 在 `/demo/src/config/WebIM.js` 中修改初始化配置,如下所示: -```javascript +```JavaScript appKey: WebIM.config.appkey, url: WebIM.config.socketServer, apiUrl: WebIM.config.restServer, diff --git a/docs/document/web/push/push_extension.md b/docs/document/web/push/push_extension.md index 1b7644ec7..12c34d596 100644 --- a/docs/document/web/push/push_extension.md +++ b/docs/document/web/push/push_extension.md @@ -6,7 +6,7 @@ 设置强制推送后,用户发送消息时会忽略接收方的免打扰设置,不论是否处于免打扰时间段都会正常向接收方推送消息。 -```javascript +```JavaScript // 下面以文本消息为例,其他类型的消息设置方法相同。 const sendTextMsg = () => { let option: AgoraChat.CreateTextMsgParameters = { @@ -30,7 +30,7 @@ const sendTextMsg = () => { 发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方在发送消息时设置,而免打扰模式为接收方设置在指定时间段内不接收推送通知。 -```javascript +```JavaScript // 下面以文本消息为例,其他类型的消息设置方法相同。 const sendTextMsg = () => { let option: AgoraChat.CreateTextMsgParameters = { diff --git a/docs/document/web/push/push_notification_mode_dnd.md b/docs/document/web/push/push_notification_mode_dnd.md index 2ca034b2d..005c9685f 100644 --- a/docs/document/web/push/push_notification_mode_dnd.md +++ b/docs/document/web/push/push_notification_mode_dnd.md @@ -77,7 +77,7 @@ 你可以调用 `setSilentModeForAll` 方法在 app 级别设置推送通知,并通过指定 `paramType` 字段设置推送通知方式和免打扰模式,如下代码示例所示: -```javascript +```JavaScript /** options // 推送通知配置选项。 options: { @@ -113,7 +113,7 @@ WebIM.conn.setSilentModeForAll(params) 你可以调用 `getSilentModeForAll` 获取 app 的推送通知设置,示例代码如下: -```javascript +```JavaScript // 无需传参数,直接调用。 WebIM.conn.getSilentModeForAll() ``` @@ -124,7 +124,7 @@ WebIM.conn.getSilentModeForAll() [推送通知方式](#推送通知方式)包含以下三类:接收所有离线消息的推送通知、仅接收提及某些用户的消息的推送通知、不接收离线消息的推送通知。 -```javascript +```JavaScript // pageSize 的取值范围为 [1,100],默认值为 10。 connection.getSilentModeRemindTypeConversations({pageSize: 10}) ``` @@ -135,7 +135,7 @@ connection.getSilentModeRemindTypeConversations({pageSize: 10}) 调用该接口后,你的其他设备会收到 `onMultiDeviceEvent#setSilentModeForConversation` 事件。 -```javascript +```JavaScript /** const params = { conversationId: 'test', // 会话 ID:单聊为对方用户 ID,群聊为群组 ID,聊天室会话为聊天室 ID。 @@ -186,7 +186,7 @@ WebIM.conn.setSilentModeForConversation(params) 调用 `getSilentModeForConversation` 获取单个会话的推送通知设置,示例代码如下: -```javascript +```JavaScript const params = { conversationId: 'test', // 会话 ID:单聊为对方用户 ID,群聊为群组 ID,聊天室会话为聊天室 ID。 type: 'singleChat', // 会话类型:singleChat(单聊)、groupChat(群聊)和 chatRoom(聊天室)。 @@ -201,7 +201,7 @@ WebIM.conn.getSilentModeForConversation(params) 你可以调用 `getSilentModeForConversations` 获取多个会话的推送通知设置,示例代码如下: -```javascript +```JavaScript const params = { conversationList: [ { @@ -225,7 +225,7 @@ WebIM.conn.getSilentModeForConversations(params) 示例代码如下: -```javascript +```JavaScript const params = { conversationId: '12345', // 会话 ID:单聊为对方用户 ID,群聊为群组 ID,聊天室会话为聊天室 ID。 type: 'groupChat', // 会话类型:singleChat(单聊)、groupChat(群聊)或 chatRoom(聊天室)。 diff --git a/docs/document/web/push/push_overview.md b/docs/document/web/push/push_overview.md index 29564b72f..ac87d9a06 100644 --- a/docs/document/web/push/push_overview.md +++ b/docs/document/web/push/push_overview.md @@ -35,7 +35,7 @@ 例如,对于华为推送,需配置**证书名称**和**推送密钥**,并调用客户端 Web SDK 提供的 `uploadPushToken` 方法向环信服务器上传 device token(Android 或 iOS 平台使用 Web SDK)。 -```javascript +```JavaScript const params = { deviceId: WebIM.conn.clientResource, // 设备 ID,用于标识设备。 deviceToken: 'deviceToken', // 推送 token,用于标识每台设备上的每个应用。 diff --git a/docs/document/web/push/push_template.md b/docs/document/web/push/push_template.md index 90b63e20b..ca5b3e434 100644 --- a/docs/document/web/push/push_template.md +++ b/docs/document/web/push/push_template.md @@ -16,7 +16,7 @@ 这种情况下,创建消息时无需传入 `titleArgs` 和 `contentArgs` 参数。 -```javascript +```JavaScript // 下面以文本消息为例,其他类型的消息设置方法相同。 const option = { @@ -70,7 +70,7 @@ option.ext = { 您收到了一条消息
    请及时查看 -```javascript +```JavaScript // 下面以文本消息为例,其他类型的消息设置方法相同。 const option = { diff --git a/docs/document/web/push/push_translation.md b/docs/document/web/push/push_translation.md index 95cde2549..5d00b21ae 100644 --- a/docs/document/web/push/push_translation.md +++ b/docs/document/web/push/push_translation.md @@ -6,7 +6,7 @@ 你可以调用 `setPushPerformLanguage` 设置推送通知的首选语言,示例代码如下: -```javascript +```JavaScript /** language: string, // 推送通知的首选语言。 */ @@ -18,7 +18,7 @@ WebIM.conn.setPushPerformLanguage(params) 你可以调用 `getPushPerformLanguage` 获取推送通知的首选语言,示例代码如下: -```javascript +```JavaScript WebIM.conn.getPushPerformLanguage() // 无需传参数,直接调用。 ``` diff --git a/docs/document/web/reaction.md b/docs/document/web/reaction.md index d55096846..1773b6cd4 100644 --- a/docs/document/web/reaction.md +++ b/docs/document/web/reaction.md @@ -44,7 +44,7 @@ 示例代码如下: -```javascript +```JavaScript // 添加 Reaction。 conn.addReaction({ messageId: "messageId", reaction: "reaction" }); @@ -62,7 +62,7 @@ conn.addEventHandler("REACTION", { 示例代码如下: -```javascript +```JavaScript // 删除 Reaction。 conn.deleteReaction({ messageId: "messageId", reaction: "reaction" }); @@ -78,7 +78,7 @@ conn.addEventHandler("REACTION", { 调用 `getReactionlist` 方法可以从服务器获取 Reaction 概览列表,列表内容包含 Reaction 内容,添加或移除 Reaction 的用户数量,以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下: -```javascript +```JavaScript conn .getReactionlist({ chatType: "singleChat", messageId: "messageId" }) .then((res) => { @@ -90,7 +90,7 @@ conn 调用 `getReactionDetail` 方法可以从服务器获取 Reaction 详情,包括 Reaction 内容,添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```javascript +```JavaScript conn .getReactionDetail({ messageId: "messageId", @@ -109,7 +109,7 @@ conn 示例代码如下: -```javascript +```JavaScript let options = { // 对方的用户 ID 或者群组 ID 或聊天室 ID。 targetId: "user1", diff --git a/docs/document/web/room_attributes.md b/docs/document/web/room_attributes.md index dba598ade..a7d5a7b75 100644 --- a/docs/document/web/room_attributes.md +++ b/docs/document/web/room_attributes.md @@ -37,7 +37,7 @@ 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", chatRoomName: "chatRoomName", // 聊天室名称。 @@ -53,7 +53,7 @@ conn.modifyChatRoom(option).then((res) => console.log(res)); 示例代码如下: -```javascript +```JavaScript var option = { roomId: "roomId", }; @@ -66,7 +66,7 @@ conn.fetchChatRoomAnnouncement(option).then((res) => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { roomId: "roomId", announcement: "hello everyone", @@ -82,7 +82,7 @@ conn.updateChatRoomAnnouncement(option).then((res) => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID attributeKeys: ["attributeKey1", "attributeKey2", "..."], // 聊天室属性 key(可选,若不设置则获取全部自定义属性) @@ -94,7 +94,7 @@ conn.getChatRoomAttributes(option).then((res) => console.log(res)); 聊天室成员均可通过调用 `setChatRoomAttribute` 设置和更新单个自定义属性。设置后,其他聊天室成员收到 `onChatroomEvent` 回调,事件为 `updateChatRoomAttributes`。 -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID attributeKey: "attributeKey", // 聊天室属性 key @@ -109,7 +109,7 @@ conn.setChatRoomAttribute(option).then((res) => console.log(res)); 聊天室成员均可以调用 `setChatRoomAttributes` 批量设置自定义属性。设置后,其他聊天室成员收到 `onChatroomEvent` 回调,事件为 `updateChatRoomAttributes`。 -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID attributes: { // 聊天室属性,为 key-value 格式,即 {"key":"value"} @@ -127,7 +127,7 @@ conn.setChatRoomAttributes(option).then(res => console.log(res)) 聊天室所有成员可通过调用 `removeChatRoomAttribute` 移除单个自定义属性。移除成功后,其他成员收到 `onChatroomEvent` 回调,事件为 `removeChatRoomAttributes`。 -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID attributeKey: "attributeKey", // 聊天室属性 key @@ -140,7 +140,7 @@ conn.removeChatRoomAttribute(option).then((res) => console.log(res)); 聊天室所有成员可调用 `removeChatRoomAttributes` 批量移除自定义属性。移除成功后,其他成员收到 `onChatroomEvent` 回调,事件为 `removeChatRoomAttributes`。 -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID attributeKeys: ["attributeKey1", "attributeKey2", "..."], // 聊天室属性 key diff --git a/docs/document/web/room_manage.md b/docs/document/web/room_manage.md index 7520f0481..031ffc57a 100644 --- a/docs/document/web/room_manage.md +++ b/docs/document/web/room_manage.md @@ -43,7 +43,7 @@ 示例代码如下: -```javascript +```JavaScript let options = { name: 'chatRoomName', // 聊天室名称。 description: 'description', // 聊天室描述。 @@ -67,7 +67,7 @@ conn.createChatRoom(options).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript // 获取聊天室列表,最多可获取 1000 个。 let option = { pagenum: 1, @@ -105,7 +105,7 @@ conn.addEventHandler("CHATROOM", { 你可以调用 `getJoinedChatRooms` 方法获取当前用户加入的聊天室列表,示例代码如下: -```javascript +```JavaScript conn .getJoinedChatRooms({ pageNum: 1, @@ -122,7 +122,7 @@ conn 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: 'chatRoomId' } @@ -135,7 +135,7 @@ conn.getChatRoomDetails(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: 'chatRoomId' } @@ -148,7 +148,7 @@ conn.destroyChatRoom(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript conn.addEventHandler("eventName", { onChatroomEvent: function(msg){ switch(msg.operation){ @@ -224,7 +224,7 @@ conn.addEventHandler("eventName", { 2. 收到通知事件后,可以通过事件回调参数获取聊天室当前人数。 -```javascript +```JavaScript conn.addEventHandler("CHATROOM", { onChatroomEvent: (e) => { switch (e.operation) { diff --git a/docs/document/web/room_members.md b/docs/document/web/room_members.md index 6f372939f..460ed6bd5 100644 --- a/docs/document/web/room_members.md +++ b/docs/document/web/room_members.md @@ -31,7 +31,7 @@ 示例代码如下: -```javascript +```JavaScript //pageNum:当前页码,从 1 开始。 //pageSize:每页期望返回的成员数,最大值为 1,000。 let option = { @@ -50,7 +50,7 @@ conn.listChatRoomMembers(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { roomId: 'roomId' } @@ -63,7 +63,7 @@ conn.leaveChatRoom(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", username: "userId" @@ -88,7 +88,7 @@ conn.removeChatRoomMember(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", }; @@ -105,7 +105,7 @@ conn.getChatRoomBlocklist(option); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: 'chatRoomId', usernames: ['user1', 'user2'] // 用户 ID 数组。 @@ -119,7 +119,7 @@ conn.blockChatRoomMembers(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", usernames: ["user1", "user2"] // 用户 ID 数组。 @@ -139,7 +139,7 @@ conn.unblockChatRoomMembers(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId" } @@ -156,7 +156,7 @@ conn.getChatRoomAllowlist(option).then(res => console.log(res)); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", userName: "user" @@ -170,7 +170,7 @@ conn.isInChatRoomAllowlist(option); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", users: ["user1", "user2"] // 成员 ID 列表。 @@ -184,7 +184,7 @@ conn.addUsersToChatRoomAllowlist(option); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", userName: "userId" @@ -202,7 +202,7 @@ conn.removeChatRoomAllowlistMember(option); 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId" }; @@ -219,7 +219,7 @@ conn.getChatRoomMuteList(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", // 聊天室 ID。 username: 'userId', // 被禁言的聊天室成员的 ID。 @@ -238,7 +238,7 @@ conn.muteChatRoomMember(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId", username: 'username' @@ -255,7 +255,7 @@ conn.unmuteChatRoomMember(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId" }; @@ -268,7 +268,7 @@ conn.disableSendChatRoomMsg(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: "chatRoomId" }; @@ -285,7 +285,7 @@ conn.enableSendChatRoomMsg(option).then((res) => { 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: 'chatRoomId', username: 'userId' @@ -299,7 +299,7 @@ conn.setChatRoomAdmin(option).then(res => console.log(res)) 示例代码如下: -```javascript +```JavaScript let option = { chatRoomId: 'chatRoomId', username: 'userId' diff --git a/docs/document/web/thread.md b/docs/document/web/thread.md index e9259a785..8d232c8dd 100644 --- a/docs/document/web/thread.md +++ b/docs/document/web/thread.md @@ -37,7 +37,7 @@ 示例代码如下: -```javascript +```JavaScript // 创建子区 conn.createChatThread({parentId: 'parentId',name: 'threadName',messageId: 'messageId'}) // 监听子区创建回调 @@ -56,7 +56,7 @@ conn.addEventHandler('THREAD',{ 示例代码如下: -```javascript +```JavaScript // 解散子区 conn.destroyChatThread({chatThreadId: 'chatThreadId'}) // 监听子区解散回调 @@ -80,7 +80,7 @@ conn.addEventHandler('THREAD',{ 示例代码如下: -```javascript +```JavaScript // 加入子区 conn.joinChatThread({chatThreadId: 'chatThreadId'}); ``` @@ -95,7 +95,7 @@ conn.joinChatThread({chatThreadId: 'chatThreadId'}); 示例代码如下: -```javascript +```JavaScript conn.leaveChatThread({chatThreadId: 'chatThreadId'}); ``` @@ -107,7 +107,7 @@ conn.leaveChatThread({chatThreadId: 'chatThreadId'}); 示例代码如下: -```javascript +```JavaScript // chatThreadId: 子区 ID // username: 子区成员的用户 ID conn.removeChatThreadMember({chatThreadId: 'chatThreadId',username:'username'}); @@ -121,7 +121,7 @@ conn.removeChatThreadMember({chatThreadId: 'chatThreadId',username:'username'}); 示例代码如下: -```javascript +```JavaScript // chatThreadId:子区 ID // name:修改后的子区名称,长度不超过 64 个字符 conn.changeChatThreadName({chatThreadId: 'chatThreadId',name: 'name'}) @@ -139,7 +139,7 @@ conn.addEventHandler('THREAD',{ 示例代码如下: -```javascript +```JavaScript // chatThreadID:子区 ID conn.getChatThreadDetail({chatThreadId: 'chatThreadId'}).then((res)=>{ console.log(res) @@ -150,7 +150,7 @@ conn.getChatThreadDetail({chatThreadId: 'chatThreadId'}).then((res)=>{ 子区所属群组的所有成员均可以调用 `getChatThreadMembers` 方法从服务器分页获取子区成员列表。 -```javascript +```JavaScript // chatThreadId:子区 ID // pageSize:单次请求返回的成员数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -163,7 +163,7 @@ conn.getChatThreadMembers({chatThreadId: 'chatThreadId ',pageSize:20,cursor:'cur 1. 用户可以调用 `getJoinedChatThreads` 方法从服务器分页获取自己加入的子区列表: -```javascript +```JavaScript // pageSize:单次请求返回的子区数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 conn.getJoinedChatThreads({cursor: 'cursor',pageSize: 20}).then((res)=>{ @@ -173,7 +173,7 @@ conn.getJoinedChatThreads({cursor: 'cursor',pageSize: 20}).then((res)=>{ 2. 用户可以调用 `getJoinedChatThreads` 方法从服务器分页获取指定群组中自己加入的子区列表: -```javascript +```JavaScript // parentId:群组 ID // pageSize:单次请求返回的子区数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -184,7 +184,7 @@ conn.getJoinedChatThreads({parentId: 'parentId',cursor: 'cursor',pageSize: 20}). 3. 用户还可以调用 `getChatThreads` 方法从服务器分页获取指定群组的子区列表: -```javascript +```JavaScript // parentId:群组 ID // pageSize:单次请求返回的子区数,取值范围为 [1,50] // cursor:开始获取数据的游标位置,首次调用方法时传 `null` 或空字符串 @@ -199,7 +199,7 @@ conn.getChatThreads({parentId: 'parentId', cursor:'cursor', pageSize: 20}).then( 示例代码如下: -```javascript +```JavaScript // chatThreadIds:要查询的子区 ID 列表,每次最多可传入 20 个子区 ID conn.getChatThreadLastMessage({chatThreadIds: ['chatThreadId1','chatThreadId2']}).then((res)=>{ console.log(res) @@ -212,7 +212,7 @@ SDK 提供 `addEventHandler` 方法用于注册监听事件。开发者可以通 示例代码如下: -```javascript +```JavaScript // 创建一个子区事件监听器 conn.addEventHandler("eventName", { onChatThreadChange: function (msg) { diff --git a/docs/document/web/thread_message.md b/docs/document/web/thread_message.md index d625473a9..c6bd4e948 100644 --- a/docs/document/web/thread_message.md +++ b/docs/document/web/thread_message.md @@ -48,7 +48,7 @@ 示例代码如下: -```javascript +```JavaScript // 在子区内发送文本消息 function sendTextMessage() { let option = { @@ -78,7 +78,7 @@ function sendTextMessage() { 示例代码如下: -```javascript +```JavaScript // 监听收到的文本消息 connection.addEventHandler('THREADMESSAGE',{ onTextMessage:(message) => { @@ -98,7 +98,7 @@ connection.addEventHandler('THREADMESSAGE',{ 示例代码如下: -```javascript +```JavaScript let option = { // 设置要撤回消息的 ID。 mid: 'msgId', @@ -129,7 +129,7 @@ conn.addEventHandler('MESSAGES',{ 调用 `getHistoryMessages` 方法从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```javascript +```JavaScript let options = { // 子区 ID。 targetId: "threadId", diff --git a/docs/document/web/user_relationship.md b/docs/document/web/user_relationship.md index eaefe005b..d3fb1061e 100644 --- a/docs/document/web/user_relationship.md +++ b/docs/document/web/user_relationship.md @@ -33,7 +33,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 1. 调用 `conn.addEventHandler()` 注册监听好友状态,示例代码如下: -```javascript +```JavaScript /** * `msg` 为触发回调后的结果。 * `contactEvent` 可自定义。 @@ -55,7 +55,7 @@ conn.addEventHandler("contactEvent", { 2. 调用 `addContact` 请求添加好友,示例代码如下: -```javascript +```JavaScript conn.addContact("userId", "加个好友呗!"); ``` @@ -64,7 +64,7 @@ conn.addContact("userId", "加个好友呗!"); 示例代码如下: - ```javascript + ```JavaScript conn.acceptContactInvite("userId"); ``` @@ -72,7 +72,7 @@ conn.addContact("userId", "加个好友呗!"); 示例代码如下: - ```javascript + ```JavaScript conn.declineContactInvite("userId"); ``` @@ -82,7 +82,7 @@ conn.addContact("userId", "加个好友呗!"); 你可以调用 `deleteContact` 方法删除好友,示例代码如下: -```javascript +```JavaScript conn.deleteContact("userId"); ``` @@ -94,7 +94,7 @@ conn.deleteContact("userId"); 好友备注的长度不能超过 100 个字符。 -```javascript +```JavaScript conn .setContactRemark({ userId: "userId", // 添加备注的目标好友的用户 ID @@ -114,7 +114,7 @@ conn - 一次性获取好友列表: -```javascript +```JavaScript conn .getAllContacts() .then((res) => { @@ -127,7 +127,7 @@ conn - 分页获取好友列表: -```javascript +```JavaScript conn .getContactsWithCursor({ pageSize: 20, // 每页期望获取的联系人数量。取值范围为 [1,50],默认为 `20`。 @@ -143,7 +143,7 @@ conn 此外,你可以调用 `getContacts` 方法从服务端一次性获取好友列表,该列表只包含好友的用户 ID。 -```javascript +```JavaScript conn.getContacts().then((res) => { console.log(res) // res.data > ['user1', 'user2'] }) @@ -155,7 +155,7 @@ conn.getContacts().then((res) => { 用户可以将任何其他用户添加到黑名单列表,无论该用户是否是好友。好友被加入黑名单后仍在好友列表上显示。 -```javascript +```JavaScript conn.addUsersToBlocklist({ //可以添加单个用户 ID 或批量添加多个用户 ID 组成的数组。 name: ["user1", "user2"], @@ -166,7 +166,7 @@ conn.addUsersToBlocklist({ 你可以调用 `removeUserFromBlocklist` 方法将用户移出黑名单,示例代码如下: -```javascript +```JavaScript conn.removeUserFromBlocklist({ //可以添加单个用户 ID 或批量添加多个用户 ID 组成的数组。 name: ["user1", "user2"], @@ -177,7 +177,7 @@ conn.removeUserFromBlocklist({ 你可以调用 `getBlocklist` 方法获取用户黑名单列表,示例代码如下: -```javascript +```JavaScript conn.getBlocklist().then((res) => { console.log(res); }); diff --git a/docs/document/web/userprofile.md b/docs/document/web/userprofile.md index 9450fc170..062a1c13b 100644 --- a/docs/document/web/userprofile.md +++ b/docs/document/web/userprofile.md @@ -41,7 +41,7 @@ 参考如下示例代码,设置所有用户属性: -```javascript +```JavaScript let option = { nickname: "The nickname", avatarurl: "https://avatarurl", @@ -62,7 +62,7 @@ conn.updateUserInfo(option).then((res) => { 参考如下示例代码,设置指定用户属性,例如昵称: -```javascript +```JavaScript conn.updateUserInfo("nickname", "Your nickname").then((res) => { console.log(res); }); @@ -87,7 +87,7 @@ conn.updateUserInfo("nickname", "Your nickname").then((res) => { 参考以下示例代码获取指定用户的所有属性: -```javascript +```JavaScript /** * @param {String|Array} users 用户 ID。可设置一个用户 ID,也可通过数组形式设置多个。 */ @@ -99,7 +99,7 @@ conn.fetchUserInfoById(users).then((res) => { 参考以下示例代码获取用户的指定属性。 -```javascript +```JavaScript /** * @param {String|Array} users 用户 ID。可设置一个用户 ID,也可通过数组形式设置多个。 * @param {String|Array} properties 查询的用户属性。 @@ -139,7 +139,7 @@ conn 参考以下示例代码创建和发送名片消息: -```javascript +```JavaScript // 将自定义事件类型设置为 `userCard`。 let customEvent = "userCard"; // 通过 `customExts` 将这些属性设置为自定义消息的扩展信息。 diff --git a/docs/document/windows/connection.md b/docs/document/windows/connection.md index 2f06217e1..60195aa36 100644 --- a/docs/document/windows/connection.md +++ b/docs/document/windows/connection.md @@ -8,7 +8,7 @@ 你可以通过注册连接监听确认连接状态。 -```csharp +```C# // 监听器建议在初始化完成之后,登录之前设置,这样可确保收到登录通知。 class ConnectionDelegate : IConnectionDelegate diff --git a/docs/document/windows/conversation_delete.md b/docs/document/windows/conversation_delete.md index 4e9bb7d8f..d104b7bd5 100644 --- a/docs/document/windows/conversation_delete.md +++ b/docs/document/windows/conversation_delete.md @@ -24,7 +24,7 @@ 你可以调用 `DeleteConversationFromServer` 方法删除服务器端会话,并选择是否删除服务端的历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息。调用该接口会删除本地会话。该接口不影响其他用户的会话和消息。 -```csharp +```C# // 如果需要保留服务端和本地的历史消息,`isDeleteServerMessages` 传 `false`。 SDKClient.Instance.ChatManager.DeleteConversationFromServer(conversationId, conversationType, isDeleteServerMessages, new CallBack( onSuccess: () => @@ -40,14 +40,14 @@ SDKClient.Instance.ChatManager.DeleteConversationFromServer(conversationId, conv - 你可以调用 `DeleteConversation` 方法删除本地会话及其聊天消息: -```csharp +```C# //如需保留历史消息,传 `false`。 SDKClient.Instance.ChatManager.DeleteConversation(conversationId, true); ``` - 你可以调用 `DeleteMessage` 方法删除指定会话中指定的一条历史消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.DeleteMessage(msgId); ``` diff --git a/docs/document/windows/conversation_list.md b/docs/document/windows/conversation_list.md index 898525ca2..6afe39fee 100644 --- a/docs/document/windows/conversation_list.md +++ b/docs/document/windows/conversation_list.md @@ -37,7 +37,7 @@ 3. 通过 RESTful 接口发送的消息默认不创建或写入会话。若会话中的最新一条消息通过 RESTful 接口发送,获取会话列表时,该会话中的最新一条消息显示为通过非 RESTful 接口发送的最新消息。若要开通 RESTful 接口发送的消息写入会话列表的功能,需在[环信即时通讯控制台开通](/product/enable_and_configure_IM.html#设置通过-restful-api-发送的消息写入会话列表)。 ::: -```csharp +```C# // limit: 每页返回的会话数。取值范围为 [1,50]。 // cursor: 开始获取数据的游标位置。若获取数据时传 `null` 或者空字符串(""),SDK 从最新活跃的会话开始查询。 int limit = 10; @@ -66,7 +66,7 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor(pinOnly, cur 若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本。 -```csharp +```C# SDKClient.Instance.ChatManager.GetConversationsFromServerWithPage(pageNum, pageSize, new ValueCallBack>( //获取会话成功后的处理逻辑。 //list 为 List 类型。 @@ -89,6 +89,6 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithPage(pageNum, pageS 示例代码如下: -```csharp +```C# Listlist = SDKClient.Instance.ChatManager.LoadAllConversations(); ``` \ No newline at end of file diff --git a/docs/document/windows/conversation_mark.md b/docs/document/windows/conversation_mark.md index dd8c3faad..06e3af496 100644 --- a/docs/document/windows/conversation_mark.md +++ b/docs/document/windows/conversation_mark.md @@ -8,7 +8,7 @@ 你需要自行维护会话标记与具体业务含义(比如 `MarkType0` 为重要会话)之间的映射关系。例如: -```csharp +```C# Dictionary dict = new Dictionary(); dict.Add(MarkType0, "important"); dict.Add(MarkType1, "normal"); @@ -47,7 +47,7 @@ dict.Add(MarkType4, "girls"); 对会话添加标记,例如会话标星,并不影响会话的其他逻辑,例如会话的未读消息数。 ::: -```csharp +```C# List list = new List(); list.Add("huanhuan"); bool isMarked = true; @@ -67,7 +67,7 @@ SDKClient.Instance.ChatManager.MarkConversations(list, isMarked, (MarkType)mark, 调用该方法会同时移除本地和服务器端会话的标记。 -```csharp +```C# List list = new List(); list.Add("huanhuan"); bool isMarked = false; @@ -85,7 +85,7 @@ SDKClient.Instance.ChatManager.MarkConversations(list, isMarked, (MarkType)mark, 你可以调用 `GetConversationsFromServerWithCursor` 方法根据会话标记从服务器分页获取会话列表。SDK 会按会话标记的时间的倒序返回会话列表,每个会话对象中包含会话 ID、会话类型、是否为置顶状态、置顶时间(对于未置顶的会话,值为 0)、会话标记以及最新一条消息。从服务端拉取会话列表后会更新本地会话列表。 -```csharp +```C# SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor((MarkType)mark, cursor, limit, new ValueCallBack>( onSuccess: (result) => { @@ -104,7 +104,7 @@ SDKClient.Instance.ChatManager.GetConversationsFromServerWithCursor((MarkType)ma 对于本地会话,你可以调用 `LoadAllConversations` 方法获取本地所有会话后自己进行会话过滤。下面以查询标记了 `EMConversation.EMMarkType.MARK_0` 的所有本地会话为例。 -```csharp +```C# //最终的查询结果全部放入 result 中。 List result = new List(); List localConversations = SDKClient.Instance.ChatManager.LoadAllConversations(); @@ -125,7 +125,7 @@ foreach(var conv in localConversations) 你可以调用 `Conversation#Marks` 方法获取本地单个会话的所有标记,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("conversationId", conversationType); List Marks = conv.Marks(); ``` diff --git a/docs/document/windows/conversation_overview.md b/docs/document/windows/conversation_overview.md index b849d4cc6..f81faaa0d 100644 --- a/docs/document/windows/conversation_overview.md +++ b/docs/document/windows/conversation_overview.md @@ -43,7 +43,7 @@ 示例代码如下: -```csharp +```C# public class ChatManagerDelegate : IChatManagerDelegate { // 收到会话已读的事件。该事件在以下场景中触发: // 1. 当消息接收方调用 `SendConversationReadAck` 方法,SDK 会执行此回调, diff --git a/docs/document/windows/conversation_pin.md b/docs/document/windows/conversation_pin.md index e4fd9bb3c..baf57cd67 100644 --- a/docs/document/windows/conversation_pin.md +++ b/docs/document/windows/conversation_pin.md @@ -31,7 +31,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.PinConversation(convId, isPinned, new CallBack( onSuccess: () => { diff --git a/docs/document/windows/conversation_receipt.md b/docs/document/windows/conversation_receipt.md index cb856a118..33bc4907a 100644 --- a/docs/document/windows/conversation_receipt.md +++ b/docs/document/windows/conversation_receipt.md @@ -29,7 +29,7 @@ 1. 开启已读回执功能,即 SDK 初始化时设置 `Options#RequireAck` 为 `true`。 - ```csharp + ```C# // 设置是否需要接受方已读确认,默认为 true options.RequireAck = true; ``` @@ -40,7 +40,7 @@ options.RequireAck = true; 若会话中存在多条未读消息,建议调用该方法,因为若调用发送消息已读回执方法 `SendMessageReadAck`,则需要调用多次。 -```csharp +```C# SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallBack( onSuccess: () => { @@ -59,7 +59,7 @@ SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallB 对于群组聊天,会话已读回执只用于清空服务端的群组会话的未读数,消息发送方不会通过 `OnConversationRead` 回调收到会话已读回执。 ::: -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... diff --git a/docs/document/windows/conversation_unread.md b/docs/document/windows/conversation_unread.md index bb3e7d3d1..dffb88ec5 100644 --- a/docs/document/windows/conversation_unread.md +++ b/docs/document/windows/conversation_unread.md @@ -27,7 +27,7 @@ 你可以调用 `GetUnreadMessageCount` 方法获取本地所有会话的未读消息数量,示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetUnreadMessageCount(); ``` @@ -35,7 +35,7 @@ SDKClient.Instance.ChatManager.GetUnreadMessageCount(); 你可以调用 `UnReadCount` 方法获取本地指定会话的未读消息数,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); int unread = conv.UnReadCount; ``` @@ -44,7 +44,7 @@ int unread = conv.UnReadCount; 你可以调用 `MarkAllConversationsAsRead` 方法将本地所有会话设为已读,即将所有会话的未读消息数清零,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); SDKClient.Instance.ChatManager.MarkAllConversationsAsRead(); ``` @@ -53,7 +53,7 @@ SDKClient.Instance.ChatManager.MarkAllConversationsAsRead(); 你可以调用 `MarkAllMessageAsRead` 方法对指定会话的未读消息数清零,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.MarkAllMessageAsRead(); ``` @@ -62,7 +62,7 @@ conv.MarkAllMessageAsRead(); 你可以调用 `markMessageAsRead` 方法将指定会话的单条未读消息置为已读。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.MarkMessageAsRead(msgId); ``` diff --git a/docs/document/windows/error.md b/docs/document/windows/error.md index d4aa33b46..30c35f436 100644 --- a/docs/document/windows/error.md +++ b/docs/document/windows/error.md @@ -13,7 +13,7 @@ 例如,注册时用户返回已存在的错误可以这样检测: -```csharp +```C# SDKClient.Instance.Login(username, passwd, callback: new CallBack( onSuccess: () => diff --git a/docs/document/windows/group_attributes.md b/docs/document/windows/group_attributes.md index ee129f3aa..da08cdef2 100644 --- a/docs/document/windows/group_attributes.md +++ b/docs/document/windows/group_attributes.md @@ -31,7 +31,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupName(groupId, groupName, new CallBack( onSuccess: () => { @@ -48,7 +48,7 @@ SDKClient.Instance.GroupManager.ChangeGroupName(groupId, groupName, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupDescription(groupId, description, new CallBack( onSuccess: () => { @@ -65,7 +65,7 @@ SDKClient.Instance.GroupManager.ChangeGroupDescription(groupId, description, new 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UpdateGroupAnnouncement(groupId, announcement, new CallBack( onSuccess: () => { @@ -82,7 +82,7 @@ SDKClient.Instance.GroupManager.UpdateGroupAnnouncement(groupId, announcement, n 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupAnnouncementFromServer(currentGroupId, new ValueCallBack( onSuccess: (str) => { @@ -101,7 +101,7 @@ SDKClient.Instance.GroupManager.GetGroupAnnouncementFromServer(currentGroupId, n 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UploadGroupSharedFile(groupId, filePath, new CallBack( onSuccess: () => { @@ -120,7 +120,7 @@ SDKClient.Instance.GroupManager.UploadGroupSharedFile(groupId, filePath, new Cal 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.DeleteGroupSharedFile(groupId, id, new CallBack( onSuccess: () => { @@ -137,7 +137,7 @@ SDKClient.Instance.GroupManager.DeleteGroupSharedFile(groupId, id, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupFileListFromServer(groupId, pageNum, pageSize, callback: new ValueCallBack> ( onSuccess: (fileList) => { @@ -154,7 +154,7 @@ SDKClient.Instance.GroupManager.GetGroupFileListFromServer(groupId, pageNum, pag 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UpdateGroupExt(currentGroupId, extension, new CallBack( onSuccess: () => { diff --git a/docs/document/windows/group_manage.md b/docs/document/windows/group_manage.md index 5a38d54af..bd3809cbf 100644 --- a/docs/document/windows/group_manage.md +++ b/docs/document/windows/group_manage.md @@ -54,7 +54,7 @@ 示例代码如下: -```csharp +```C# GroupOptions option = new GroupOptions(GroupStyle.PrivateMemberCanInvite); option.MaxCount = 100; SDKClient.Instance.GroupManager.CreateGroup(groupname, option, desc, members, callback:new ValueCallBack( @@ -85,7 +85,7 @@ SDKClient.Instance.GroupManager.CreateGroup(groupname, option, desc, members, ca 示例代码如下: -```csharp +```C# // 获取公开群组列表 SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(callback: new ValueCallBack>( //result 为 CursorResult @@ -117,7 +117,7 @@ SDKClient.Instance.GroupManager.JoinPublicGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.DestroyGroup(groupId, new CallBack( onSuccess: () => { @@ -134,7 +134,7 @@ SDKClient.Instance.GroupManager.DestroyGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.LeaveGroup(groupId, new CallBack( onSuccess: () => { @@ -157,7 +157,7 @@ SDKClient.Instance.GroupManager.LeaveGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# // 根据群组 ID 从本地获取群组详情。 Group group = SDKClient.Instance.GroupManager.GetGroupWithId(groupId); @@ -177,7 +177,7 @@ SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(groupId, new Val 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupMemberListFromServer(groupId, pageSize, cursor, callback: new ValueCallBack>( onSuccess: (result) => { @@ -192,7 +192,7 @@ SDKClient.Instance.GroupManager.GetGroupMemberListFromServer(groupId, pageSize, 用户可以调用 `FetchJoinedGroupsFromServer` 方法从服务器获取自己加入和创建的群组列表。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.FetchJoinedGroupsFromServer(callback: new ValueCallBack>( onSuccess: (groupList) => { }, @@ -204,13 +204,13 @@ SDKClient.Instance.GroupManager.FetchJoinedGroupsFromServer(callback: new ValueC 用户可以调用 `GetJoinedGroups` 方法加载本地群组列表。为了保证数据的正确性,需要先从服务器获取自己加入和创建的群组列表。示例代码如下: -```csharp +```C# List groupList = SDKClient.Instance.GroupManager.GetJoinedGroups(); ``` 用户还可以调用 `FetchPublicGroupsFromServer` 方法从服务器分页获取公开群组列表。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(pageSize, cursor, callback: new ValueCallBack>( onSuccess: (result) => { @@ -225,7 +225,7 @@ SDKClient.Instance.GroupManager.FetchPublicGroupsFromServer(pageSize, cursor, ca 自 1.3.0 版本开始,你可以调用 `FetchMyGroupsCount` 方法从服务器获取当前用户已加入的群组数量。单个用户可加入群组数量的上限取决于订阅的即时通讯的套餐包,详见[产品价格](/product/pricing.html#套餐包功能详情)。 -```csharp +```C# SDKClient.Instance.GroupManager.FetchMyGroupsCount(new ValueCallBack( onSuccess: (count) => { @@ -242,7 +242,7 @@ SDKClient.Instance.GroupManager.FetchMyGroupsCount(new ValueCallBack( 所有群成员均可以调用 `BlockGroup` 方法屏蔽群消息。屏蔽群消息后,该成员不再从指定群组接收群消息。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.BlockGroup(groupId, new CallBack( onSuccess: () => { @@ -257,7 +257,7 @@ SDKClient.Instance.GroupManager.BlockGroup(groupId, new CallBack( 群成员可以调用 `UnBlockGroup` 方法解除屏蔽群消息。示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnBlockGroup(groupId, new CallBack( onSuccess: () => { @@ -274,7 +274,7 @@ SDKClient.Instance.GroupManager.UnBlockGroup(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(currentGroupId, new ValueCallBack( onSuccess: (group) => { // 检查用户是否屏蔽了该群的消息 @@ -295,7 +295,7 @@ SDKClient.Instance.GroupManager.GetGroupSpecificationFromServer(currentGroupId, 示例代码如下: -```csharp +```C# // 实现监听器以及定义监听器对象 // 在本例中,用户 A 为当前用户。 public class GroupManagerDelegate : IGroupManagerDelegate { diff --git a/docs/document/windows/group_members.md b/docs/document/windows/group_members.md index feaa77426..a5af2f124 100644 --- a/docs/document/windows/group_members.md +++ b/docs/document/windows/group_members.md @@ -35,7 +35,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -52,7 +52,7 @@ SDKClient.Instance.GroupManager.AddGroupMembers(groupId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.DeleteGroupMembers(groupId, list, new CallBack ( onSuccess: () => { @@ -79,7 +79,7 @@ SDKClient.Instance.GroupManager.DeleteGroupMembers(groupId, list, new CallBack ( 示例代码如下: -```csharp +```C# Dictionary dict = new Dictionary(); dict.Add("key", "value"); @@ -105,7 +105,7 @@ SDKClient.Instance.GroupManager.SetMemberAttributes(groupId, userId, dict, new C 示例代码如下: -```csharp +```C# List userList = new List(); userList.Add("user"); @@ -134,7 +134,7 @@ SDKClient.Instance.GroupManager.FetchMemberAttributes(groupId, userList, keyList 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.ChangeGroupOwner(groupId, newOwner, new CallBack( onSuccess: () => { @@ -153,7 +153,7 @@ SDKClient.Instance.GroupManager.ChangeGroupOwner(groupId, newOwner, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupAdmin(groupId, adminId, new CallBack( onSuccess: () => { @@ -170,7 +170,7 @@ SDKClient.Instance.GroupManager.AddGroupAdmin(groupId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.RemoveGroupAdmin(groupId, adminId, new CallBack( onSuccess: () => { @@ -189,7 +189,7 @@ SDKClient.Instance.GroupManager.RemoveGroupAdmin(groupId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.BlockGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -206,7 +206,7 @@ SDKClient.Instance.GroupManager.BlockGroupMembers(groupId, members, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnBlockGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -223,7 +223,7 @@ SDKClient.Instance.GroupManager.UnBlockGroupMembers(groupId, members, new CallBa 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupBlockListFromServer(groupId, pageNum, pageSize, callback: new ValueCallBack>( onSuccess: (list) => { @@ -242,7 +242,7 @@ SDKClient.Instance.GroupManager.GetGroupBlockListFromServer(groupId, pageNum, pa 示例代码如下: -```csharp +```C# // muteMilliseconds:禁言时间。若传 -1,表示永久禁言。 SDKClient.Instance.GroupManager.MuteGroupMembers(groupId, members, new CallBack( onSuccess: () => @@ -260,7 +260,7 @@ SDKClient.Instance.GroupManager.MuteGroupMembers(groupId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnMuteGroupMembers(groupId, members, new CallBack( onSuccess: () => { @@ -277,7 +277,7 @@ SDKClient.Instance.GroupManager.UnMuteGroupMembers(groupId, members, new CallBac 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupMuteListFromServer(groupId, callback: new ValueCallBack>( onSuccess: (dict) => { }, @@ -297,7 +297,7 @@ SDKClient.Instance.GroupManager.GetGroupMuteListFromServer(groupId, callback: ne 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.MuteGroupAllMembers(groupId, new CallBack( onSuccess: () => { }, @@ -311,7 +311,7 @@ SDKClient.Instance.GroupManager.MuteGroupAllMembers(groupId, new CallBack( 仅群主和群管理员可以调用 `UnMuteGroupAllMembers` 方法取消全员禁言,示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.UnMuteGroupAllMembers(groupId, new CallBack( onSuccess: () => { }, @@ -331,7 +331,7 @@ SDKClient.Instance.GroupManager.UnMuteGroupAllMembers(groupId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.AddGroupAllowList(groupId, members, new CallBack( onSuccess: () => { }, @@ -347,7 +347,7 @@ SDKClient.Instance.GroupManager.AddGroupAllowList(groupId, members, new CallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.RemoveGroupAllowList(groupId, members, new CallBack( onSuccess: () => { }, @@ -361,7 +361,7 @@ SDKClient.Instance.GroupManager.RemoveGroupAllowList(groupId, members, new CallB 所有群成员可以调用 `CheckIfInGroupAllowList` 方法检查自己是否在群白名单中,示例代码如下: -```csharp +```C# public void CheckIfInGroupAllowList(final String groupId, EMValueCallBack callBack) SDKClient.Instance.GroupManager.CheckIfInGroupAllowList(groupId, new ValueCallBack( onSuccess: (ret) => { @@ -377,7 +377,7 @@ SDKClient.Instance.GroupManager.CheckIfInGroupAllowList(groupId, new ValueCallBa 示例代码如下: -```csharp +```C# SDKClient.Instance.GroupManager.GetGroupAllowListFromServer(currentGroupId, callback: new ValueCallBack>( onSuccess: (list) => { }, diff --git a/docs/document/windows/initialization.md b/docs/document/windows/initialization.md index 5fd987866..f6221562c 100644 --- a/docs/document/windows/initialization.md +++ b/docs/document/windows/initialization.md @@ -16,7 +16,7 @@ 初始化示例代码: -```csharp +```C# var options = new Options("appkey"); //将该参数设置为你的 App Key //其他 Options 配置。 SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/windows/log.md b/docs/document/windows/log.md index a66c613e5..72f37ac9c 100644 --- a/docs/document/windows/log.md +++ b/docs/document/windows/log.md @@ -10,7 +10,7 @@ SDK 默认不输出调试信息(所有日志,包括调试信息、警告和错误),只需输出错误日志。若需调试信息,首先要开启调试模式。 -```csharp +```C# Options options = new Options("YourAppKey"); options.DebugMode = true; SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/windows/login.md b/docs/document/windows/login.md index 48bc78e95..d287c605d 100644 --- a/docs/document/windows/login.md +++ b/docs/document/windows/login.md @@ -10,7 +10,7 @@ 示例代码如下所示: -```csharp +```C# SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( @@ -37,7 +37,7 @@ SDKClient.Instance.CreateAccount(username, password, 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 -```csharp +```C# SDKClient.Instance.LoginWithToken(username, token, true, callback: new CallBack( @@ -63,7 +63,7 @@ SDKClient.Instance.LoginWithToken(username, token, true, 2. **用户 ID + 密码**登录是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合[密码规则要求](/document/server-side/account_system.html#开放注册单个用户)。 -```csharp +```C# SDKClient.Instance.Login(username, password, callback: new CallBack( @@ -106,7 +106,7 @@ SDKClient.Instance.Login(username, password, 异步方法: -```csharp +```C# SDKClient.Instance.Logout(false, callback: new CallBack( onSuccess: () => diff --git a/docs/document/windows/message_delete.md b/docs/document/windows/message_delete.md index b5c313b19..36700c5c6 100644 --- a/docs/document/windows/message_delete.md +++ b/docs/document/windows/message_delete.md @@ -31,7 +31,7 @@ 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# bool clearServerData = false; // or true SDKClient.Instance.ChatManager.DeleteAllMessagesAndConversations(clearServerData, new CallBack( onSuccess: () => @@ -53,7 +53,7 @@ SDKClient.Instance.ChatManager.DeleteAllMessagesAndConversations(clearServerData 若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本。 ::: -```csharp +```C# // 按时间删除历史消息 SDKClient.Instance.ChatManager.RemoveMessagesFromServer(convId, ctype, time, new CallBack( onSuccess: () => @@ -78,7 +78,7 @@ SDKClient.Instance.ChatManager.RemoveMessagesFromServer(convId, ctype, msgList, 你可以删除本地指定会话的所有消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteAllMessages()){ @@ -93,7 +93,7 @@ else{ 你可以删除本地指定会话在一段时间内的本地消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteMessages(startTime, endTime)) { @@ -108,7 +108,7 @@ else { 你可以删除本地单个会话的指定消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversionId, conversationType); if (conv.DeleteMessage(msgid)){ diff --git a/docs/document/windows/message_deliver_only_online.md b/docs/document/windows/message_deliver_only_online.md index f613d7e6e..ee127cc39 100644 --- a/docs/document/windows/message_deliver_only_online.md +++ b/docs/document/windows/message_deliver_only_online.md @@ -27,7 +27,7 @@ 下面以发送文本消息为例进行说明: -```csharp +```C# // 创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊时为对端用户 ID、群聊时为群组 ID。 Message message = Message.CreateTextSendMessage(conversationId, content); diff --git a/docs/document/windows/message_forward.md b/docs/document/windows/message_forward.md index 780fa825c..2f7aa2f2b 100644 --- a/docs/document/windows/message_forward.md +++ b/docs/document/windows/message_forward.md @@ -30,7 +30,7 @@ 该功能也支持转发单条合并消息。 ::: -```csharp +```C# // messageId 为要转发的消息 ID。 //string messageId = "xxx"; diff --git a/docs/document/windows/message_import_insert.md b/docs/document/windows/message_import_insert.md index 2af695dfe..215f708bb 100644 --- a/docs/document/windows/message_import_insert.md +++ b/docs/document/windows/message_import_insert.md @@ -30,7 +30,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.ImportMessages(messages, new CallBack( onSuccess: () => { }, @@ -46,7 +46,7 @@ SDKClient.Instance.ChatManager.ImportMessages(messages, new CallBack( 消息会根据消息中的 Unix 时间戳插入本地数据库,SDK 会更新会话的 `latestMessage` 等属性。 -```csharp +```C# // 将消息插入到指定会话中。 Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); conv.InsertMessage(message); diff --git a/docs/document/windows/message_modify.md b/docs/document/windows/message_modify.md index 7bbd613a6..95b648903 100644 --- a/docs/document/windows/message_modify.md +++ b/docs/document/windows/message_modify.md @@ -36,7 +36,7 @@ 示例代码如下: -```csharp +```C# TextBody tb = new TextBody("new content"); SDKClient.Instance.ChatManager.ModifyMessage(msgId, tb, new ValueCallBack( onSuccess: (dmsg) => @@ -51,7 +51,7 @@ ``` 消息修改后,消息的接收方会收到 `IChatManagerDelegate#OnMessageContentChanged` 事件,该事件中会携带修改后的消息对象、最新一次修改消息的用户以及消息的最新修改时间。对于群聊会话,除了修改消息的用户,群组内的其他成员均会收到该事件。 -```csharp +```C# // 继承并实现 `IChatManagerDelegate`。 public class ChatManagerDelegate : IChatManagerDelegate { diff --git a/docs/document/windows/message_pin.md b/docs/document/windows/message_pin.md index 61a154651..83ae8022b 100644 --- a/docs/document/windows/message_pin.md +++ b/docs/document/windows/message_pin.md @@ -31,7 +31,7 @@ 对于单个会话来说,默认可置顶 20 条消息。你可以联系环信商务提升该上限,最大可调整至 100。 -```csharp +```C# bool isPinned = true; SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( onSuccess: () => @@ -49,7 +49,7 @@ SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( 群组或聊天室中的所有成员均可取消置顶消息,不论该消息由哪个成员置顶。取消置顶消息后,`Message#PinnedInfo` 获取到的信息中 `PinnedBy` 为空,`PinnedAt` 为`0`,该会话的置顶消息列表中也不再包含该消息。 -```csharp +```C# bool isPinned = false; SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( onSuccess: () => @@ -70,7 +70,7 @@ SDKClient.Instance.ChatManager.PinMessage(msgId, isPinned, new CallBack( 2. 若消息置顶后,用户撤回了该消息,则该消息从服务端移除,所有用户在从服务器拉取置顶消息列表时无法拉取到该消息。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.GetPinnedMessagesFromServer(convId, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) @@ -90,7 +90,7 @@ SDKClient.Instance.ChatManager.GetPinnedMessagesFromServer(convId, new ValueCall - 若消息为置顶状态,该类返回消息置顶的时间以及操作者的用户 ID。 - 若消息为非置顶状态,则 `PinnedInfo` 中的 `PinnedBy` 为空,`PinnedAt` 为 `0`。 -```csharp +```C# PinnedInfo pinnedInfo = msg.PinnedInfo; string operatorId = pinnedInfo.PinnedBy; long pinTime = pinnedInfo.PinnedAt; @@ -105,7 +105,7 @@ if (operatorId.CompareTo("") != 0 && pinTime != 0) ## 监听消息置顶事件 -```csharp +```C# public class ChatManagerDelegate : IChatManagerDelegate { // 实现 IChatManagerDelegate 中的其它功能 diff --git a/docs/document/windows/message_recall.md b/docs/document/windows/message_recall.md index 46362d25d..b326f3ad5 100644 --- a/docs/document/windows/message_recall.md +++ b/docs/document/windows/message_recall.md @@ -36,7 +36,7 @@ 2. 附件类型消息,包括图片、音频和视频和文件消息,撤回消息后,消息附件也相应删除。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.RecallMessage("Message ID", "Please ignore the message", new CallBack( onSuccess: () => { Debug.Log("回撤成功"); @@ -57,6 +57,6 @@ SDKClient.Instance.ChatManager.RecallMessage("Message ID", "Please ignore the me - 若用户在线接收了消息,消息撤回时,该事件中的 `RecallMessageInfo` 中的 `RecallMessage` 为撤回的消息的内容,`RecallMessageId` 属性返回撤回的消息的 ID。 - 若消息发送和撤回时接收方离线,该事件中的 `RecallMessageInfo` 中的 `RecallMessage` 为空,`RecallMessageId` 属性返回撤回的消息的 ID。 -```csharp +```C# void OnMessagesRecalled(List recallMessagesInfo); ``` \ No newline at end of file diff --git a/docs/document/windows/message_receipt.md b/docs/document/windows/message_receipt.md index 926e74438..28559a453 100644 --- a/docs/document/windows/message_receipt.md +++ b/docs/document/windows/message_receipt.md @@ -46,7 +46,7 @@ 1. 开启消息送达功能,即 SDK 初始化时将 `Options#RequireDeliveryAck` 设置为 `true`。 -```csharp +```C# // 设置是否需要接收方送达确认,默认 `false` 即不需要。 options.RequireDeliveryAck = true; ``` @@ -55,7 +55,7 @@ options.RequireDeliveryAck = true; 3. 发送方监听 `IChatManagerDelegate#OnMessagesDelivered` 事件,收到接收方的送达回执。你可以在收到该通知时,显示消息的送达状态。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -87,7 +87,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 参考如下步骤在单聊中实现消息已读回执。 1. App 开启已读回执功能,即 SDK 初始化时将 `Options#RequireAck` 设置为 `true`。 -```csharp +```C# // 设置是否需要接受方已读确认,默认为true options.RequireAck = true; ``` @@ -96,7 +96,7 @@ options.RequireAck = true; - 聊天页面未打开时,若有未读消息,进入聊天页面,发送会话已读回执。这种方式可避免发送多个消息已读回执。 -```csharp +```C# SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallBack( onSuccess: () => { @@ -111,7 +111,7 @@ SDKClient.Instance.ChatManager.SendConversationReadAck(conversationId, new CallB - 聊天页面打开时,若收到消息,发送单条消息已读回执。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -167,7 +167,7 @@ public void SendReadAck(Message message) 消息发送方可以通过 `IChatManagerDelegate#OnMessagesRead` 事件监听指定消息是否已读,示例代码如下: -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -206,7 +206,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 1. 开启已读回执功能,即 SDK 初始化时将 `Options#RequireAck` 设置为 `true`。 该功能开启后,接收方阅读消息后,SDK 底层会自动进行消息已读回执。 -```csharp +```C# // 设置是否需要接受方已读确认,默认为 `true`。 options.RequireAck = true; ``` @@ -215,14 +215,14 @@ options.RequireAck = true; 与单聊消息的 app 层级设置已读回执功能不同,群聊消息是在发送消息时设置指定消息是否需要已读回执。 -```csharp +```C# Message msg = Message.CreateTextSendMessage(to, content); msg.IsNeedGroupAck = true; ``` 3. 消息接收方发送群组消息的已读回执。 -```csharp +```C# public void sendAckMessage(EMMessage message) { if (message.HasReadAck) { @@ -256,7 +256,7 @@ public void sendAckMessage(EMMessage message) { 发送方接收到群组消息已读回执后,其发出消息的属性 `Message#GroupAckCount` 会有相应变化。 -```csharp +```C# public class MyDelegate : IChatManagerDelegate { //... @@ -280,7 +280,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(myDelegate); 你可以调用 `ChatManager#FetchGroupReadAcks` 方法从服务器获取单条消息的已读回执的详情。 -```csharp +```C# //messageId 消息 ID。 //groupId 群组 ID。 //pageSize 每页获取群消息已读回执的条数。取值范围[1,50]。 diff --git a/docs/document/windows/message_retrieve.md b/docs/document/windows/message_retrieve.md index 2c8a945ee..9d79926ff 100644 --- a/docs/document/windows/message_retrieve.md +++ b/docs/document/windows/message_retrieve.md @@ -48,7 +48,7 @@ 3. 历史消息在服务器上的存储时间与产品的套餐包相关,详见[产品套餐包详情](/product/pricing.html#套餐包功能详情)。 ::: -```csharp +```C# FetchServerMessagesOption option = new FetchServerMessagesOption(); // 消息搜索方向。`UP` 表示按消息时间戳递减的方向获取,即先获取最新消息;`DOWN` 表示按消息时间戳递增的方向获取,即先获取最老的消息。 option.Direction = MessageSearchDirection.UP; @@ -88,7 +88,7 @@ 为确保数据可靠,我们建议你多次调用该方法,且每次获取的消息数小于 50 条。获取到数据后,SDK 会自动将消息更新到本地数据库。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, type, startId, pageSize, new ValueCallBack>( // 获取历史消息成功。 // result 为 CursorResult 类型。 @@ -105,7 +105,7 @@ SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, ty 你可以从本地数据库中读取指定会话的消息,示例代码如下: -```csharp +```C# // 获取本地会话。 Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, convType); // 该方法获取 `startMsgId` 之前的 `pagesize` 条消息。 @@ -123,7 +123,7 @@ conv.LoadMessages(startMsgId, pagesize, callback:new ValueCallBack 你可以调用 `LoadMessage` 方法根据消息 ID 获取本地存储的指定消息。如果消息不存在会返回空值。 -```csharp +```C# // msgId:要获取消息的消息 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("msgId"); ``` @@ -134,7 +134,7 @@ Message msg = SDKClient.Instance.ChatManager.LoadMessage("msgId"); 每次最多可获取 400 条消息。若未获取到任何消息,SDK 返回空列表。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); // type:消息类型;count:每次获取的消息数量,取值范围为 [1,400];direction:消息搜索方向:(默认)`UP`:按消息时间戳的逆序搜索;`DOWN`:按消息时间戳的正序搜索。 conv.LoadMessagesWithMsgType(type: MessageBodyType.TXT, count: 50, direction: MessageSearchDirection.UP, new ValueCallBack>( @@ -155,7 +155,7 @@ conv.LoadMessagesWithMsgType(type: MessageBodyType.TXT, count: 50, direction: Me 每次最多可获取 400 条消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); // startTime:搜索的起始时间戳;endTime:搜索的结束时间戳;count:每次获取的消息数量,取值范围为 [1,400]。 conv.LoadMessagesWithTime(startTime: startTime, endTime: endTime, count: 50, new ValueCallBack>( diff --git a/docs/document/windows/message_search.md b/docs/document/windows/message_search.md index f735c35d0..db23a8451 100644 --- a/docs/document/windows/message_search.md +++ b/docs/document/windows/message_search.md @@ -25,7 +25,7 @@ 你可以调用 `LoadMessagesWithKeyword` 方法根据关键字搜索本地数据库中单个会话中指定用户发送的消息,示例代码如下: -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation("convId"); conv.LoadMessagesWithKeyword( @@ -60,7 +60,7 @@ conv.LoadMessagesWithKeyword( 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# SDKClient.Instance.ChatManager.SearchMsgFromDB("keywords", -1, 10, "from", MessageSearchDirection.UP, MessageSearchScope.CONTENT, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) @@ -80,7 +80,7 @@ SDKClient.Instance.ChatManager.SearchMsgFromDB("keywords", -1, 10, "from", Messa 若使用该功能,需将 SDK 升级至 V1.3.0 或以上版本。 ::: -```csharp +```C# conv.LoadMessagesWithScope("keywords", MessageSearchScope.CONTENT, -1, 10, "from", MessageSearchDirection.UP, new ValueCallBack>( onSuccess: (list) => { foreach (var it in list) diff --git a/docs/document/windows/message_send_receive.md b/docs/document/windows/message_send_receive.md index 1634e3df1..0bf54b5b1 100644 --- a/docs/document/windows/message_send_receive.md +++ b/docs/document/windows/message_send_receive.md @@ -53,7 +53,7 @@ 示例代码: -```csharp +```C# //创建一条文本消息,`content` 为消息文字内容。 // `conversationId` 为消息接收方,单聊为对端用户的 ID,群聊为群组 ID,聊天室时为聊天室 ID。 Message msg = Message.CreateTextSendMessage(conversationId, content); @@ -91,7 +91,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 对于聊天室消息,你可以通过消息的 `Message#Broadcast` 属性判断该消息是否为[通过 REST API 发送的聊天室全局广播消息](/document/server-side/message_chatroom.html#发送聊天室全局广播消息)。 -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -120,7 +120,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 参考如下示例代码创建并发送语音消息: -```csharp +```C# // localPath 为语音文件的本地资源路径,`displayName` 为消息显示名称,语音消息可以设置为空 ""。 // fileSize 为语音文件大小,duration 为语音时长(秒)。 Message msg = Message.CreateVoiceSendMessage(toChatUsername, localPath, displayName, fileSize, duration); @@ -147,7 +147,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 接收方收到语音消息后,参考如下示例代码获取语音消息的附件: -```csharp +```C# // 注意:这里的 "Message ID" 是消息发送成功以后(CallBack 中的 onSuccess 被触发以后),被发送消息的 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("Message ID"); if (msg != null) @@ -171,7 +171,7 @@ else { 参考如下示例代码,创建并发送图片消息: -```csharp +```C# //`localPath` 为图片本地资源路径。 //`displayName` 为图片显示名称。 //`fileSize` 为用户上传的图片文件大小,单位为字节。 @@ -200,7 +200,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 接收方收到图片消息后,参考如下示例代码获取图片消息的缩略图和附件: -```csharp +```C# //注意:这里的 "Message ID" 是消息发送成功以后(`CallBack` 中的 `onSuccess` 被触发以后),被发送消息的 ID。 Message msg = SDKClient.Instance.ChatManager.LoadMessage("Message ID"); if (msg != null) @@ -235,7 +235,7 @@ else { 参考如下示例代码,创建并发送短视频消息: -```csharp +```C# Message msg = Message.CreateVideoSendMessage(toChatUsername, localPath, displayName, thumbnailLocalPath, fileSize, duration, width, height); //发送消息。 @@ -261,7 +261,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 短视频文件本身需要通过 `SDKClient.Instance.ChatManager.DownloadAttachment` 下载,下载完成后,使用相应消息 `Body` 的 `LocalPath` 成员获取短视频文件路径。 -```csharp +```C# // 接收到视频消息需先下载附件才能打开。 SDKClient.Instance.ChatManager.DownloadAttachment("Message ID", new CallBack( onSuccess: () => { @@ -295,7 +295,7 @@ SDKClient.Instance.ChatManager.DownloadAttachment("Message ID", new CallBack( 参考如下示例代码创建并发送文件消息: -```csharp +```C# // localPath 为文件本地路径,displayName 为消息显示名称,fileSize 为文件大小。 Message msg = Message.CreateFileSendMessage(toChatUsername,localPath, displayName, fileSize); @@ -341,7 +341,7 @@ else { 当你需要发送位置时,需要集成第三方的地图服务,获取到位置点的经纬度信息。接收方接收到位置消息时,需要将该位置的经纬度,借由第三方的地图服务,将位置在地图上显示出来。 -```csharp +```C# //`latitude` 为纬度,`longitude` 为经度,`locationAddress` 为具体位置内容,`buildingName` 为建筑名称。 Message msg = Message.CreateLocationSendMessage(toChatUsername, latitude, longitude, locationAddress, buildingName); @@ -363,7 +363,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 透传消息发送后,不支持撤回。 ::: -```csharp +```C# //`action` 可以自定义。 string action = "actionXXX"; Message msg = Message.CreateCmdSendMessage(toChatUsername, action); @@ -379,7 +379,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 请注意透传消息的接收方,也是由单独的回调进行通知,方便用户进行不同的处理。 -```csharp +```C# // 继承并实现 `IChatManagerDelegate`。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -423,7 +423,7 @@ SDKClient.Instance.ChatManager.AddChatManagerDelegate(adelegate); 以下示例代码展示如何发送输入状态的透传消息。 -```csharp +```C# //发送表示正在输入的透传消息 string msgTypingBegin = "TypingBegin"; @@ -449,7 +449,7 @@ void _sendBeginTyping() { 以下示例代码展示如何接受和解析输入状态的透传消息。 -```csharp +```C# int typingTime = 10; void OnCmdMessagesReceived(List list) { @@ -474,7 +474,7 @@ void OnCmdMessagesReceived(List list) { 除了几种消息之外,你可以自己定义消息类型,方便业务处理,即首先设置一个消息类型名称,然后可添加多种自定义消息。 -```csharp +```C# //`event` 为字符串类型的自定义事件,比如礼物消息,可以设置: string event = "gift"; @@ -523,7 +523,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 示例代码如下: -```csharp +```C# String title = "A和B的聊天记录"; String summary = "A:这是A的消息内容\nB:这是B的消息内容"; String compatibleText = "您当前的版本不支持该消息,请升级到最新版本"; @@ -552,7 +552,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( - 若附件已存在,该方法会直接解析附件并返回原始消息列表。 - 若附件不存在,该方法首先下载附件,然后解析附件并返回原始消息列表。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchCombineMessageDetail(msg, new ValueCallBack>( onSuccess: (list) => { // 处理并展示消息列表 @@ -584,7 +584,7 @@ SDKClient.Instance.ChatManager.FetchCombineMessageDetail(msg, new ValueCallBack< 下面以文本消息为例介绍如何发送定向消息,示例代码如下: -```csharp +```C# // 创建一条文本消息。 Message msg = Message.CreateTextSendMessage(groupId, content); // 会话类型:群组和聊天室聊天,分别为 `Group` 和 `Room`。 @@ -615,7 +615,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 当目前消息类型不满足用户需求时,可以在扩展部分保存更多信息,例如消息中需要携带被回复的消息内容或者是图文消息等场景。 -```csharp +```C# Message msg = Message.CreateTextSendMessage(toChatUsername, content); // 增加自定义属性。 diff --git a/docs/document/windows/message_translation.md b/docs/document/windows/message_translation.md index 4c4623953..348716722 100644 --- a/docs/document/windows/message_translation.md +++ b/docs/document/windows/message_translation.md @@ -30,7 +30,7 @@ SDK 支持你通过调用 API 在项目中实现如下功能: 无论是按需翻译还是自动翻译,都需先调用 `FetchSupportLanguages` 获取支持的翻译语言。示例代码如下: -```csharp +```C# // 获取翻译服务支持的语言。 SDKClient.Instance.ChatManager.FetchSupportLanguages(new ValueCallBack>( onSuccess: (list) => @@ -52,7 +52,7 @@ SDKClient.Instance.ChatManager.FetchSupportLanguages(new ValueCallBack( onSuccess: (dmsg) => { @@ -75,7 +75,7 @@ SDKClient.Instance.ChatManager.TranslateMessage(msg, targetLanguages, new ValueC 创建消息时,发送方设置 `TextBody` 中的 `TargetLanguages` 字段为译文语言,设置过程如下: -```csharp +```C# Message msg = Message.CreateTextSendMessage(to, text); TextBody tb = (TextBody)msg.Body; tb.TargetLanguages = languageList; @@ -85,7 +85,7 @@ tb.TargetLanguages = languageList; 接收方收到消息后,接收方从 `TextBody` 中获取消息的译文列表,示例代码如下: -```csharp +```C# TextBody tb = (TextBody)msg.Body; foreach(var it in tb.Translations) { diff --git a/docs/document/windows/message_update.md b/docs/document/windows/message_update.md index fc8fc112b..3726c4d4b 100644 --- a/docs/document/windows/message_update.md +++ b/docs/document/windows/message_update.md @@ -25,13 +25,13 @@ - 直接调用 `UpdateMessage` 方法更新 SDK 本地数据库中的消息。 -```csharp +```C# SDKClient.Instance.ChatManager.UpdateMessage(message): ``` - 若正在使用 `Conversation` 类,可以先获取会话,再调用 `UpdateMessage` 方法更新 SDK 本地数据库会话中的消息。 -```csharp +```C# Conversation conv = SDKClient.Instance.ChatManager.GetConversation(conversationId, type); conv.UpdateMessage(message); ``` diff --git a/docs/document/windows/moderation.md b/docs/document/windows/moderation.md index 869989db4..002865f43 100644 --- a/docs/document/windows/moderation.md +++ b/docs/document/windows/moderation.md @@ -27,7 +27,7 @@ 举报违规消息的示例代码如下: -```csharp +```C# // msgId:要举报的消息 ID。 // tag:非法消息的标签。你需要自定义标签,例如`涉政`或`广告`。该字段对应环信即时通讯云控制台的消息举报记录页面的`词条标记`字段。 // reason:举报原因。你需要自行填写举报原因,最长不能超过 512 字节。该字段对应环信即时通讯云控制台的消息举报记录页面的`举报原因`字段。 diff --git a/docs/document/windows/multi_device.md b/docs/document/windows/multi_device.md index 73b676c77..e3c4bdf03 100644 --- a/docs/document/windows/multi_device.md +++ b/docs/document/windows/multi_device.md @@ -63,7 +63,7 @@ 你可以调用 `GetSelfIdsOnOtherPlatform` 方法获取其他登录设备的登录 ID 列表,然后选择目标登录 ID 作为消息接收方向指定设备发送消息。 -```csharp +```C# SDKClient.Instance.ContactManager.GetSelfIdsOnOtherPlatform(new ValueCallBack>( onSuccess: (list) => { @@ -96,7 +96,7 @@ SDKClient.Instance.ContactManager.GetSelfIdsOnOtherPlatform(new ValueCallBack
  • >( @@ -142,7 +142,7 @@ SDKClient.Instance.GetLoggedInDevicesFromServerWithToken(username, token, 登录成功后才会将该设置发送到服务器。 ::: -```csharp +```C# // 设置设备名称并进行初始化 Options options = new Options("YouAppKey"); ooptions.CustomDeviceName = "MyDeviceName"; @@ -183,7 +183,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 登录成功后才会将该设置发送到服务器。 ::: -```csharp +```C# Options options = new Options("YouAppKey"); options.CustomOSType = 1; SDKClient.Instance.InitWithOptions(options); @@ -198,7 +198,7 @@ SDKClient.Instance.InitWithOptions(options); 不登录也可以使用该接口。 ::: -```csharp +```C# // username:账户名称,password:账户密码。 SDKClient.Instance.GetLoggedInDevicesFromServer(username, password, callback: new ValueCallBack>( @@ -257,7 +257,7 @@ SDKClient.Instance.KickDeviceWithToken(username, token, resource, 不登录也可以使用该接口。 ::: -```csharp +```C# SDKClient.Instance.KickAllDevices(username, password, callback: new CallBack( @@ -299,7 +299,7 @@ SDKClient.Instance.KickAllDevicesWithToken(username, token, 多端多设备场景下,无聊天室操作相关事件,只支持聊天室中发送和接收消息的同步。 ::: -```csharp +```C# //继承并实现 IMultiDeviceDelegate。 public class MultiDeviceDelegate : IMultiDeviceDelegate { public void onContactMultiDevicesEvent(MultiDevicesOperation operation, string target, string ext) { diff --git a/docs/document/windows/overview.md b/docs/document/windows/overview.md index af96a5145..5482353cd 100644 --- a/docs/document/windows/overview.md +++ b/docs/document/windows/overview.md @@ -20,7 +20,7 @@ 初始化示例代码: -```csharp +```C# Options options = new Options(appkey); options.AutoLogin = false; options.UsingHttpsOnly = true; @@ -63,7 +63,7 @@ SDKClient.Instance.InitWithOptions(options); 若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。 -```csharp +```C# SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( @@ -97,7 +97,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录: 1. **用户 ID + 密码** 登录是传统的登录方式。 -```csharp +```C# SDKClient.Instance.Login(username, password, callback: new CallBack( @@ -127,7 +127,7 @@ SDKClient.Instance.Login(username, password, 使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。 ::: -```csharp +```C# SDKClient.Instance.Login(username, token, true, callback: new CallBack( @@ -160,7 +160,7 @@ SDKClient.Instance.Login(username, token, true, 登出也是异步返回。 -```csharp +```C# SDKClient.Instance.Logout(false, callback: new CallBack( onSuccess: () => @@ -180,7 +180,7 @@ SDKClient.Instance.Logout(false, 你需添加 `IConnectionDelegate#OnConnected` 回调。 -```csharp +```C# // 监听器建议在初始化完成之后,登录之前设置,这样可确保收到登录通知。 class ConnectionDelegate : IConnectionDelegate { @@ -255,7 +255,7 @@ SDKClient.Instance.DeleteConnectionDelegate(connectionDelegate); SDK 默认不输出调试信息(所有日志,包括调试信息、警告和错误),只需输出错误日志。若需调试信息,首先要开启调试模式。 -```csharp +```C# Options options = new Options("YourAppKey"); options.DebugMode = true; SDKClient.Instance.InitWithOptions(options); diff --git a/docs/document/windows/presence.md b/docs/document/windows/presence.md index 2a795842e..0c433348d 100644 --- a/docs/document/windows/presence.md +++ b/docs/document/windows/presence.md @@ -50,7 +50,7 @@ 默认情况下,你不关注任何其他用户的在线状态。你可以通过调用 `PresenceManager#SubscribePresences` 方法订阅指定用户的在线状态,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.SubscribePresences(members, expiry, new ValueCallBack>( onSuccess: (list) => { @@ -84,7 +84,7 @@ SDKClient.Instance.PresenceManager.SubscribePresences(members, expiry, new Value 示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.PublishPresence(ext, new CallBack( onSuccess: () => { Debug.Log($"PublishPresence success."); @@ -99,14 +99,14 @@ SDKClient.Instance.PresenceManager.PublishPresence(ext, new CallBack( 添加用户在线状态的监听器,示例代码如下: -```csharp +```C# PresenceManagerDelegate presenceManagerDelegate = new PresenceManagerDelegate(); SDKClient.Instance.PresenceManager.AddPresenceManagerDelegate(presenceManagerDelegate); ``` 参考如下示例代码,使用 `IPresenceManagerDelegate` 监听器实现以下接口。当订阅的用户在线状态发生变化时,会收到`OnPresenceUpdated` 回调。 -```csharp +```C# public interface IPresenceManagerDelegate { void OnPresenceUpdated(List presences); @@ -117,7 +117,7 @@ public interface IPresenceManagerDelegate 若取消指定用户的在线状态订阅,可调用 `PresenceManager#UnsubscribePresences` 方法,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.UnsubscribePresences(mem_list, new CallBack( onSuccess: () => { Debug.Log($"UnsubscribePresences success."); @@ -132,7 +132,7 @@ SDKClient.Instance.PresenceManager.UnsubscribePresences(mem_list, new CallBack( 为方便用户管理订阅关系,SDK 提供 `PresenceManager#FetchSubscribedMembers` 方法,可使用户分页查询自己订阅的用户列表,示例代码如下: -```csharp +```C# SDKClient.Instance.PresenceManager.FetchSubscribedMembers(pageNum, pageSize, new ValueCallBack>( onSuccess: (list) => { @@ -149,7 +149,7 @@ SDKClient.Instance.PresenceManager.FetchSubscribedMembers(pageNum, pageSize, new 如果不关注用户的在线状态变更,你可以调用 `PresenceManager#FetchPresenceStatus` 获取用户当前的在线状态,而无需订阅状态。示例代码如下: -```csharp +```C# // members:要查询状态的用户 ID,每次最多可传 100 个用户 ID。 SDKClient.Instance.PresenceManager.FetchPresenceStatus(members, new ValueCallBack>( onSuccess: (list) => diff --git a/docs/document/windows/quickstart.md b/docs/document/windows/quickstart.md index 149a097ae..c0ba5cf4a 100644 --- a/docs/document/windows/quickstart.md +++ b/docs/document/windows/quickstart.md @@ -66,7 +66,7 @@ 在 `MainWindow.xaml.cs` 头部添加以下命名空间: -```csharp +```C# using AgoraChat; using AgoraChat.MessageBody; ``` @@ -75,7 +75,7 @@ using AgoraChat.MessageBody; 在 `InitSDK` 函数中添加以下代码完成 SDK 初始化: -```csharp +```C# var options = new Options("appkey"); //此处填入你的appkey options.UsingHttpsOnly = true; SDKClient.Instance.InitWithOptions(options); @@ -85,7 +85,7 @@ SDKClient.Instance.InitWithOptions(options); 在 `SignUp_Click` 函数尾部添加以下代码,用于创建 AppServer 上的登录账户,示例代码如下: -```csharp +```C# SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( onSuccess: () => { @@ -106,7 +106,7 @@ SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( 在 `SignIn_Click` 函数尾部添加以下代码,用于使用账号登录即时通讯系统,示例代码如下: -```csharp +```C# SDKClient.Instance.Login(UserIdTextBox.Text, PasswordTextBox.Text, false, callback: new CallBack( onSuccess: () => { @@ -136,7 +136,7 @@ SDKClient.Instance.LoginWithToken(UserIdTextBox.Text, PasswordTextBox.Text, call 在 `SignOut_Click` 函数尾部添加以下代码,用于登出即时通讯系统,示例代码如下: -```csharp +```C# SDKClient.Instance.Logout(true, callback: new CallBack( onSuccess: () => { @@ -153,7 +153,7 @@ SDKClient.Instance.Logout(true, callback: new CallBack( 在 `SendBtn_Click` 函数尾部添加以下代码,可以用于创建一条文本消息,然后发送该消息: -```csharp +```C# Message msg = Message.CreateTextSendMessage(SingleChatIdTextBox.Text, MessageContentTextBox.Text); SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( onSuccess: () => @@ -182,7 +182,7 @@ Message msg = Message.CreateTextSendMessage(SingleChatIdTextBox.Text, MessageCon 在类声明的头部继承 `IChatManagerDelegate` 对象。 -```csharp +```C# public partial class MainWindow : Window, IChatManagerDelegate ``` @@ -193,7 +193,7 @@ public partial class MainWindow : Window, IChatManagerDelegate 由于这里只测试消息接收回调,所以其他回调暂时无需实现,保留空函数即可。 ::: -```csharp +```C# public void OnMessagesReceived(List messages) { foreach (Message msg in messages) @@ -286,13 +286,13 @@ public void OnMessagePinChanged(string messageId, string conversationId, bool is 在 `AddChatDelegate` 函数中添加以下代码,以将 `MainWindow` 对象实例加入到监听列表中 -```csharp +```C# SDKClient.Instance.ChatManager.AddChatManagerDelegate(this); ``` 在 `RemoveChatDelegate` 函数中添加以下代码,以便在关闭窗体时将 `MainWindow` 对象实例从监听列表中移除 -```csharp +```C# SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(this); ``` diff --git a/docs/document/windows/reaction.md b/docs/document/windows/reaction.md index 59dcbefa2..cc1a6aaa2 100644 --- a/docs/document/windows/reaction.md +++ b/docs/document/windows/reaction.md @@ -44,7 +44,7 @@ Reaction 场景示例如下: 示例代码如下: -```csharp +```C# // 添加 Reaction。 SDKClient.Instance.ChatManager.AddReaction(msg_id, reaction, new CallBack( onSuccess: () => @@ -81,7 +81,7 @@ SDKClient.Instance.ChatManager.AddReactionManagerDelegate(reactionManagerDelegat 示例代码如下: -```csharp +```C# // 删除 Reaction。 SDKClient.Instance.ChatManager.RemoveReaction(msg_id, reaction, new CallBack( onSuccess: () => @@ -116,7 +116,7 @@ SDKClient.Instance.ChatManager.AddReactionManagerDelegate(reactionManagerDelegat 调用 `GetReactionList` 可以从服务器获取指定消息的 Reaction 概览列表,列表内容包含 Reaction 内容、添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetReactionList(messageIdList, chatType, groupId, new ValueCallBack>>( onSuccess: (dict) => { @@ -142,7 +142,7 @@ onError: (code, desc) => 调用 `GetReactionDetail` 可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容、添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下: -```csharp +```C# SDKClient.Instance.ChatManager.GetReactionDetail(msg_id, reaction, cursor, pageSize, new ValueCallBack>( onSuccess: (ret) => { diff --git a/docs/document/windows/room_attributes.md b/docs/document/windows/room_attributes.md index 14233e28f..ffb32af7b 100644 --- a/docs/document/windows/room_attributes.md +++ b/docs/document/windows/room_attributes.md @@ -35,7 +35,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomAnnouncement(roomId, new ValueCallBack( onSuccess: (announcement) => { }, @@ -50,7 +50,7 @@ SDKClient.Instance.RoomManager.FetchRoomAnnouncement(roomId, new ValueCallBack { }, @@ -65,7 +65,7 @@ SDKClient.Instance.RoomManager.UpdateRoomAnnouncement(roomId, announcement, new 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.ChangeRoomName(roomId, name, new CallBack( onSuccess: () => { }, @@ -80,7 +80,7 @@ SDKClient.Instance.RoomManager.ChangeRoomName(roomId, name, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.ChangeRoomDescription(roomId, newDesc, new CallBack( onSuccess: () => { }, @@ -97,7 +97,7 @@ SDKClient.Instance.RoomManager.ChangeRoomDescription(roomId, newDesc, new CallBa 示例代码如下: -```csharp +```C# /** * 异步方法。 * @@ -120,7 +120,7 @@ SDKClient.Instance.RoomManager.FetchAttributes(roomId, keys, new ValueCallBack( 示例代码如下: -```csharp +```C# // 获取公开聊天室列表,每次最多可获取 1,000 个。 SDKClient.Instance.RoomManager.FetchPublicRoomsFromServer(callback: new ValueCallBack>( //result 为 PageResult 类型 @@ -96,7 +96,7 @@ SDKClient.Instance.RoomManager.JoinRoom(roomId, new ValueCallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomInfoFromServer(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -111,7 +111,7 @@ SDKClient.Instance.RoomManager.FetchRoomInfoFromServer(roomId, new ValueCallBack 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.DestroyRoom(roomId, new CallBack( onSuccess: () => { }, @@ -126,7 +126,7 @@ SDKClient.Instance.RoomManager.DestroyRoom(roomId, new CallBack( 示例代码如下: -```csharp +```C# // 实现监听器以及定义监听器对象 public class RoomManagerDelegate : IRoomManagerDelegate { ...... @@ -145,7 +145,7 @@ SDKClient.Instance.RoomManager.AddRoomManagerDelegate(adelegate); 具体可以添加的回调事件如下: -```csharp +```C# public interface IRoomManagerDelegate { // 解散聊天室。聊天室所有成员会收到该事件。 @@ -191,7 +191,7 @@ public interface IRoomManagerDelegate 2. 收到通知事件后,调用 `RoomManager#GetChatRoom` 方法获取本地聊天室详情,再通过`RoomManager#MemberCount` 获取聊天室当前人数。 -```csharp +```C# class RoomManagerDelegate : IRoomManagerDelegate { public void OnMemberJoinedFromRoom(string roomId, string participant) diff --git a/docs/document/windows/room_members.md b/docs/document/windows/room_members.md index 048efb04d..7840b63dc 100644 --- a/docs/document/windows/room_members.md +++ b/docs/document/windows/room_members.md @@ -34,7 +34,7 @@ 示例代码如下: -```csharp +```C# //cursor:从该游标位置开始取数据。首次调用 cursor 传空值,从最新数据开始获取。 //pageSize:每页期望返回的成员数,最大值为 1,000。 SDKClient.Instance.RoomManager.FetchRoomMembers(roomId, cursor, pageSize, callback: new ValueCallBack>( @@ -54,7 +54,7 @@ SDKClient.Instance.RoomManager.FetchRoomMembers(roomId, cursor, pageSize, callba 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.LeaveRoom(roomId, new CallBack( onSuccess: () => { }, @@ -67,7 +67,7 @@ SDKClient.Instance.RoomManager.LeaveRoom(roomId, new CallBack( 示例代码如下: -```csharp +```C# Options options = new Options(); options. DeleteMessagesAsExitRoom = false; ``` @@ -85,7 +85,7 @@ options. DeleteMessagesAsExitRoom = false; 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.DeleteRoomMembers(roomId, members, new CallBack( onSuccess: () => { }, @@ -111,7 +111,7 @@ SDKClient.Instance.RoomManager.DeleteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.BlockRoomMembers(roomId, members, new CallBack( onSuccess: () => { @@ -128,7 +128,7 @@ SDKClient.Instance.RoomManager.BlockRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.UnBlockRoomMembers(roomId, members, new CallBack( onSuccess: () => { }, @@ -143,7 +143,7 @@ SDKClient.Instance.RoomManager.UnBlockRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomBlockList(roomId, pageNum, pageSize, callback: new ValueCallBack>( // list 类型为 List。 onSuccess: (list) => { @@ -165,7 +165,7 @@ SDKClient.Instance.RoomManager.FetchRoomBlockList(roomId, pageNum, pageSize, cal 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchAllowListFromServer(roomId, new ValueCallBack>( onSuccess: (list) => { //list是返回的白名单列表 @@ -179,7 +179,7 @@ SDKClient.Instance.RoomManager.FetchAllowListFromServer(roomId, new ValueCallBac 所有聊天室成员可以调用 `CheckIfInRoomAllowList` 方法检查自己是否在白名单中,示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.CheckIfInRoomAllowList(roomId, new ValueCallBack( onSuccess: (b) => { //b是返回的布尔类型 @@ -195,7 +195,7 @@ SDKClient.Instance.RoomManager.CheckIfInRoomAllowList(roomId, new ValueCallBack< 示例代码如下: -```csharp +```C# //list是添加的白名单列表 SDKClient.Instance.RoomManager.AddAllowListMembers(roomId, list, new CallBack( onSuccess: () => { @@ -211,7 +211,7 @@ SDKClient.Instance.RoomManager.AddAllowListMembers(roomId, list, new CallBack( 示例代码如下: -```csharp +```C# //list是移除的白名单列表 SDKClient.Instance.RoomManager.RemoveAllowListMembers(roomId, list, new CallBack( onSuccess: () => { @@ -233,7 +233,7 @@ SDKClient.Instance.RoomManager.RemoveAllowListMembers(roomId, list, new CallBack 示例代码如下: -```csharp +```C# // muteMilliseconds:禁言时间。若传 -1,表示永久禁言。 SDKClient.Instance.RoomManager.MuteRoomMembers(roomId, members, new CallBack( onSuccess: () => { @@ -253,7 +253,7 @@ SDKClient.Instance.RoomManager.MuteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.UnMuteRoomMembers(roomId, members, new CallBack( onSuccess: () => { }, @@ -268,7 +268,7 @@ SDKClient.Instance.RoomManager.UnMuteRoomMembers(roomId, members, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.FetchRoomMuteList(roomId, pageSize, pageNum, callback: new ValueCallBack>( onSuccess: (dict) => { }, @@ -289,7 +289,7 @@ SDKClient.Instance.RoomManager.FetchRoomMuteList(roomId, pageSize, pageNum, call 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.MuteAllRoomMembers(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -304,7 +304,7 @@ SDKClient.Instance.RoomManager.MuteAllRoomMembers(roomId, new ValueCallBack( onSuccess: (room) => { }, @@ -321,7 +321,7 @@ SDKClient.Instance.RoomManager.UnMuteAllRoomMembers(roomId, new ValueCallBack { }, @@ -336,7 +336,7 @@ SDKClient.Instance.RoomManager.ChangeRoomOwner(roomId, newOwner, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.AddRoomAdmin(roomId, adminId, new CallBack( onSuccess: () => { }, @@ -351,7 +351,7 @@ SDKClient.Instance.RoomManager.AddRoomAdmin(roomId, adminId, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.RoomManager.RemoveRoomAdmin(roomId, adminId, new CallBack( onSuccess: () => { }, diff --git a/docs/document/windows/thread.md b/docs/document/windows/thread.md index db597c762..5a4141a83 100644 --- a/docs/document/windows/thread.md +++ b/docs/document/windows/thread.md @@ -41,7 +41,7 @@ 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.CreateThread(threadName, msgId, groupid, new ValueCallBack( onSuccess: (thread) => { @@ -70,7 +70,7 @@ SDKClient.Instance.ThreadManager.CreateThread(threadName, msgId, groupid, new Va 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.DestroyThread(tid, new CallBack( onSuccess: () => { @@ -96,7 +96,7 @@ SDKClient.Instance.ThreadManager.DestroyThread(tid, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.JoinThread(tid, new ValueCallBack( onSuccess: (thread) => { @@ -121,7 +121,7 @@ SDKClient.Instance.ThreadManager.JoinThread(tid, new ValueCallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.LeaveThread(tid, new CallBack( onSuccess: () => { @@ -142,7 +142,7 @@ SDKClient.Instance.ThreadManager.LeaveThread(tid, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.RemoveThreadMember(tid, uname, new CallBack( onSuccess: () => { @@ -163,7 +163,7 @@ SDKClient.Instance.ThreadManager.RemoveThreadMember(tid, uname, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.ChangeThreadSubject(tid, subject, new CallBack( onSuccess: () => { @@ -182,7 +182,7 @@ SDKClient.Instance.ThreadManager.ChangeThreadSubject(tid, subject, new CallBack( 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.GetThreadDetail(tid, new ValueCallBack( onSuccess: (thread) => { @@ -203,7 +203,7 @@ SDKClient.Instance.ThreadManager.GetThreadDetail(tid, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -224,7 +224,7 @@ SDKClient.Instance.ThreadManager.FetchThreadMembers(tid, cursor, page_size, new 1. 用户可以调用 `FetchMineJoinedThreadList` 方法从服务器分页获取自己加入和创建的子区列表: -```csharp +```C# SDKClient.Instance.ThreadManager.FetchMineJoinedThreadList(cursor, page_size, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -243,7 +243,7 @@ SDKClient.Instance.ThreadManager.FetchThreadMembers(tid, cursor, page_size, new 2. 用户还可以调用 `FetchThreadListOfGroup` 方法从服务器分页获取指定群组的子区列表: -```csharp +```C# SDKClient.Instance.ThreadManager.FetchThreadListOfGroup(tid, joined, cursor, page_size, new ValueCallBack>( onSuccess: (cursor_result) => { @@ -266,7 +266,7 @@ SDKClient.Instance.ThreadManager.FetchThreadListOfGroup(tid, joined, cursor, pag 示例代码如下: -```csharp +```C# SDKClient.Instance.ThreadManager.GetLastMessageAccordingThreads(threadIds, new ValueCallBack>( onSuccess: (dict) => { @@ -289,7 +289,7 @@ SDKClient.Instance.ThreadManager.GetLastMessageAccordingThreads(threadIds, new V 示例代码如下: -```csharp +```C# class ThreadManagerDelegate : IChatThreadManagerDelegate { diff --git a/docs/document/windows/thread_message.md b/docs/document/windows/thread_message.md index 639f30fd0..5e63bcb02 100644 --- a/docs/document/windows/thread_message.md +++ b/docs/document/windows/thread_message.md @@ -43,7 +43,7 @@ 示例代码如下: -```csharp +```C# // 创建一条文本消息,`content` 为消息文字内容,`chatThreadId` 为子区 ID。 Message msg = Message.CreateTextSendMessage(chatThreadId, content); // 设置消息类型,子区消息需要将 `ChatType` 设置为 `GroupChat`。 @@ -72,7 +72,7 @@ SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( 示例代码如下: -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -99,7 +99,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 示例代码如下: -```csharp +```C# //继承并实现 IChatManagerDelegate。 public class ChatManagerDelegate : IChatManagerDelegate { @@ -128,7 +128,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate); 调用 `FetchHistoryMessagesFromServer` 方法从服务器获取子区消息。从服务器获取子区消息与获取群组消息的唯一区别为前者需传入子区 ID,后者需传入群组 ID。 -```csharp +```C# SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(threadId, ConversationType.Group, startMsgId, pageSize, MessageSearchDirection.DOWN, new ValueCallBack>( onSuccess: (result) => { @@ -147,7 +147,7 @@ SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(threadId, Conversa 调用 `EMChatManager#getAllConversations()` 会返回单聊和群聊的会话,不会返回子区会话,你可以通过调用以下方法从本地数据库中读取指定子区会话的消息: -```csharp +```C# // 需要指定会话类型为 `ConversationType.Group`,且 `isChatThread` 设置为 `true` Conversation conversation = SDKClient.Instance.ChatManager.GetConversation(chatThreadId, EMConversationType.GroupChat, createIfNotExists, isChatThread); // 如需处理本地数据库中消息,用以下方法到数据库中获取,SDK 会将这些消息自动存入此会话。 diff --git a/docs/document/windows/user_relationship.md b/docs/document/windows/user_relationship.md index e6e9d9dfd..5464e87d9 100644 --- a/docs/document/windows/user_relationship.md +++ b/docs/document/windows/user_relationship.md @@ -41,7 +41,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理 调用 `AddContact` 添加指定用户为好友,示例代码如下: -```csharp +```C# //username 为要添加的好友的用户名,reason 为添加原因 SDKClient.Instance.ContactManager.AddContact(username, reason, callback: new CallBack( onSuccess: () => @@ -59,7 +59,7 @@ SDKClient.Instance.ContactManager.AddContact(username, reason, callback: new Cal 请监听与好友请求相关事件的回调,这样当用户收到好友请求,可以调用接受请求的 RESTful API 添加好友。服务器不会重复下发与好友请求相关的事件,建议退出应用时保存相关的请求数据。设置监听示例代码如下: -```csharp +```C# //继承并实现 IContactManagerDelegate。 public class ContactManagerDelegate : IContactManagerDelegate { // 当前用户新增了联系人。用户 B 向用户 A 发送好友请求,用户 A 同意该请求,用户 A 收到该事件,而用户 B 收到 `onContactAgreed` 事件。 @@ -96,7 +96,7 @@ SDKClient.Instance.ContactManager.RemoveContactManagerDelegate(adelegate); 收到后 `OnContactInvited`,调用 `AcceptInvitation` 或 `DeclineInvitation` 接受或拒绝邀请。 -```csharp +```C# //同意好友请求。 SDKClient.Instance.ContactManager.AcceptInvitation(username, callback: new CallBack( onSuccess: () => @@ -124,7 +124,7 @@ SDKClient.Instance.ContactManager.DeclineInvitation(username, callback: new Call 调用 `DeleteContact` 删除指定联系人。被删除的用户收到 `OnContactDeleted` 回调。删除联系人时会同时删除对方联系人列表中的该用户,建议执行双重确认,以免发生误删操作。删除操作不需要对方同意或者拒绝。 -```csharp +```C# SDKClient.Instance.ContactManager.DeleteContact(username, callback: new CallBack( onSuccess: () => { @@ -139,7 +139,7 @@ SDKClient.Instance.ContactManager.DeleteContact(username, callback: new CallBack ### 从服务器获取好友列表 -```csharp +```C# SDKClient.Instance.ContactManager.GetAllContactsFromServer(new ValueCallBack>( onSuccess: (list) => { @@ -156,7 +156,7 @@ SDKClient.Instance.ContactManager.GetAllContactsFromServer(new ValueCallBacklist = SDKClient.Instance.ContactManager.GetAllContactsFromDB(); ``` @@ -170,7 +170,7 @@ Listlist = SDKClient.Instance.ContactManager.GetAllContactsFromDB(); 用户可以将任何其他用户添加到黑名单列表,无论该用户是否是好友。好友被加入黑名单后仍在好友列表上显示。 -```csharp +```C# //将好友拉入黑名单后,用户依然可以向该好友发送消息,但无法接收该好友发送的消息。 SDKClient.Instance.ContactManager.AddUserToBlockList(username, callback: new CallBack( onSuccess: () => @@ -186,7 +186,7 @@ SDKClient.Instance.ContactManager.AddUserToBlockList(username, callback: new Cal 你可以调用 `RemoveUserFromBlockList` 将用户从黑名单移除,用户发送消息等行为将恢复。 -```csharp +```C# SDKClient.Instance.ContactManager.RemoveUserFromBlockList(username, callback: new CallBack( onSuccess: () => { @@ -201,7 +201,7 @@ SDKClient.Instance.ContactManager.RemoveUserFromBlockList(username, callback: ne 你可以调用 `GetBlockListFromServer` 从服务端获取黑名单列表。示例代码如下: -```csharp +```C# SDKClient.Instance.ContactManager.GetBlockListFromServer(new ValueCallBack>( onSuccess: (list) => { diff --git a/docs/document/windows/userprofile.md b/docs/document/windows/userprofile.md index 960aa8961..188e2cc8f 100644 --- a/docs/document/windows/userprofile.md +++ b/docs/document/windows/userprofile.md @@ -36,7 +36,7 @@ 参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。 -```csharp +```C# //设置所有用户属性。 UserInfo userInfo; userInfo.UserId = currentId; @@ -75,7 +75,7 @@ SDKClient.Instance.UserInfoManager.UpdateOwnInfo(userInfo, new CallBack( 示例代码如下: -```csharp +```C# //获取一个或多个用户的所有属性,一次调用用户 ID 数量不超过 100。 List idList = new List(); idList.Add("username"); @@ -106,7 +106,7 @@ SDKClient.Instance.UserInfoManager.FetchUserInfoByUserId(idList, type, startId, 如果使用场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现: -```csharp +```C# // 设置自定义消息的 `event` 为 `"userCard"`,并在 `ext` 中添加展示名片所需要的用户 ID、昵称和头像等字段。 string event = "userCard"; Dictionary adict = new Dictionary(); diff --git a/docs/private/im/uc_Web_private.md b/docs/private/im/uc_Web_private.md index 54964b235..5d8d6099b 100644 --- a/docs/private/im/uc_Web_private.md +++ b/docs/private/im/uc_Web_private.md @@ -8,7 +8,7 @@ 在 `src/utils/WebIMConfig.js` 文件中,进行如下修改: -```javascript +```JavaScript appkey: 'easemob#easeim', // 私有化的 App Key isHttpDNS: false, // 是否允许通过 DNS 获取。由于私有云需自己配置,这里必须为 `false`。 socketServer: 'https://xxx.xxxxx.com', // 私有化的 WebSocket 地址 @@ -19,7 +19,7 @@ restServer: 'https://xxx.xxxxx.com', // 私有化的 RESTful 服务器地址。 在 `src/utils/WebIM.js` 文件中,进行如下修改: -```javascript +```JavaScript appKey: WebIM.config.appkey, url: WebIM.config.socketServer, apiUrl: WebIM.config.restServer, @@ -35,7 +35,7 @@ restServer: 'https://xxx.xxxxx.com', // 私有化的 RESTful 服务器地址。 在 `src/IM/initwebsdk.js` 文件中,进行如下修改: -```javascript +```JavaScript const DEFAULT_APPKEY = "easemob#easeim"; // 私有化的 App Key const DEFAULT_URL = "https://xxx.xxxxx.com"; // 私有化的 WebSocket 地址 const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务器地址 @@ -49,7 +49,7 @@ const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务 1. 在 `/demo/src/config/WebIMConfig.js` 中修改配置信息,如下所示: -```javascript +```JavaScript appkey: appkey || 'easemob-demo#zim', isHttpDNS: false, restServer: rest.restServer || (window.location.protocol === 'https:' ? 'https:' : 'http:') + '//xxx.xxxxx.com', @@ -58,7 +58,7 @@ const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务 2. 在 `/demo/src/config/WebIM.js` 中修改初始化配置,如下所示: -```javascript +```JavaScript appKey: WebIM.config.appkey, url: WebIM.config.socketServer, apiUrl: WebIM.config.restServer, diff --git a/docs/private/im/uc_android_private.md b/docs/private/im/uc_android_private.md index c412cf44f..4486a03af 100644 --- a/docs/private/im/uc_android_private.md +++ b/docs/private/im/uc_android_private.md @@ -6,7 +6,7 @@ SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法: -```java +```Java EMOptions emOptions = new EMOptions();//实例化 EMOptions 对象 emOptions.setRestServer("10.10.10.10:00");//设置私有云 REST 地址(ip/域名:port) emOptions.setIMServer("10.10.10.10");//设置私有云 IM 地址 @@ -19,7 +19,7 @@ EMClient.getInstance().init(context,emOptions);//最后初始化 SDK 如果需要配置 HTTPS 只需在 REST 地址前加一个前缀。 ::: -```java +```Java emOptions.setRestServer("https://10.10.10.10:00");//设置私有云 REST 地址(ip:port) ``` @@ -28,7 +28,7 @@ emOptions.setRestServer("https://10.10.10.10:00");//设置私有云 REST 地址 1. 服务器端配置 DNS 地址表 2. 从服务器端动态获取地址 -```java +```Java EMOptions emOptions = new EMOptions(); emOptions.setDnsUrl("url");//从服务器端动态获取地址 EMClient.getInstance().init(context,emOptions);//初始化 SDK diff --git a/docs/private/im/uc_iOS_private.md b/docs/private/im/uc_iOS_private.md index a271754c3..8c0f8694f 100644 --- a/docs/private/im/uc_iOS_private.md +++ b/docs/private/im/uc_iOS_private.md @@ -6,7 +6,7 @@ SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法: -```objectivec +```Objective-C EMOptions *options = [EMOptions optionsWithAppkey:appkey]; options.enableDnsConfig = NO; options.chatPort = 8080;//设置端口号 @@ -20,7 +20,7 @@ options.rtcUrlDomain= "wss://mprtc.easemob.com";//设置多人音视频的服务 如果需要配置 HTTPS 只需加一个属性即可。 ::: -```objectivec +```Objective-C options.usingHttpsOnly = YES; ``` @@ -29,6 +29,6 @@ options.usingHttpsOnly = YES; 1. 服务器端配置 DNS 地址表 2. 设置服务器端配置的 URL 地址 -```objectivec +```Objective-C options.dnsURL = @"xxxx";//设置服务器端配置的 URL 地址 ``` \ No newline at end of file diff --git a/docs/product/aigc/aigc_run_through_demo_server.md b/docs/product/aigc/aigc_run_through_demo_server.md index f664065b2..f93468882 100644 --- a/docs/product/aigc/aigc_run_through_demo_server.md +++ b/docs/product/aigc/aigc_run_through_demo_server.md @@ -73,7 +73,7 @@ easemob: ![img](/images/aigc/robot_account_create.png) -```java +```Java static{ BotBean botBean0 = new BotBean(); @@ -251,7 +251,7 @@ A: 你可以设置问候语,让机器人用户每天定时主动向聊天用 静态代码用于加载该类时,分别向这三个 List 中添加对应的问候语。 -```java +```Java /** * 早上问候语 list */ @@ -270,7 +270,7 @@ A: 你可以设置问候语,让机器人用户每天定时主动向聊天用 设置问候语后,可在 `com.easemob.chattyai.task.GreetTask` 类中设置定时任务。定时任务触发的 Cron 如下所示。例如,若用户 A 与机器人用户 B 聊过天,机器人用户 B 会在每天早上 9 点、中午 12 点和晚上 21 点给用户发送消息。 -```java +```Java 0 0 9,12,21 * * ? ``` @@ -282,7 +282,7 @@ A: 下图中的 `MiniMaxAiSingleHandler` 为单聊的 MinMax 处理类,`MiniMa 在本示例项目中,与智能体交互后,聊天记录会同步处理到 从 redis 获取的 key (`Constant.CHAT_GROUP_HISTORY_REDIS_KEY_PREFIX+发送人的环信用户ID+:+机器人的环信 ID`)的对应的 value 中,方便下一次聊天时作为历史消息传递给 AI。示例项目中只取最近 10 条消息作为历史数据,对应的代码如下所示: -```java +```Java long l = redisUtil.lGetListSize(key); if (l > 10) { redisUtil.leftpop(key, 2L); diff --git a/docs/product/circle/category_mgmt_android.md b/docs/product/circle/category_mgmt_android.md index 91b3ebdf8..82ff68bea 100644 --- a/docs/product/circle/category_mgmt_android.md +++ b/docs/product/circle/category_mgmt_android.md @@ -38,7 +38,7 @@ 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().createCategory(serverId, categoryName, new EMValueCallBack() { @Override public void onSuccess(EMCircleCategory value) { @@ -58,7 +58,7 @@ EMClient.getInstance().chatCircleManager().createCategory(serverId, categoryName 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().updateCategory(serverId, categoryId, categoryName, new EMValueCallBack() { @Override public void onSuccess(EMCircleCategory value) { @@ -78,7 +78,7 @@ EMClient.getInstance().chatCircleManager().updateCategory(serverId, categoryId, 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().destroyCategory(serverId, categoryId, new EMCallBack() { @Override public void onSuccess() { @@ -98,7 +98,7 @@ EMClient.getInstance().chatCircleManager().destroyCategory(serverId, categoryId, 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchCategoriesInServer(serverID, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -122,7 +122,7 @@ EMClient.getInstance().chatCircleManager().fetchCategoriesInServer(serverID, 20, 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().transferChannel(serverId,channelId, newCategoryId, new EMCallBack() { @Override public void onSuccess() { @@ -140,7 +140,7 @@ EMClient.getInstance().chatCircleManager().transferChannel(serverId,channelId, n `EMCircleManager` 中提供频道分组事件的监听接口。开发者可以通过设置此监听,获取频道分组中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```java +```Java EMCircleCategoryListener chatCategoryListener = new EMCircleCategoryListener() { //创建了频道分组。社区所有成员(除创建者外)会收到该事件。 @Override diff --git a/docs/product/circle/category_mgmt_ios.md b/docs/product/circle/category_mgmt_ios.md index c1e831663..0001343ef 100644 --- a/docs/product/circle/category_mgmt_ios.md +++ b/docs/product/circle/category_mgmt_ios.md @@ -38,7 +38,7 @@ 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.createCategory(serverId, name: name, completion: { category, error in }) ``` @@ -49,7 +49,7 @@ EMClient.shared().circleManager?.createCategory(serverId, name: name, completion 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.updateCategory(serverId, categoryId: categoryId, name: name, completion: { category, error in }) ``` @@ -60,7 +60,7 @@ EMClient.shared().circleManager?.updateCategory(serverId, categoryId: categoryId 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.destroyCategory(self.serverId, categoryId: self.groupId, completion: { error in }) ``` @@ -71,7 +71,7 @@ EMClient.shared().circleManager?.destroyCategory(self.serverId, categoryId: self 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchCategories(inServer: self.serverId, limit: 20, cursor: refresh ? nil : self.result?.cursor, completion: { result, error in }) ``` @@ -86,7 +86,7 @@ EMClient.shared().circleManager?.fetchCategories(inServer: self.serverId, limit: 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.transferChannel(self.serverId, channelId: self.channelId, newCategoryId: category.categoryId, completion: { error in }) ``` @@ -95,14 +95,14 @@ EMClient.shared().circleManager?.transferChannel(self.serverId, channelId: self. `IEMCircleManager` 中提供频道分组事件的监听接口。开发者可以通过设置此监听,获取频道分组中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```swift +```Swift //添加频道分组回调代理。 EMClient.shared().circleManager?.add(categoryDelegate: self, queue: nil) //移除频道分组回调代理。 EMClient.shared().circleManager?.remove(categoryDelegate: self) ``` -```swift +```Swift //创建了频道分组。社区所有成员(除创建者外)会收到该事件。 func onCategoryCreated(_ category: EMCircleCategory, creator: String) { } diff --git a/docs/product/circle/category_mgmt_web.md b/docs/product/circle/category_mgmt_web.md index 30d362979..c3de08411 100644 --- a/docs/product/circle/category_mgmt_web.md +++ b/docs/product/circle/category_mgmt_web.md @@ -38,7 +38,7 @@ 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', name: 'categoryName', @@ -54,7 +54,7 @@ WebIM.conn.createCategory(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', categoryId: 'categoryId', @@ -71,7 +71,7 @@ WebIM.conn.updateCategory(options).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.deleteCategory({serverId: 'serverId', categoryId: 'categoryId',}).then(res => { console.log(res) }) @@ -83,7 +83,7 @@ WebIM.conn.deleteCategory({serverId: 'serverId', categoryId: 'categoryId',}).the 示例代码如下: -```javascript +```JavaScript WebIM.conn.getCategorylist({serverId: 'serverId',pageSize:'20',cursor:''}).then(res => { console.log(res) }) @@ -99,7 +99,7 @@ WebIM.conn.getCategorylist({serverId: 'serverId',pageSize:'20',cursor:''}).then( 示例代码如下: -```javascript +```JavaScript WebIM.conn.transferChannel({serverId: 'serverId',channelId: 'channelId',newCategoryId:'newCategoryId'}).then(res => { console.log(res) }) @@ -109,7 +109,7 @@ WebIM.conn.transferChannel({serverId: 'serverId',channelId: 'channelId',newCateg Circle 提供 `addEventHandler` 方法用于注册监听事件。开发者可以通过设置此监听,获取频道分组中的事件。 -```javascript +```JavaScript WebIM.conn.addEventHandler('CIRCLE',{ onServerEvent:(msg) => { switch (msg.operation){ diff --git a/docs/product/circle/channel_mgmt_android.md b/docs/product/circle/channel_mgmt_android.md index 3f87feeee..40f651b2e 100644 --- a/docs/product/circle/channel_mgmt_android.md +++ b/docs/product/circle/channel_mgmt_android.md @@ -41,7 +41,7 @@ 示例代码如下: -```java +```Java EMCircleChannelAttribute attribute = new EMCircleChannelAttribute(); attribute.setName(name); attribute.setDesc(desc); @@ -82,7 +82,7 @@ EMClient.getInstance().chatCircleManager().createChannel(serverId, categoryId, a 频道创建者调用 `inviteUserToChannel` 方法邀请用户加入频道。受邀用户收到 `EMCircleChannelListener#onReceiveInvitation` 事件。 -```java +```Java EMClient.getInstance().chatCircleManager().inviteUserToChannel(serverId, channelId, inviteeUserId, "welcome", new EMCallBack() { @Override public void onSuccess() { @@ -100,7 +100,7 @@ EMClient.getInstance().chatCircleManager().inviteUserToChannel(serverId, channel - 用户调用 `acceptChannelInvitation` 方法同意加入频道,邀请人收到 `EMCircleChannelListener#onInvitationBeAccepted` 事件,频道所有成员(不包括该新加入的成员)收到 `EMCircleChannelListener#onMemberJoinedChannel` 事件。示例代码如下: - ```java + ```Java EMClient.getInstance().chatCircleManager().acceptChannelInvitation(serverId, channelId, inviterUserId, new EMValueCallBack() { @Override public void onSuccess(EMCircleChannel circleChannel) { @@ -116,7 +116,7 @@ EMClient.getInstance().chatCircleManager().inviteUserToChannel(serverId, channel - 用户调用 `declineChannelInvitation` 方法拒绝加入频道,邀请人收到 `EMCircleChannelListener#onInvitationBeDeclined` 事件。示例代码如下: - ```java + ```Java EMClient.getInstance().chatCircleManager().declineChannelInvitation(serverId,channelId, inviterUserId, new EMCallBack() { @Override public void onSuccess() { @@ -140,7 +140,7 @@ EMClient.getInstance().chatCircleManager().inviteUserToChannel(serverId, channel 示例代码如下: -```java +```Java EMCircleChannelAttribute attribute = new EMCircleChannelAttribute(); attribute.setName(name); attribute.setDesc(desc); @@ -165,7 +165,7 @@ EMClient.getInstance().chatCircleManager().updateChannel(serverId, channelId, at 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().destroyChannel(serverId, channelId, new EMCallBack() { @Override public void onSuccess() { @@ -185,7 +185,7 @@ EMClient.getInstance().chatCircleManager().updateChannel(serverId, channelId, at 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchChannelDetail(serverId, channelId, new EMValueCallBack() { @Override public void onSuccess(EMCircleChannel value) { @@ -205,7 +205,7 @@ EMClient.getInstance().chatCircleManager().fetchChannelDetail(serverId, channelI 社区成员可以调用 `fetchPublicChannelsInServer` 方法获取社区下的所有公开频道的列表,示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchPublicChannelsInServer(serverId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -225,7 +225,7 @@ EMClient.getInstance().chatCircleManager().fetchPublicChannelsInServer(serverId, 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchVisiblePrivateChannelsInServer(serverId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -243,7 +243,7 @@ EMClient.getInstance().chatCircleManager().fetchVisiblePrivateChannelsInServer(s 社区成员可以调用 `fetchJoinedChannelIdsInServer` 方法获取社区下加入的频道列表。 -```java +```Java EMClient.getInstance().chatCircleManager().fetchJoinedChannelIdsInServer(serverId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -261,7 +261,7 @@ EMClient.getInstance().chatCircleManager().fetchJoinedChannelIdsInServer(serverI 社区成员可以调用 `fetchPublicChannelsInCategory` 方法获取频道分组下所有公开频道的列表,示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchPublicChannelsInCategory(serverId, categoryId,20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -279,7 +279,7 @@ EMClient.getInstance().chatCircleManager().fetchPublicChannelsInCategory(serverI 调用 `fetchPrivateChannelsInCategory` 方法获取频道分组下的所有私密频道的列表,示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchPrivateChannelsInCategory(serverId, categoryId,20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -313,7 +313,7 @@ EMClient.getInstance().chatCircleManager().fetchPrivateChannelsInCategory(server 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().joinChannel(serverId, channelId, new EMValueCallBack() { @Override public void onSuccess(EMCircleChannel value) { @@ -341,7 +341,7 @@ EMClient.getInstance().chatCircleManager().joinChannel(serverId, channelId, new 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().leaveChannel(serverId, channelId, new EMCallBack() { @Override public void onSuccess() { @@ -365,7 +365,7 @@ EMClient.getInstance().chatCircleManager().leaveChannel(serverId, channelId, new 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().removeUserFromChannel(serverId, channelId, userId, new EMCallBack() { @Override public void onSuccess() { @@ -385,7 +385,7 @@ EMClient.getInstance().chatCircleManager().removeUserFromChannel(serverId, chann 禁言列表中的成员无法在频道中发送消息,但可以接收频道中的消息。 -```java +```Java long muteDuration = 24 * 60 * 60 * 1000;//毫秒 EMClient.getInstance().chatCircleManager().muteUserInChannel(serverId, channelId, username, muteDuration, new EMCallBack() { @Override @@ -406,7 +406,7 @@ EMClient.getInstance().chatCircleManager().muteUserInChannel(serverId, channelId 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().unmuteUserInChannel(serverId, channelId, username, new EMCallBack() { @Override public void onSuccess() { @@ -424,7 +424,7 @@ EMClient.getInstance().chatCircleManager().unmuteUserInChannel(serverId, channel 社区所有者和社区管理员可以调用 `fetchChannelMuteUsers` 方法获取频道下的禁言列表。 -```java +```Java EMClient.getInstance().chatCircleManager().fetchChannelMuteUsers(serverId, channelId, new EMValueCallBack>() { @Override public void onSuccess(Map usersMuted) { @@ -446,7 +446,7 @@ EMClient.getInstance().chatCircleManager().fetchChannelMuteUsers(serverId, chann - 对于其他模式的频道创建时,创建者直接加入频道。因此,频道创建者算入频道成员数量,查询频道成员列表返回频道创建者。 -```java +```Java EMClient.getInstance().chatCircleManager().fetchChannelMembers(serverId, channelId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -464,7 +464,7 @@ EMClient.getInstance().chatCircleManager().fetchChannelMembers(serverId, channel 社区成员可调用 `checkSelfIsInChannel` 方法查询自己是否在指定频道中。示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().checkSelfIsInChannel(serverId, channelId, new EMValueCallBack() { @Override public void onSuccess(Boolean value) { @@ -484,7 +484,7 @@ EMClient.getInstance().chatCircleManager().checkSelfIsInChannel(serverId, channe `EMCircleManager` 中提供频道事件的监听接口。开发者可以通过设置此监听,获取频道中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```java +```Java EMCircleChannelListener chatChannelListener = new EMCircleChannelListener() { //创建频道。参与创建的初始成员会收到该事件。 @Override @@ -548,7 +548,7 @@ EMClient.getInstance().chatCircleManager().clearChannelListeners(); #### 多设备登录监听事件 -```java +```Java public void onCircleChannelEvent(int event, String channelId, List usernames) { switch (event) { // 当前用户在其他设备上创建频道。 diff --git a/docs/product/circle/channel_mgmt_ios.md b/docs/product/circle/channel_mgmt_ios.md index 8488472b1..4bb0de4e1 100644 --- a/docs/product/circle/channel_mgmt_ios.md +++ b/docs/product/circle/channel_mgmt_ios.md @@ -41,7 +41,7 @@ 示例代码如下: -```swift +```Swift let attribute = EMCircleChannelAttribute() attribute.name = self.nameTextField.text ?? "" attribute.type = self.publicSwitch.isOn ? .public : .private @@ -70,7 +70,7 @@ EMClient.shared().circleManager?.createChannel(self.serverId, categoryId: self.c 频道创建者调用 `inviteUserToChannel` 方法邀请用户加入频道。受邀用户收到 `EMCircleManagerChannelDelegate#onReceiveChannelInvitation` 事件。 -```swift +```Swift EMClient.shared().circleManager?.inviteUserToChannel(serverId: serverId, channelId: channelId, userId: userId, welcome: welcome) { error in } ``` @@ -79,14 +79,14 @@ EMClient.shared().circleManager?.createChannel(self.serverId, categoryId: self.c - 用户调用 `acceptChannelInvitation` 方法同意加入频道,邀请人收到 `EMCircleManagerChannelDelegate#onReceiveChannelInvitation` 事件,频道所有成员(不包括该新加入的成员)收到 `EMCircleManagerChannelDelegate#onMemberJoinedChannel` 事件。示例代码如下: - ```swift + ```Swift EMClient.shared().circleManager?.acceptChannelInvitation(serverId, channelId: channelId, inviter: inviter) { channel, error in } ``` - 用户调用 `declineChannelInvitation` 方法拒绝加入频道,邀请人收到 `EMCircleManagerChannelDelegate#onChannelInvitationBeDeclined` 事件。示例代码如下: - ```swift + ```Swift EMClient.shared().circleManager?.declineChannelInvitation(serverId, channelId: channelId, inviter: inviter) { error in } ``` @@ -101,7 +101,7 @@ EMClient.shared().circleManager?.createChannel(self.serverId, categoryId: self.c 示例代码如下: -```swift +```Swift let channelAttr = EMCircleChannelAttribute() channelAttr.name = channelName channelAttr.desc = channelDesc @@ -115,7 +115,7 @@ EMClient.shared().circleManager?.updateChannel(serverId, channelId: channelId, a 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.destroyChannel(serverId, channelId: channelId) { error in } ``` @@ -126,7 +126,7 @@ EMClient.shared().circleManager?.destroyChannel(serverId, channelId: channelId) 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchChannelDetail(serverId, channelId: channelId) { channel, _ in } ``` @@ -137,7 +137,7 @@ EMClient.shared().circleManager?.fetchChannelDetail(serverId, channelId: channel 社区成员可以调用 `fetchPublicChannelsInServer` 方法获取社区下的所有公开频道的列表,示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchPublicChannels(inServer: serverId, limit: 20, cursor: nil) { result, error in } ``` @@ -148,7 +148,7 @@ EMClient.shared().circleManager?.fetchPublicChannels(inServer: serverId, limit: 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchPrivateChannels(inServer: serverId, limit: 20, cursor: nil) { result, error in } ``` @@ -157,7 +157,7 @@ EMClient.shared().circleManager?.fetchPrivateChannels(inServer: serverId, limit: 社区成员可以调用 `fetchJoinedChannelIds` 方法获取社区下加入的频道列表。 -```swift +```Swift EMClient.shared().circleManager?.fetchJoinedChannelIds(inServer: serverId, limit: 20, cursor: cursor, completion: { result, error in }) @@ -167,7 +167,7 @@ EMClient.shared().circleManager?.fetchJoinedChannelIds(inServer: serverId, limit 社区成员可以调用 `fetchPublicChannelsInCategory` 方法获取频道分组下所有公开频道的列表,示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchPublicChannels(inCategory: serverId, categoryId: categoryId, limit: 20, cursor: result?.publicResult?.cursor, completion: { result, error in } ``` @@ -176,7 +176,7 @@ EMClient.shared().circleManager?.fetchPublicChannels(inCategory: serverId, categ 调用 `fetchPrivateChannelsInCategory` 方法获取频道分组下的所有私密频道的列表,示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchPrivateChannels(inCategory: self.serverId, categoryId: categoryId, limit: 20, cursor: result?.privateResult?.cursor, completion: { result, error in } ``` @@ -201,7 +201,7 @@ EMClient.shared().circleManager?.fetchPrivateChannels(inCategory: self.serverId, 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.joinChannel(serverId, channelId: channelId) { channel, error in } ``` @@ -220,7 +220,7 @@ EMClient.shared().circleManager?.joinChannel(serverId, channelId: channelId) { c 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.leaveChannel(serverId, channelId: channelId) { error in } ``` @@ -235,7 +235,7 @@ EMClient.shared().circleManager?.leaveChannel(serverId, channelId: channelId) { 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.removeUser(fromServer: serverId, userId: userId) { error in } ``` @@ -246,7 +246,7 @@ EMClient.shared().circleManager?.removeUser(fromServer: serverId, userId: userId 禁言列表中的成员无法在频道中发送消息,但可以接收频道中的消息。 -```swift +```Swift EMClient.shared().circleManager?.muteUserInChannel(userId: userId, serverId: serverId, channelId: channelId, duration: 86400) { error in } ``` @@ -257,7 +257,7 @@ EMClient.shared().circleManager?.muteUserInChannel(userId: userId, serverId: ser 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.unmuteUserInChannel(userId: userId, serverId: serverId, channelId: channelId) { error in } ``` @@ -266,7 +266,7 @@ EMClient.shared().circleManager?.unmuteUserInChannel(userId: userId, serverId: s 社区所有者和社区管理员可以调用 `fetchChannelMuteUsers` 方法获取频道下的禁言列表。 -```swift +```Swift EMClient.shared().circleManager?.fetchChannelMuteUsers(serverId, channelId: channelId) { map, error in } ``` @@ -279,7 +279,7 @@ EMClient.shared().circleManager?.fetchChannelMuteUsers(serverId, channelId: chan - 对于其他模式的频道创建时,创建者直接加入频道。因此,频道创建者算入频道成员数量,查询频道成员列表返回频道创建者。 -```swift +```Swift EMClient.shared().circleManager?.fetchChannelMembers(serverId, channelId: channelId, limit: 20, cursor: cursor) { result, error in } ``` @@ -288,7 +288,7 @@ EMClient.shared().circleManager?.fetchChannelMembers(serverId, channelId: channe 社区成员可调用 `checkSelfIsInChannel` 方法查询自己是否在指定频道中。示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.checkSelfIsInChannel(serverId: serverId, channelId: channelId) { isJoined, error in } ``` @@ -299,14 +299,14 @@ EMClient.shared().circleManager?.checkSelfIsInChannel(serverId: serverId, channe `IEMCircleManager` 中提供频道事件的监听接口。开发者可以通过设置此监听,获取频道中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```swift +```Swift //添加频道回调代理。 EMClient.shared().circleManager?.add(channelDelegate: self, queue: nil) //移除频道回调代理。 EMClient.shared().circleManager?.remove(channelDelegate: self) ``` -```swift +```Swift //创建频道。参与创建的初始成员会收到该事件。 func onChannelCreated(_ channel: EMCircleChannel, creator: String) { @@ -351,7 +351,7 @@ func onMemberMuteChange(inChannel serverId: String, categoryId: String, channelI #### 多设备登录监听事件 -```swift +```Swift (void)multiDevicesCircleChannelEventDidReceive:(EMMultiDevicesEvent)aEvent channelId:(NSString * _Nonnull)channelId ext:(id _Nullable)aExt diff --git a/docs/product/circle/channel_mgmt_web.md b/docs/product/circle/channel_mgmt_web.md index a1fcac4ed..a22d6d569 100644 --- a/docs/product/circle/channel_mgmt_web.md +++ b/docs/product/circle/channel_mgmt_web.md @@ -41,7 +41,7 @@ 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverID', isPublic: true, @@ -81,7 +81,7 @@ WebIM.conn.createChannel(options).then((res) => { - 调用 `inviteUserToChannel` 方法邀请用户加入频道,示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -99,7 +99,7 @@ WebIM.conn.inviteUserToChannel(options).then(() => { - 用户调用 `acceptChannelInvite` 方法同意加入频道。邀请人会收到 `onChannelEvent` 回调,事件为 `acceptInvite`,频道所有成员(不包括该新加入的成员)收到 `onChannelEvent` 回调,事件为`memberPresence`。示例代码如下: - ```javascript + ```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -111,7 +111,7 @@ WebIM.conn.inviteUserToChannel(options).then(() => { - 用户调用 `rejectChannelInvite` 方法拒绝加入频道。邀请人会收到 `onChannelEvent` 回调,事件为 `rejectInvite`。示例代码如下: - ```javascript + ```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -129,7 +129,7 @@ WebIM.conn.inviteUserToChannel(options).then(() => { 若更换频道所属的频道分组,需调用 [`transferChannel`](#更换指定频道的频道分组)方法。 -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId' @@ -149,7 +149,7 @@ WebIM.conn.updateChannel(options).then((res) => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -166,7 +166,7 @@ WebIM.conn.destroyChannel(options).then(() => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -183,7 +183,7 @@ WebIM.conn.getChannelDetail(options).then((res) => { 社区成员可以调用 `getPublicChannels` 方法获取社区下的所有公开频道的列表,示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', pageSize: 20, @@ -199,7 +199,7 @@ WebIM.conn.getPublicChannels(options).then((res) => { 社区成员可以调用 `getPrivateChannels` 方法获取社区下所有私密频道的列表,示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', pageSize: 20, @@ -215,7 +215,7 @@ WebIM.conn.getPrivateChannels(options).then((res) => { 社区成员可以调用 `getCategoryPublicChannels` 方法获取频道分组下的所有公开频道列表,示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', categoryId: 'categoryId', @@ -232,7 +232,7 @@ WebIM.conn.getCategoryPublicChannels(options).then((res) => { 社区成员可以调用 `getCategoryPrivateChannels` 方法获取频道分组下的所有私密频道列表,示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', categoryId: 'categoryId', @@ -263,7 +263,7 @@ WebIM.conn.getCategoryPrivateChannels(options).then((res) => { 2. 调用 `joinChannel` 方法传入社区 ID 和频道 ID,申请加入对应频道。用户加入频道后,频道所有成员(不包括该新加入的成员)会收到 `onChannelEvent` 回调,事件为 `memberPresence`。示例代码如下: - ```javascript + ```JavaScript let options = { serverId: 'serverId', channelId: 'channelId' @@ -288,7 +288,7 @@ WebIM.conn.getCategoryPrivateChannels(options).then((res) => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId' @@ -309,7 +309,7 @@ WebIM.conn.leaveChannel(options).then(() => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -329,7 +329,7 @@ WebIM.conn.removeChannelMember(options).then(() => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -348,7 +348,7 @@ WebIM.conn.muteChannelMember(options).then(() => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -364,7 +364,7 @@ WebIM.conn.unmuteChannelMember(options).then(() => { 社区所有者和社区管理员可以调用 `getChannelMutelist` 方法获取频道下的禁言列表。 -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -384,7 +384,7 @@ WebIM.conn.getChannelMutelist(options).then((res) => { - 对于其他模式的频道创建时,创建者直接加入频道。因此,频道创建者算入频道成员数量,查询频道成员列表返回频道创建者。 -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -401,7 +401,7 @@ WebIM.conn.getChannelMembers(options).then((res) => { 社区成员可以调用 `isInChannel` 方法查询自己是否在指定频道中。示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', channelId: 'channelId', @@ -416,7 +416,7 @@ WebIM.conn.isInChannel(options).then((res) => { Circle 提供 `addEventHandler` 方法用于注册监听事件。开发者可以通过设置此监听,获取频道分组中的事件。 -```javascript +```JavaScript WebIM.conn.addEventHandler("channelEvent", { onChannelEvent: (e) => { const { operation } = e; diff --git a/docs/product/circle/circle_quickstart_android.md b/docs/product/circle/circle_quickstart_android.md index 4d4958e14..a6f8a57e3 100644 --- a/docs/product/circle/circle_quickstart_android.md +++ b/docs/product/circle/circle_quickstart_android.md @@ -31,7 +31,7 @@ 你可以调用 `createServer` 方法创建一个社区: -```java +```Java EMCircleServerAttribute attribute = new EMCircleServerAttribute(); attribute.setName(name); attribute.setDesc(desc); @@ -53,7 +53,7 @@ EMClient.getInstance().chatCircleManager().createServer(attribute, new EMValueCa 你可以调用 `joinServer` 方法加入一个现有社区: -```java +```Java EMClient.getInstance().chatCircleManager().joinServer(serverId, new EMValueCallBack() { @Override public void onSuccess(EMCircleServer value) { @@ -72,7 +72,7 @@ EMClient.getInstance().chatCircleManager().joinServer(serverId, new EMValueCallB 你可以调用 `fetchJoinedServers` 方法获取已加入的社区列表: -```java +```Java EMClient.getInstance().chatCircleManager().fetchJoinedServers(20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -99,7 +99,7 @@ EMClient.getInstance().chatCircleManager().fetchJoinedServers(20, null, new EMVa 你可以调用 `createChannel` 方法创建频道: -```java +```Java EMCircleChannelAttribute attribute = new EMCircleChannelAttribute(); attribute.setName(name); attribute.setDesc(desc); @@ -124,7 +124,7 @@ EMClient.getInstance().chatCircleManager().createChannel(serverId, categoryId, a 你可以调用 `joinChannel` 方法加入一个频道: -```java +```Java EMClient.getInstance().chatCircleManager().joinChannel(serverId, channelId, new EMValueCallBack() { @Override public void onSuccess(EMCircleChannel value) { @@ -142,7 +142,7 @@ EMClient.getInstance().chatCircleManager().joinChannel(serverId, channelId, new 你可以调用 `fetchPublicChannelsInServer` 方法获取社区下的公开频道列表: -```java +```Java EMClient.getInstance().chatCircleManager().fetchPublicChannelsInServer(serverId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -160,7 +160,7 @@ EMClient.getInstance().chatCircleManager().fetchPublicChannelsInServer(serverId, 你可以调用 `fetchVisiblePrivateChannelsInServer` 方法获取社区下所有私密频道的列表: -```java +```Java EMClient.getInstance().chatCircleManager().fetchVisiblePrivateChannelsInServer(serverId, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -184,7 +184,7 @@ EMClient.getInstance().chatCircleManager().fetchVisiblePrivateChannelsInServer(s 你可以调用 `sendMessage` 方法在指定频道中发送一条消息: -```java +```Java // 创建一条文本消息,`content` 为消息文字内容,`channelID` 为频道 ID EMMessage message = EMMessage.createTextSendMessage(content, channelID); // 设置消息类型,即设置 `Message` 类的 `ChatType` 为 `GroupChat`。 @@ -217,7 +217,7 @@ EMClient.getInstance().chatManager().sendMessage(message); 你可以注册 `EMMessageListener` 监听器接收消息。 -```java +```Java EMMessageListener msgListener = new EMMessageListener() { // 收到消息,遍历消息队列,解析和显示。 diff --git a/docs/product/circle/circle_quickstart_ios.md b/docs/product/circle/circle_quickstart_ios.md index 9b242f74a..073f5090c 100644 --- a/docs/product/circle/circle_quickstart_ios.md +++ b/docs/product/circle/circle_quickstart_ios.md @@ -31,7 +31,7 @@ 你可以调用 `createServer` 方法创建一个社区: -```swift +```Swift let attribute = EMCircleServerAttribute() attribute.name = name attribute.icon = icon @@ -50,7 +50,7 @@ EMClient.shared().circleManager?.createServer(attribute) { server, error in 你可以调用 `joinServer` 方法加入一个现有社区: -```swift +```Swift EMClient.shared().circleManager?.joinServer(serverId) { server, error in if let error = error { Toast.show(error.errorDescription, duration: 2) @@ -64,7 +64,7 @@ EMClient.shared().circleManager?.joinServer(serverId) { server, error in 你可以调用 `fetchJoinedServers` 方法获取已加入的社区列表: -```swift +```Swift EMClient.shared().circleManager?.fetchJoinedServers(20, cursor: self.cursor) { result, error in if let error = error { Toast.show(error.errorDescription, duration: 2) @@ -86,7 +86,7 @@ EMClient.shared().circleManager?.fetchJoinedServers(20, cursor: self.cursor) { r 你可以调用 `createChannel` 方法创建频道: -```swift +```Swift let attribute = EMCircleChannelAttribute() attribute.name = name attribute.desc = desc @@ -103,7 +103,7 @@ EMClient.shared().circleManager?.createChannel(self.serverId, categoryId: self.c 你可以调用 `joinChannel` 方法加入一个频道: -```swift +```Swift EMClient.shared().circleManager?.joinChannel(serverId, channelId: channelId) { channel, error in if let error = error { Toast.show(error.errorDescription, duration: 2) @@ -117,7 +117,7 @@ EMClient.shared().circleManager?.joinChannel(serverId, channelId: channelId) { c 你可以调用 `fetchPublicChannelsInServer` 方法获取社区下的公开频道列表: -```swift +```Swift EMClient.shared().circleManager?.fetchPublicChannels(inServer: serverId, limit: 20, cursor: nil) { result, error in if let error = error { Toast.show(error.errorDescription, duration: 2) @@ -130,7 +130,7 @@ EMClient.shared().circleManager?.fetchPublicChannels(inServer: serverId, limit: 你可以调用 `fetchPrivateChannelsInServer` 方法获取社区下所有私密频道的列表: -```swift +```Swift EMClient.shared().circleManager?.fetchPrivateChannels(inServer: self.serverId, limit: 20, cursor: nil) { result, error in if let error = error { Toast.show(error.errorDescription, duration: 2) @@ -149,7 +149,7 @@ EMClient.shared().circleManager?.fetchPrivateChannels(inServer: self.serverId, l 你可以调用 `sendMessage` 方法在指定频道中发送一条消息: -```swift +```Swift let messageBody = EMTextMessageBody(text: text) let message = EMChatMessage(conversationID: channelId, from: selfUserId, to: channelId, body: messageBody, ext: nil) message.isChannelMessage = true @@ -167,13 +167,13 @@ EMClient.shared().chatManager.send(message, progress: nil) { message, error in 添加 `ChatManager` 回调的代理对象: -```swift +```Swift EMClient.shared().chatManager?.add(self, delegateQueue: nil) ``` 代理对象实现 `EMChatManagerDelegate` 接口的 `messagesDidReceive` 方法。 -```swift +```Swift extension ChatViewController : EMChatManagerDelegate { func messagesDidReceive(_ aMessages: [EMChatMessage]) { diff --git a/docs/product/circle/circle_quickstart_web.md b/docs/product/circle/circle_quickstart_web.md index f505a9b17..c29da67f5 100644 --- a/docs/product/circle/circle_quickstart_web.md +++ b/docs/product/circle/circle_quickstart_web.md @@ -31,7 +31,7 @@ 你可以调用 `createServer` 方法创建一个社区: -```javascript +```JavaScript let options = { name: 'server name', icon: 'image url', @@ -50,7 +50,7 @@ WebIM.conn.createServer(options).then(res => { 你可以调用 `joinServer` 方法加入一个现有社区: -```javascript +```JavaScript WebIM.conn.joinServer({serverId: 'serverId'}).then(res=>{ console.log(res) }) @@ -60,7 +60,7 @@ WebIM.conn.joinServer({serverId: 'serverId'}).then(res=>{ 你可以调用 `getJoinedServers` 方法获取已加入的社区列表: -```javascript +```JavaScript WebIM.conn.getJoinedServers({pageSize: '10',cursor: ''}).then(res=>{ console.log(res) }) @@ -79,7 +79,7 @@ WebIM.conn.getJoinedServers({pageSize: '10',cursor: ''}).then(res=>{ 你可以调用 `createChannel` 方法创建频道: -```javascript +```JavaScript let options = { serverId: 'serverID', isPublic: true, @@ -100,7 +100,7 @@ WebIM.conn.createChannel(options).then(res => { 你可以调用 `joinChannel` 方法加入频道: -```javascript +```JavaScript WebIM.conn.joinChannel({serverId: 'serverId', channelId: 'channelId'}).then(res => { console.log(res) }) @@ -110,7 +110,7 @@ WebIM.conn.joinChannel({serverId: 'serverId', channelId: 'channelId'}).then(res 你可以调用 `getPublicChannels` 方法获取社区下的公开频道列表: -```javascript +```JavaScript let options = { serverId: 'serverId', pageSize: 20, @@ -125,7 +125,7 @@ WebIM.conn.getPublicChannels(options).then(res => { 你可以调用 `getPrivateChannels` 方法获取社区下所有私密频道的列表: -```javascript +```JavaScript let options = { serverId: 'serverId', pageSize: 20, @@ -146,7 +146,7 @@ WebIM.conn.getPrivateChannels(options).then(res => { 你可以调用 `create` 方法构建一条文本消息并在指定频道中发送: -```javascript +```JavaScript // 在指定频道发送文本消息。 function sendChannelText() { let option = { @@ -168,7 +168,7 @@ function sendChannelText() { 你可以通过 `addEventHandler` 注册监听器接收文本消息的回调 。 -```javascript +```JavaScript WebIM.conn.addEventHandler('messageHandler', { // 收到文本消息。 onTextMessage: function ( message ) { diff --git a/docs/product/circle/server_mgmt_android.md b/docs/product/circle/server_mgmt_android.md index 57ebbc3f8..a75b38d33 100644 --- a/docs/product/circle/server_mgmt_android.md +++ b/docs/product/circle/server_mgmt_android.md @@ -39,7 +39,7 @@ 示例代码如下: -```java +```Java EMCircleServerAttribute attribute = new EMCircleServerAttribute(); attribute.setName(name); attribute.setDesc(desc); @@ -74,7 +74,7 @@ EMClient.getInstance().chatCircleManager().createServer(attribute, new EMValueCa 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().inviteUserToServer(serverId, inviteeUserId, "欢迎加入server", new EMCallBack() { @Override public void onSuccess() { @@ -94,7 +94,7 @@ EMClient.getInstance().chatCircleManager().createServer(attribute, new EMValueCa - 若同意加入社区,调用 `acceptServerInvitation` 方法。邀请人收到 `EMCircleServerListener#onInvitationBeAccepted` 事件,社区内所有成员(不包括加入社区的该新成员)会收到 `EMCircleServerListener#onMemberJoinedServer` 事件。示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().acceptServerInvitation(serverId, inviterUserID, new EMValueCallBack() { @Override public void onSuccess(EMCircleServer value) { @@ -110,7 +110,7 @@ EMClient.getInstance().chatCircleManager().acceptServerInvitation(serverId, invi - 若拒绝加入社区,调用 `declineServerInvitation` 方法。邀请人收到 `EMCircleServerListener#onInvitationBeDeclined` 事件。示例代码如下: - ```java + ```Java EMClient.getInstance().chatCircleManager().declineServerInvitation(serverId, inviterUserID, new EMCallBack() { @Override public void onSuccess() { @@ -130,7 +130,7 @@ EMClient.getInstance().chatCircleManager().declineServerInvitation(serverId, inv 示例代码如下: -```java +```Java EMCircleServerAttribute serverAttribute = new EMCircleServerAttribute(); serverAttribute.setName("name"); serverAttribute.setIcon("iconUrl"); @@ -155,7 +155,7 @@ EMClient.getInstance().chatCircleManager().updateServer(serverId, serverAttribut 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().destroyServer(serverId, new EMCallBack() { @Override public void onSuccess() { @@ -175,7 +175,7 @@ EMClient.getInstance().chatCircleManager().destroyServer(serverId, new EMCallBac 示例代码如下: -```java +```Java String tag = "动漫"; ArrayList tags = new ArrayList<>(); tags.add(tag); @@ -199,7 +199,7 @@ EMClient.getInstance().chatCircleManager().addTagsToServer(serverId, tags, new E 示例代码如下: -```java +```Java ArrayList tagsRemoved = new ArrayList<>(); tagsRemoved.add("你要移除的tagId"); EMClient.getInstance().chatCircleManager().removeTagsFromServer(serverId, tagsRemoved, new EMCallBack() { @@ -219,7 +219,7 @@ EMClient.getInstance().chatCircleManager().removeTagsFromServer(serverId, tagsRe 社区成员可调用 `fetchServerTags` 方法获取社区的标签列表。 -```java +```Java EMClient.getInstance().chatCircleManager().fetchServerTags(serverId, new EMValueCallBack>() { @Override public void onSuccess(List value) { @@ -239,7 +239,7 @@ EMClient.getInstance().chatCircleManager().removeTagsFromServer(serverId, tagsRe - 根据社区名称搜索,支持基于通过社区全名搜索和模糊搜索分页获取数据。若使用模糊搜索,你需要传入社区名称中最左侧的单个字或词汇,或包含该字或词汇的关键字。例如社区名称为 `足球社区01`,传入 `足`或`足球` 都可搜索出该社区,而使用 `球` 或 `社区01` 则搜索不到该社区。 - 若根据标签名称搜索,需传入完整的标签名称,不支持模糊搜索。该类型查询直接获取带有该标签的所有社区,不支持分页查询。 -```java +```Java EMCircleServerSearchType searchType=EMCircleServerSearchType.EM_CIRCLE_SERVER_SEARCH_TYPE_NAME; String keyword="足球"; EMClient.getInstance().chatCircleManager().fetchServers(searchType, keyword, 20, null, new EMValueCallBack>() { @@ -261,7 +261,7 @@ EMClient.getInstance().chatCircleManager().fetchServers(searchType, keyword, 20, 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchServerDetail(serverId, new EMValueCallBack() { @Override public void onSuccess(EMCircleServer value) { @@ -281,7 +281,7 @@ EMClient.getInstance().chatCircleManager().fetchServerDetail(serverId, new EMVal 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchJoinedServers(20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -301,7 +301,7 @@ EMClient.getInstance().chatCircleManager().fetchJoinedServers(20, null, new EMVa 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchServerMembers(serverID, 20, null, new EMValueCallBack>() { @Override public void onSuccess(EMCursorResult value) { @@ -336,7 +336,7 @@ EMClient.getInstance().chatCircleManager().fetchServerMembers(serverID, 20, null 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().joinServer(serverId, new EMValueCallBack() { @Override public void onSuccess(EMCircleServer value) { @@ -363,7 +363,7 @@ EMClient.getInstance().chatCircleManager().joinServer(serverId, new EMValueCallB 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().leaveServer(serverId, new EMCallBack() { @Override public void onSuccess() { @@ -383,7 +383,7 @@ EMClient.getInstance().chatCircleManager().leaveServer(serverId, new EMCallBack( 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().removeUserFromServer(serverId, userId, new EMCallBack() { @Override public void onSuccess() { @@ -403,7 +403,7 @@ EMClient.getInstance().chatCircleManager().leaveServer(serverId, new EMCallBack( 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().checkSelfIsInServer(serverId, new EMValueCallBack() { @Override public void onSuccess(Boolean value) { @@ -423,7 +423,7 @@ EMClient.getInstance().chatCircleManager().checkSelfIsInServer(serverId, new EMV 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().fetchSelfServerRole(serverId, new EMValueCallBack() { @Override public void onSuccess(EMCircleUserRole value) { @@ -445,7 +445,7 @@ EMClient.getInstance().chatCircleManager().fetchSelfServerRole(serverId, new EMV 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().addModeratorToServer(serverId, userId, new EMCallBack() { @Override public void onSuccess() { @@ -467,7 +467,7 @@ EMClient.getInstance().chatCircleManager().addModeratorToServer(serverId, userId 示例代码如下: -```java +```Java EMClient.getInstance().chatCircleManager().removeModeratorFromServer(serverId, userId, new EMCallBack() { @Override public void onSuccess() { @@ -485,7 +485,7 @@ EMClient.getInstance().chatCircleManager().removeModeratorFromServer(serverId, u `EMCircleManager` 中提供社区事件的监听接口。开发者可以通过设置此监听,获取社区中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```java +```Java EMCircleServerListener circleServerListener = new EMCircleServerListener() { //社区被创建。参数社区创建的成员(除操作者外)会收到该事件。 diff --git a/docs/product/circle/server_mgmt_ios.md b/docs/product/circle/server_mgmt_ios.md index d47e24cc7..3bb4ac379 100644 --- a/docs/product/circle/server_mgmt_ios.md +++ b/docs/product/circle/server_mgmt_ios.md @@ -39,7 +39,7 @@ 示例代码如下: -```swift +```Swift let attribute = EMCircleServerAttribute() attribute.name = serverName attribute.icon = serverIcon @@ -68,7 +68,7 @@ EMClient.shared().circleManager?.createServer(attribute) { server, error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.inviteUserToServer(serverId: serverId, userId: userId, welcome: welcome) { error in } ``` @@ -77,14 +77,14 @@ EMClient.shared().circleManager?.inviteUserToServer(serverId: serverId, userId: - 若同意加入社区,调用 `acceptServerInvitation` 方法。邀请人收到 `EMCircleManagerServerDelegate#onServerInvitationBeAccepted` 事件,社区内所有成员(不包括加入社区的该新成员)会收到 `EMCircleManagerServerDelegate#onMemberJoinedServer` 事件。示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.acceptServerInvitation(serverId, inviter: inviter) { server, error in } ``` - 若拒绝加入社区,调用 `declineServerInvitation` 方法。邀请人收到 `EMCircleManagerServerDelegate#onServerInvitationBeDeclined` 事件。示例代码如下: - ```swift + ```Swift EMClient.shared().circleManager?.declineServerInvitation(serverId, inviter: inviter) { error in } ``` @@ -95,7 +95,7 @@ EMClient.shared().circleManager?.declineServerInvitation(serverId, inviter: invi 示例代码如下: -```swift +```Swift let attribute = EMCircleServerAttribute() attribute.name = serverName attribute.desc = serverDesc @@ -112,7 +112,7 @@ EMClient.shared().circleManager?.updateServer(serverId, attribute: attribute) { 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.destroyServer(serverId) { error in } ``` @@ -123,7 +123,7 @@ EMClient.shared().circleManager?.destroyServer(serverId) { error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.addTags(toServer: serverId, tags: ["tag1", "tag2"]) { tags, error in } ``` @@ -134,7 +134,7 @@ EMClient.shared().circleManager?.addTags(toServer: serverId, tags: ["tag1", "tag 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.removeTags(fromServer: serverId, tagIds: ["tagId1", "tagId2"]) { error in } ``` @@ -143,7 +143,7 @@ EMClient.shared().circleManager?.removeTags(fromServer: serverId, tagIds: ["tagI 社区成员可调用 `fetchServerTags` 方法获取社区的标签列表。 -```swift +```Swift EMClient.shared.circleManager?.fetchServerTags(serverId, completion: { tags, error in }) @@ -155,7 +155,7 @@ EMClient.shared.circleManager?.fetchServerTags(serverId, completion: { tags, err - 根据社区名称搜索,支持基于通过社区全名搜索和模糊搜索分页获取数据。若使用模糊搜索,你需要传入社区名称中最左侧的单个字或词汇,或包含该字或词汇的关键字。例如社区名称为 `足球社区01`,传入 `足`或`足球` 都可搜索出该社区,而使用 `球` 或 `社区01` 则搜索不到该社区。 - 若根据标签名称搜索,需传入完整的标签名称,不支持模糊搜索。该类型查询直接获取带有该标签的所有社区,不支持分页查询。 -```swift +```Swift EMClient.shared().circleManager?.fetchServers(with: .name, keyword: keyword, limit: 20, cursor: nil, completion: { servers, error in }) @@ -167,7 +167,7 @@ EMClient.shared().circleManager?.fetchServers(with: .name, keyword: keyword, lim 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchServerDetail(serverId) { server, error in } ``` @@ -178,7 +178,7 @@ EMClient.shared().circleManager?.fetchServerDetail(serverId) { server, error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchJoinedServers(20, cursor: cursor) { result, error in } ``` @@ -189,7 +189,7 @@ EMClient.shared().circleManager?.fetchJoinedServers(20, cursor: cursor) { result 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchServerMembers(serverId, limit: 20, cursor: cursor) { result, error in } ``` @@ -214,7 +214,7 @@ EMClient.shared().circleManager?.fetchServerMembers(serverId, limit: 20, cursor: 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.joinServer(serverId) { server, error in } ``` @@ -231,7 +231,7 @@ EMClient.shared().circleManager?.joinServer(serverId) { server, error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.leaveServer(serverId) { error in } ``` @@ -242,7 +242,7 @@ EMClient.shared().circleManager?.leaveServer(serverId) { error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.removeUser(fromServer: serverId, userId: userId) { error in } ``` @@ -253,7 +253,7 @@ EMClient.shared().circleManager?.removeUser(fromServer: serverId, userId: userId 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.checkSelfIs(inServer: serverId) { isIn, error in } ``` @@ -264,7 +264,7 @@ EMClient.shared().circleManager?.checkSelfIs(inServer: serverId) { isIn, error i 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.fetchSelfServerRole(serverId) { role, error in } ``` @@ -277,7 +277,7 @@ EMClient.shared().circleManager?.fetchSelfServerRole(serverId) { role, error in 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.addModerator(toServer: serverId, userId: userId) { error in } ``` @@ -290,7 +290,7 @@ EMClient.shared().circleManager?.addModerator(toServer: serverId, userId: userId 示例代码如下: -```swift +```Swift EMClient.shared().circleManager?.removeModerator(fromServer: serverId, userId: userId) { error in } ``` @@ -299,14 +299,14 @@ EMClient.shared().circleManager?.removeModerator(fromServer: serverId, userId: u `IEMCircleManager` 中提供社区事件的监听接口。开发者可以通过设置此监听,获取社区中的事件,并做出相应处理。如果不再使用该监听,需要移除,防止出现内存泄漏。 -```swift +```Swift //添加社区回调代理。 EMClient.shared().circleManager?.add(serverDelegate: self, queue: nil) //移除社区回调代理。 EMClient.shared().circleManager?.remove(serverDelegate: self) ``` -```swift +```Swift //社区信息更新。社区所有成员(除操作者外)会收到该事件。 func onServerUpdated(_ event: EMCircleServerEvent) { diff --git a/docs/product/circle/server_mgmt_web.md b/docs/product/circle/server_mgmt_web.md index 6d5bc5e40..2e1e83c7a 100644 --- a/docs/product/circle/server_mgmt_web.md +++ b/docs/product/circle/server_mgmt_web.md @@ -39,7 +39,7 @@ 示例代码如下: -```javascript +```JavaScript let options = { name: 'server name', icon: 'image url', @@ -70,7 +70,7 @@ WebIM.conn.createServer(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', userId: 'userId', @@ -87,7 +87,7 @@ WebIM.conn.inviteUserToServer(options).then(res => { 示例代码如下: - ```javascript + ```JavaScript let options = { serverId: 'serverId', inviter: 'userId', @@ -101,7 +101,7 @@ WebIM.conn.inviteUserToServer(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', inviter: 'userId', @@ -117,7 +117,7 @@ WebIM.conn.rejectServerInvite(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', name: 'new name', @@ -138,7 +138,7 @@ WebIM.conn.updateServer(options).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.destroyServer({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -150,7 +150,7 @@ WebIM.conn.destroyServer({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', tags: ['学习', '体育'], @@ -166,7 +166,7 @@ WebIM.conn.addServerTags(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', tags: ['tagId', 'tagId'], @@ -182,7 +182,7 @@ WebIM.conn.removeServerTags(options).then(res => { 示例代码如下: -```javascript +```JavaScript let options = { serverId: 'serverId', } @@ -199,7 +199,7 @@ WebIM.conn.getServerTags(options).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.getServers({keyword: 'keyword',type:'serverName'}).then(res => { console.log(res) }) @@ -211,7 +211,7 @@ WebIM.conn.getServers({keyword: 'keyword',type:'serverName'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.getServerDetail({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -223,7 +223,7 @@ WebIM.conn.getServerDetail({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.getJoinedServers({pageSize: '10',cursor: ''}).then(res => { console.log(res) }) @@ -235,7 +235,7 @@ WebIM.conn.getJoinedServers({pageSize: '10',cursor: ''}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.getServerMembers({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -261,7 +261,7 @@ WebIM.conn.getServerMembers({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.joinServer({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -279,7 +279,7 @@ WebIM.conn.joinServer({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.leaveServer({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -290,7 +290,7 @@ WebIM.conn.leaveServer({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.removeServerMember({serverId: 'serverId',userId:'userId'}).then(res => { console.log(res) }) @@ -302,7 +302,7 @@ WebIM.conn.removeServerMember({serverId: 'serverId',userId:'userId'}).then(res = 示例代码如下: -```javascript +```JavaScript WebIM.conn.isInServer({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -313,7 +313,7 @@ WebIM.conn.isInServer({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.getServerRole({serverId: 'serverId'}).then(res => { console.log(res) }) @@ -327,7 +327,7 @@ WebIM.conn.getServerRole({serverId: 'serverId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.setServerAdmin({serverId: 'serverId',userId:'userId'}).then(res => { console.log(res) }) @@ -341,7 +341,7 @@ WebIM.conn.setServerAdmin({serverId: 'serverId',userId:'userId'}).then(res => { 示例代码如下: -```javascript +```JavaScript WebIM.conn.removeServerAdmin({serverId: 'serverId',userId:'userId'}).then(res => { console.log(res) }) @@ -351,7 +351,7 @@ WebIM.conn.removeServerAdmin({serverId: 'serverId',userId:'userId'}).then(res => Circle 提供 `addEventHandler` 方法用于注册监听事件。开发者可以通过设置此监听,获取频道分组中的事件。 -```javascript +```JavaScript WebIM.conn.addEventHandler('CIRCLE',{ onServerEvent:(msg) => { switch (msg.operation){ diff --git a/docs/product/faq_integration_issues.md b/docs/product/faq_integration_issues.md index f7544a9a3..bd1458d0a 100644 --- a/docs/product/faq_integration_issues.md +++ b/docs/product/faq_integration_issues.md @@ -18,7 +18,7 @@ SDK 的 log 文件在 app 的安装目录中,可以通过 API 获取,获取 通过 API 获取 log 文件路径, 返回格式为 `xxxxx/xxxx/log.gz` -```java +```Java logPath = EMClient.getInstance().compressLogs(); ``` diff --git a/docs/product/solution_common/group_@.md b/docs/product/solution_common/group_@.md index 878db472d..e8881a554 100644 --- a/docs/product/solution_common/group_@.md +++ b/docs/product/solution_common/group_@.md @@ -89,7 +89,7 @@ EMClient.getInstance().chatManager().sendMessage(msg); @tab iOS -```swift +```Swift let textBody = EMTextMessageBody(text: "@userId1 你好") // @ 指定用户的消息构造如下。如果要 @ 所有人,ext 可以设置为 ["em_at_list": "All"]。 let msg = EMMessage(conversationID: "groupId", body: textBody, ext: ["em_at_list": ["userId1"]]) @@ -105,7 +105,7 @@ EMClient.shared().chatManager?.send(msg, progress: nil, completion: { msg, err i @tab Web -```javascript +```JavaScript const message = chatSDK.message.create({ to: "userId", chatType: "groupChat", @@ -210,7 +210,7 @@ private void handleMentionedMessage(EMMessage messages) { @tab iOS -```swift +```Swift func handleMentionedMessage(_ message: EMChatMessage) { let atListInfo = message.ext?["em_at_list"] if let atListInfo = atListInfo as? String, @@ -235,7 +235,7 @@ func messagesDidReceive(_ aMessages: [EMChatMessage]) { @tab Web -```javascript +```JavaScript receiveMessage(message){ let mentionList = message?.ext?.em_at_list; // 收到文本消息 diff --git a/docs/product/solution_common/message_quote.md b/docs/product/solution_common/message_quote.md index 2d2659f65..23ea09f4e 100644 --- a/docs/product/solution_common/message_quote.md +++ b/docs/product/solution_common/message_quote.md @@ -73,7 +73,7 @@ @tab Java -```java +```Java EMMessage msg = EMMessage.createTextSendMessage("hi", conversationId); JSONObject jsonObject = new JSONObject(); @@ -93,7 +93,7 @@ EMMessage msg = EMMessage.createTextSendMessage("hi", conversationId); @tab Kotlin -```kotlin +```Kotlin val msg = EMMessage.createTextSendMessage("hi", conversationId) val jsonObject = JSONObject() @@ -118,7 +118,7 @@ EMMessage msg = EMMessage.createTextSendMessage("hi", conversationId); @tab iOS -```swift +```Swift let textBody = EMTextMessageBody(text: "hi") let ext = ["msgQuote": [ "msgID": <#quoted messageId#> @@ -135,7 +135,7 @@ let textBody = EMTextMessageBody(text: "hi") @tab Web -```javascript +```JavaScript sendMessage(message){ // 若引用消息存在,则将该消息到要发送的消息扩展中。 if ( @@ -290,7 +290,7 @@ private void handleQuotedMessage(EMMessage message) { @tab iOS -```swift +```Swift func handleQuotedMessage(_ message: EMChatMessage) { if let ext = message.ext { if let quotedInfo = ext["msgQuote"] as? [String: AnyObject] { @@ -313,7 +313,7 @@ func messagesDidReceive(_ aMessages: [EMChatMessage]) { @tab Web -```javascript +```JavaScript receiveMessage(message){ let msgQuote = message.ext.msgQuote; diff --git a/docs/product/voiceroom/client_implementation_ios.md b/docs/product/voiceroom/client_implementation_ios.md index 5fd64a39f..5f3360a6c 100644 --- a/docs/product/voiceroom/client_implementation_ios.md +++ b/docs/product/voiceroom/client_implementation_ios.md @@ -193,7 +193,7 @@ 通过 App Server 加入或离开语聊房的方法的示例代码如下: -```swift +```Swift // 加入语聊房 func uploadStatus( status: Bool) { guard let roomId = self.roomInfo?.room?.room_id else { return } @@ -235,7 +235,7 @@ 调用 [`setAudioEffectPreset`](https://docportal.shengwang.cn/cn/voice-call-4.x/API%20Reference/ios_ng/v4.2.2/API/rtc_api_overview_ng.html#ariaid-title129) 方法,在不改变原声的性别特征的前提下,设置人声音效。设置音效后,频道内所有用户都能听到该效果。 -```swift +```Swift rtcKit.setChannelProfile(.liveBroadcasting) rtcKit.setAudioProfile(.musicHighQuality) rtcKit.setAudioScenario(.gameStreaming) @@ -247,7 +247,7 @@ AI 降噪插件使用声网人工智能噪声消除算法,能够让远程交 可以开启或关闭 AI 降噪以及设置中级降噪和高级降噪。示例代码如下: -```swift +```Swift public func setAINS(with level: AINS_STATE) { switch level { case .high: diff --git a/docs/push/push_androidvendor_statistics.md b/docs/push/push_androidvendor_statistics.md index 637a3eb14..4062aa627 100644 --- a/docs/push/push_androidvendor_statistics.md +++ b/docs/push/push_androidvendor_statistics.md @@ -91,7 +91,7 @@ 继承`FirebaseMessagingService`的`Service`里去实现`handleIntent`方法,添加上报送达事件的代码 -```java +```Java public class EMFCMMSGService extends FirebaseMessagingService { @Override @@ -123,7 +123,7 @@ public class EMFCMMSGService extends FirebaseMessagingService { 启动页的`onCreate`里添加上报点击事件的代码。 -```java +```Java Bundle bundle = getIntent().getExtras(); if(bundle !=null){ String push = bundle.getString("EPush"); @@ -155,7 +155,7 @@ EMClient.getInstance().pushManager().asyncReportPushAction(taskId, provider, act 以小米推送为例,在厂商的点击回调里去解析上报点击事件。 -```java +```Java public void onNotificationMessageClicked(Context context, MiPushMessage message) { String content = message.getContent(); diff --git a/docs/push/push_apns_deliver_statistics.md b/docs/push/push_apns_deliver_statistics.md index d3c59817c..ce591ad22 100644 --- a/docs/push/push_apns_deliver_statistics.md +++ b/docs/push/push_apns_deliver_statistics.md @@ -70,13 +70,13 @@ APNs 的送达统计 SDK 下载地址: 在 **NotificationService.m** 里引入头文件: -```objectiveC +```Objective-C #import ``` 在系统提供处理推送的方法里调用 EMPushServiceExt 的两个方法,这两个方法必须都调用,且设置 Appkey的方法需要先调用。 -```objectiveC +```Objective-C - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { self.contentHandler = contentHandler; self.bestAttemptContent = [request.content mutableCopy]; diff --git a/docs/push/push_integration_note_ios.md b/docs/push/push_integration_note_ios.md index fbc0d39a7..2c08aa4f7 100644 --- a/docs/push/push_integration_note_ios.md +++ b/docs/push/push_integration_note_ios.md @@ -69,7 +69,7 @@ demo 中的 SDK 文件夹为 **Hyphenate SDK**,将 SDK 文件夹拖入到工 第 2 步:在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。 -```objectiveC +```Objective-C - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //AppKey:注册的 AppKey,详细见下面注释。 @@ -102,7 +102,7 @@ demo 中的 SDK 文件夹为 **Hyphenate SDK**,将 SDK 文件夹拖入到工 登录:调用 SDK 的登录接口进行的操作。建议使用异步登录方法,防止网络不好的情况下,出现卡 UI 主线程的情况出现。 -```objectiveC +```Objective-C [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { NSLog(@"登录成功"); @@ -118,7 +118,7 @@ demo 中的 SDK 文件夹为 **Hyphenate SDK**,将 SDK 文件夹拖入到工 ##### 1.注册开启推送通知 -```objectiveC +```Objective-C if (NSClassFromString(@"UNUserNotificationCenter")) { //注册推送,用于 iOS 10 及以上版本。 [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError *error) { @@ -154,7 +154,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { 如果是 iOS 13 及以上的系统,请将 SDK 更新至 v3.6.4 或以上版本。 ::: -```objectiveC +```Objective-C // 将获得的 deviceToken 传给 SDK。 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { @@ -166,7 +166,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { 3.开启环信推送处理 -```objectiveC +```Objective-C [[EMLocalNotificationManager sharedManager] launchWithDelegate:self]; ``` @@ -178,7 +178,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { 实现以下两个代理,通过 completionHandler 您可以更改通知方式: -```objectiveC +```Objective-C - (void)emuserNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { NSDictionary *userInfo = notification.request.content.userInfo; @@ -206,7 +206,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { 通过下面代理获取推送相关信息: -```objectiveC +```Objective-C //如果需要获取数据,只实现这一个代理方法即可。 - (void)emGetNotificationMessage:(UNNotification *)notification state:(EMNotificationState)state { @@ -229,7 +229,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { 推送通知透传消息获取 -```objectiveC +```Objective-C //当应用收到环信推送透传消息时,此方法会被调用。 - (void)emDidReceivePushSilentMessage:(NSDictionary *)messageDic { @@ -241,7 +241,7 @@ if (NSClassFromString(@"UNUserNotificationCenter")) { iOS 的本地通知管理模块 `UNUserNotificationCenter` 是单例,一个 App 中只能有一个实例。如果在启用 SDK 在线推送后,App 又重写了 `[UNUserNotificationCenter currentNotificationCenter].delegate`,会将 SDK 中的 delegate 覆盖,此时,需要在 App 实现的 `UNUserNotificationCenterDelegate` 中调用 SDK 的相关处理,过程如下: -```objectiveC +```Objective-C - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { [[EMLocalNotificationManager sharedManager] userNotificationCenter:center willPresentNotification:notification withCompletionHandler:completionHandler]; diff --git a/docs/push/push_integration_process_android.md b/docs/push/push_integration_process_android.md index 03daeace4..056e08a08 100644 --- a/docs/push/push_integration_process_android.md +++ b/docs/push/push_integration_process_android.md @@ -49,7 +49,7 @@ implementation 'io.hyphenate:hyphenate-push:1.0.0' ### 初始化 -```java +```Java EMPushClientOptions options = new EMPushClientOptions(); //启用厂商推送,参考 IM 文档集成厂商推送。启用推送 API 如下: EMPushConfig.Builder builder = new EMPushConfig.Builder(context); @@ -72,14 +72,14 @@ EMPushClient.getInstance().init(this, options); 1. 注册用户。 -```java +```Java //注册失败会抛出 HyphenateException。 EMPushClient.getInstance().registerWithUsername(username, pwd);//同步方法,需在子线程里执行 ``` 1. 注册连接状态监听。 -```java +```Java EMPushClient.getInstance().addConnectionListener{ @Override public void onConnected() { @@ -95,13 +95,13 @@ EMPushClient.getInstance().addConnectionListener{ 1. 登录连接服务器 -```java +```Java EMPushClient.getInstance().connectWithUsername(username, password, new EMCallBack(){}); ``` 1. 注销登录 -```java +```Java EMPushClient.getInstance().disconnect(true, new EMCallBack(){}); ``` @@ -109,14 +109,14 @@ EMPushClient.getInstance().disconnect(true, new EMCallBack(){}); 厂商推送的点击事件上报,需要在 App 端调用 API 上报实现统计。 -```java +```Java //taskId 与 provider 需从推送数据里获取,如果获取 taskId 失败则传空字符串 EMPushClient.getInstance().reportPushAction(taskId, provider, action, new EMCallBack(){}); ``` 以小米推送为例,在厂商的点击回调里去解析上报点击事件。 -```java +```Java public void onNotificationMessageClicked(Context context, MiPushMessage message) { String content = message.getContent(); diff --git a/docs/push/push_integration_process_ios.md b/docs/push/push_integration_process_ios.md index 974ebf362..93bfcd1b7 100644 --- a/docs/push/push_integration_process_ios.md +++ b/docs/push/push_integration_process_ios.md @@ -61,13 +61,13 @@ pod install #### 1. 引入头文件 -```objectiveC +```Objective-C #import ``` #### 2. 初始化 EMPush -```objectiveC +```Objective-C EMPushClientOptions *option = [EMPushClientOptions optionsWithAppkey:@"appkey"]; option.enableConsoleLog = YES; option.isAutoLogin = YES; @@ -82,7 +82,7 @@ option.apnsCertName = @"apnsname"; 强烈建议开发者通过后台调用 REST 接口去注册环信 ID,不建议使用客户端注册。 -```objectiveC +```Objective-C [EMPushClient registerWithUsername:@"name" password:@"pswd" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { // 注册完成。 @@ -94,7 +94,7 @@ option.apnsCertName = @"apnsname"; #### 4. 连接服务器 -```objectiveC +```Objective-C [EMPushClient connectWithUsername:name password:pswd completion:^(NSString *aUsername, EMError *aError) { if (!aError) { // 连接到服务器。 @@ -106,7 +106,7 @@ option.apnsCertName = @"apnsname"; #### 5. 断开服务器连接 -```objectiveC +```Objective-C [EMPushClient disConnect:YES completion:^(EMError *aError) { if (!aError) { // 断开服务器连接。 @@ -120,6 +120,6 @@ option.apnsCertName = @"apnsname"; 添加代理的类必须实现 `EMClientDelegate`,进行代理实现。 -```objectiveC +```Objective-C [EMPushClient addConnectDelegate:self delegateQueue:nil]; ``` \ No newline at end of file diff --git a/docs/uikit/chatroomuikit/android/roomuikit_best_practice.md b/docs/uikit/chatroomuikit/android/roomuikit_best_practice.md index cf4d33f83..2629e754d 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_best_practice.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_best_practice.md @@ -8,7 +8,7 @@ 初始化 ChatroomUIKit 时,你可以传入 `option` 参数,设置各种选项。 -```kotlin +```Kotlin val chatroomUIKitOptions = ChatroomUIKitOptions( chatOptions = ChatSDKOptions(enableDebug = true), uiOptions = UiOptions( @@ -22,7 +22,7 @@ 你可以通过使用工程中的用户对象并遵守 `UserInfoProtocol` 协议登录 ChatroomUIKit,示例代码如下: -```kotlin +```Kotlin class YourAppUser: UserInfoProtocol { var userId: String = "your application user id" @@ -44,7 +44,7 @@ ChatroomUIKitClient.getInstance().login(YourAppUser, token, onSuccess = {}, onEr 2. 加载聊天室视图 `ComposeChatroom`,传入的参数包括聊天室 ID、布局参数、聊天室所有者的用户 ID 及一些选项。 -```kotlin +```Kotlin class ChatroomActivity : ComponentActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -59,7 +59,7 @@ class ChatroomActivity : ComponentActivity(){ 你可以调用 `registerRoomResultListener` 方法添加监听器用于监听 ChatroomUIKit 事件和错误。 -```kotlin +```Kotlin ChatroomUIKitClient.getInstance().registerRoomResultListener(this) ``` diff --git a/docs/uikit/chatroomuikit/android/roomuikit_config_item.md b/docs/uikit/chatroomuikit/android/roomuikit_config_item.md index 3c602d35c..236a9e3bb 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_config_item.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_config_item.md @@ -4,7 +4,7 @@ - 修改 `UiOptions` 中的可配置项。例如,你可以修改 `UiOptions` 中的 `useGiftsInList` 配置消息列表上是否显示礼物。 -```kotlin +```Kotlin val chatroomUIKitOptions = ChatroomUIKitOptions( uiOptions = UiOptions( targetLanguageList = listOf(GlobalConfig.targetLanguage.code), @@ -15,7 +15,7 @@ val chatroomUIKitOptions = ChatroomUIKitOptions( - 修改 `ViewModel` 中的可配置项。例如,你可以修改 `MessageListViewModel` 中的可配项,配置是否显示时间和头像。 -```kotlin +```Kotlin class MessageListViewModel( private val isDarkTheme: Boolean? = false, private val showDateSeparators: Boolean = true, diff --git a/docs/uikit/chatroomuikit/android/roomuikit_integrated.md b/docs/uikit/chatroomuikit/android/roomuikit_integrated.md index 18f1701b4..c229f2c3e 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_integrated.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_integrated.md @@ -18,7 +18,7 @@ 找到下载的 **ChatroomUIKit** 模块添加为本地依赖。将 [ChatroomUIKit](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomUIKit) 和 [ChatroomService](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomService) 模块导入到项目中。 -```kotlin +```Kotlin // settings.gradle include ':ChatroomUIKit' include ':ChatroomService' diff --git a/docs/uikit/chatroomuikit/android/roomuikit_quickstart.md b/docs/uikit/chatroomuikit/android/roomuikit_quickstart.md index f5a1832e3..00dd44d0e 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_quickstart.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_quickstart.md @@ -24,7 +24,7 @@ 找到下载的 **ChatroomUIKit** 模块添加为本地依赖。将 [ChatroomUIKit](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomUIKit) 和 [ChatroomService](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomService) 模块导入到项目中。 -```kotlin +```Kotlin // settings.gradle include ':ChatroomUIKit' include ':ChatroomService' @@ -43,7 +43,7 @@ dependencies { 初始化时,需传入 App Key。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**应用详情**页面查看 App Key。 -```kotlin +```Kotlin // 初始化 ChatroomUIKit class ChatroomApplication : Application() { @@ -69,7 +69,7 @@ class ChatroomApplication : Application() { 在开发环境中,你需要在环信控制台[创建 IM 用户](/product/enable_and_configure_IM.html#创建-im-用户),从你的 App Server 获取用户 token,详见[使用环信用户 token 鉴权](/product/easemob_user_token.html) 。 -```kotlin +```Kotlin ChatroomUIKitClient.getInstance().login("userId", "token") ``` @@ -81,7 +81,7 @@ class ChatroomApplication : Application() { 2. 加载聊天室视图 `ComposeChatroom`,传入的参数包括聊天室 ID 和聊天室所有者的用户 ID。 -```kotlin +```Kotlin class ChatroomActivity : ComponentActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/docs/uikit/chatroomuikit/android/roomuikit_run.md b/docs/uikit/chatroomuikit/android/roomuikit_run.md index c984cfb94..fa4b94430 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_run.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_run.md @@ -32,7 +32,7 @@ 找到下载的 **ChatroomUIKit** 模块添加为本地依赖。将 [ChatroomUIKit](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomUIKit) 和 [ChatroomService](https://github.com/easemob/UIKit_Chatroom_android/tree/dev/ChatroomService) 模块导入到项目中。 -```kotlin +```Kotlin // settings.gradle include ':ChatroomUIKit' include ':ChatroomService' @@ -51,7 +51,7 @@ dependencies { 1. 初始化 ChatroomUIKit。 -```kotlin +```Kotlin class ChatroomApplication : Application() { override fun onCreate() { @@ -65,13 +65,13 @@ class ChatroomApplication : Application() { 2. 登录 ChatroomUIKit。 -```kotlin +```Kotlin ChatroomUIKitClient.getInstance().login("userId", "token") ``` 3. 加载 ComposeChatroom 视图,传入 `roomId` 和聊天室所有者的 `UserEntity` 对象。 -```kotlin +```Kotlin class ChatroomActivity : ComponentActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/docs/uikit/chatroomuikit/android/roomuikit_theme.md b/docs/uikit/chatroomuikit/android/roomuikit_theme.md index ce1d989c3..bca9f790d 100644 --- a/docs/uikit/chatroomuikit/android/roomuikit_theme.md +++ b/docs/uikit/chatroomuikit/android/roomuikit_theme.md @@ -16,7 +16,7 @@ ChatroomUIkit 内置浅色和深色主题,默认为浅色主题。 你可以通过更新主题相关的配置项自定义主题。若对任何配置项不做修改,可以使用默认主题。 -```kotlin +```Kotlin @Composable fun ChatroomUIKitTheme( isDarkTheme: Boolean = isSystemInDarkTheme(), diff --git a/docs/uikit/chatroomuikit/flutter/roomuikit_integrated.md b/docs/uikit/chatroomuikit/flutter/roomuikit_integrated.md index 25ba7afdb..03f230341 100644 --- a/docs/uikit/chatroomuikit/flutter/roomuikit_integrated.md +++ b/docs/uikit/chatroomuikit/flutter/roomuikit_integrated.md @@ -16,7 +16,7 @@ - minSDKVersion 21。 - release 时需要在 `xxx/android/app/proguard-rules.pro` 中设置免混淆规则: -```java +```Java -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** ``` diff --git a/docs/uikit/chatroomuikit/ios/roomuikit_quickstart.md b/docs/uikit/chatroomuikit/ios/roomuikit_quickstart.md index 74e0de11a..05095c06f 100644 --- a/docs/uikit/chatroomuikit/ios/roomuikit_quickstart.md +++ b/docs/uikit/chatroomuikit/ios/roomuikit_quickstart.md @@ -27,7 +27,7 @@ 初始化时,需传入 App Key。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**应用详情**页面查看 App Key。 -```swift +```Swift import ChatroomUIKit @UIApplicationMain @@ -51,7 +51,7 @@ class AppDelegate:UIResponder,UIApplicationDelegate { 在开发环境中,你需要在环信控制台[创建 IM 用户](/product/enable_and_configure_IM.html#创建-im-用户),从你的 App Server 获取用户 token,详见[使用环信用户 token 鉴权](/product/easemob_user_token.html) 。 -```swift +```Swift ChatroomUIKitClient.shared.login(userId: "user id", token: "token", completion: <#T##(ChatError?) -> Void#>) ``` @@ -68,7 +68,7 @@ ChatroomUIKitClient.shared.login(userId: "user id", token: "token", completion: - 对于有刘海屏的机型,ChatroomView 的高度为以上算式的值加上底部安全区域的高度。 ::: -```swift +```Swift let roomView = ChatroomUIKitClient.shared.launchRoomView(roomId: "Chat room ID",frame: CGRect, ownerId: "Chatroom owner ID") ``` diff --git a/docs/uikit/chatroomuikit/ios/roomuikit_theme.md b/docs/uikit/chatroomuikit/ios/roomuikit_theme.md index a799b8a2d..228108ddf 100644 --- a/docs/uikit/chatroomuikit/ios/roomuikit_theme.md +++ b/docs/uikit/chatroomuikit/ios/roomuikit_theme.md @@ -14,11 +14,11 @@ ChatroomUIkit 内置浅色和深色主题,默认为浅色主题。 若从当前的主题切换到 ChatroomUIKit 内置的浅色或深色主题,可使用以下方法: -````swift +````Swift Theme.switchTheme(style: .dark) ```` -````swift +````Swift Theme.switchTheme(style: .light) ```` diff --git a/docs/uikit/chatroomuikit/web/roomuikit_best_practice.md b/docs/uikit/chatroomuikit/web/roomuikit_best_practice.md index 4dcaa7bdc..3678add1e 100644 --- a/docs/uikit/chatroomuikit/web/roomuikit_best_practice.md +++ b/docs/uikit/chatroomuikit/web/roomuikit_best_practice.md @@ -61,7 +61,7 @@ ChatroomUIKit 中提供了聊天室事件的监听接口。你可以通过注册 ChatroomUIKit 中主动调用 API 的事件监听如下: -```javascript +```JavaScript import { eventHandler } from "easemob-chat-uikit"; eventHandler.addEventHandler("chatroom", { @@ -99,7 +99,7 @@ eventHandler.addEventHandler("chatroom", { 从 UIKit 中获取 Chat SDK 实例来监听收到的聊天室事件: -```javascript +```JavaScript import React, { useEffect } from "react"; import { useClient } from "easemob-chat-uikit"; diff --git a/docs/uikit/chatroomuikit/web/roomuikit_config_item.md b/docs/uikit/chatroomuikit/web/roomuikit_config_item.md index 43761e2dc..662365df3 100644 --- a/docs/uikit/chatroomuikit/web/roomuikit_config_item.md +++ b/docs/uikit/chatroomuikit/web/roomuikit_config_item.md @@ -28,7 +28,7 @@ ChatroomUIKit 提供 `Chatroom` 和 `ChatroomMember` 组件,组件中包含各 例如,可以通过组件的属性传递 `className`、`style` 和 `prefix` 修改样式: -```javascript +```JavaScript import { Chatroom, Button } from "easemob-chat-uikit"; const ChatApp = () => { @@ -58,7 +58,7 @@ const ChatApp = () => { | memberListProps | 否 | { search?: boolean; placeholder?: string; renderEmpty?: () => ReactNode; renderItem?: (item: AppUserInfo) => ReactNode; UserItemProps?: UserItemProps; } | 成员列表组件的属性。 | | muteListProps | 否 | { search?: boolean; placeholder?: string; renderEmpty?: () => ReactNode; renderItem?: (item: AppUserInfo) => ReactNode; UserItemProps?: UserItemProps; } | 禁言列表组件的属性。 | -```javascript +```JavaScript import { ChatroomMember } from "easemob-chat-uikit"; const ChatApp = () => { diff --git a/docs/uikit/chatroomuikit/web/roomuikit_customize.md b/docs/uikit/chatroomuikit/web/roomuikit_customize.md index 4258d4680..50b2d9e55 100644 --- a/docs/uikit/chatroomuikit/web/roomuikit_customize.md +++ b/docs/uikit/chatroomuikit/web/roomuikit_customize.md @@ -8,7 +8,7 @@ 你可以通过容器组件的 `renderHeader` 方法渲染自定义 header: -```javascript +```JavaScript import {Chatroom, Header} from 'easemob-chat-uikit' const ChatApp = () => { @@ -99,7 +99,7 @@ UIKit 使用 React Context 管理全局数据,用户可以使用自定义 hook ### 使用示例 -```javascript +```JavaScript import React from "react"; import { useChatroomContext, Button } from "easemob-chat-uikit"; diff --git a/docs/uikit/chatroomuikit/web/roomuikit_quickstart.md b/docs/uikit/chatroomuikit/web/roomuikit_quickstart.md index 0a8955e1f..2a0e7f67d 100644 --- a/docs/uikit/chatroomuikit/web/roomuikit_quickstart.md +++ b/docs/uikit/chatroomuikit/web/roomuikit_quickstart.md @@ -68,7 +68,7 @@ yarn add easemob-chat-uikit 将 easemob-chat-uikit 库导入到你的代码中: -```javascript +```JavaScript // App.js import React, { Component, useEffect } from "react"; import { diff --git a/docs/uikit/chatroomuikit/web/roomuikit_theme.md b/docs/uikit/chatroomuikit/web/roomuikit_theme.md index 12709bde3..1ce23e512 100644 --- a/docs/uikit/chatroomuikit/web/roomuikit_theme.md +++ b/docs/uikit/chatroomuikit/web/roomuikit_theme.md @@ -16,7 +16,7 @@ ChatroomUIkit 内置浅色和深色主题,默认为浅色主题。 你可以设置 `Provider` 组件的主题属性修改主题: -```javascript +```JavaScript import { Chatroom, UIKitProvider } from 'easemob-chat-uikit'; const ChatApp = () => { diff --git a/docs/uikit/chatuikit/android/chatfeature_common.md b/docs/uikit/chatuikit/android/chatfeature_common.md index 941e88424..f914b58e2 100644 --- a/docs/uikit/chatuikit/android/chatfeature_common.md +++ b/docs/uikit/chatuikit/android/chatfeature_common.md @@ -108,7 +108,7 @@ UIKit 提供封装的 `ChatUIKitSearchActivity` 搜索页面,用户根据 `Cha 例如,搜索黑名单的示例代码如下 : -```kotlin +```Kotlin private val returnSearchClickResult: ActivityResultLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() @@ -142,7 +142,7 @@ UIKit 提供封装的 `ChatUIKitSearchActivity` 搜索页面,用户根据 `Cha 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableMention == false ``` diff --git a/docs/uikit/chatuikit/android/chatfeature_message.md b/docs/uikit/chatuikit/android/chatfeature_message.md index 3fd63791d..b3cc11f09 100644 --- a/docs/uikit/chatuikit/android/chatfeature_message.md +++ b/docs/uikit/chatuikit/android/chatfeature_message.md @@ -47,7 +47,7 @@ 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableReplyMessage @@ -75,7 +75,7 @@ 消息翻译特性在 `ChatUIKitConfig` 中默认关闭,即 `enableTranslationMessage` 的默认值为 `false`。要开启该特性,需将该参数设置为 `true`。示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableTranslationMessage @@ -89,7 +89,7 @@ 更多翻译目标语言,请参考 [翻译语言支持](https://learn.microsoft.com/zh-cn/azure/ai-services/translator/language-support)。 -```kotlin +```Kotlin val builder = UIKitChatFragment.Builder builder.setTargetTranslation(ChatUIKitTranslationLanguageType.English) @@ -120,7 +120,7 @@ 消息表情回复特性在 `ChatUIKitConfig` 中默认关闭,即 `enableMessageReaction` 的默认值为 `false`。要开启该特性,将该参数设置为 `true`。示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableMessageReaction @@ -142,7 +142,7 @@ 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableChatThreadMessage @@ -152,7 +152,7 @@ 你可以通过继承 `ChatUIKitThreadActivity` 添加自己的逻辑,示例如下: -```kotlin +```Kotlin class ChatThreadActivity:ChatUIKitThreadActivity() { override fun setChildSettings(builder: UIKitChatFragment.Builder) { @@ -180,7 +180,7 @@ class ChatThreadActivity:ChatUIKitThreadActivity() { 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableSendCombineMessage @@ -206,7 +206,7 @@ class ChatThreadActivity:ChatUIKitThreadActivity() { 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableChatPingMessage @@ -282,7 +282,7 @@ class ChatThreadActivity:ChatUIKitThreadActivity() { 示例代码如下: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableChatTyping = true diff --git a/docs/uikit/chatuikit/android/chatuikit_advancedusage.md b/docs/uikit/chatuikit/android/chatuikit_advancedusage.md index dfd60aca8..72180784b 100644 --- a/docs/uikit/chatuikit/android/chatuikit_advancedusage.md +++ b/docs/uikit/chatuikit/android/chatuikit_advancedusage.md @@ -12,7 +12,7 @@ 只有实现了 `ChatUIKitClient.getCustomActivityRoute()?.getActivityRoute()` 的 Activity 才可以进行拦截。 ::: -```kotlin +```Kotlin //实现 UIKitChatActivity 页面的 getActivityRoute companion object { @@ -51,7 +51,7 @@ ChatUIKitClient.setCustomActivityRoute(object : ChatUIKitCustomActivityRoute { 单群聊 UIKit 提供了一些全局配置,可以在初始化时进行设置,示例代码如下: -```kotlin +```Kotlin val avatarConfig = ChatUIKitAvatarConfig() // 将头像设置为圆角 avatarConfig.avatarShape = ChatUIKitImageView.ShapeType.ROUND diff --git a/docs/uikit/chatuikit/android/chatuikit_chat.md b/docs/uikit/chatuikit/android/chatuikit_chat.md index 07f5ac3a9..8561217a0 100644 --- a/docs/uikit/chatuikit/android/chatuikit_chat.md +++ b/docs/uikit/chatuikit/android/chatuikit_chat.md @@ -20,13 +20,13 @@ `UIKitChatActivity` 页面主要进行了权限的请求,比如相机权限,语音权限等。 -```kotlin +```Kotlin // conversationId: 单聊为对端用户的用户 ID,群聊为群组 ID。 // chatType:单聊和群聊分别为 ChatUIKitType#SINGLE_CHAT 和 ChatUIKitType#GROUP_CHAT。 UIKitChatActivity.actionStart(mContext, conversationId, chatType) ``` -```kotlin +```Kotlin class ChatActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -50,7 +50,7 @@ class ChatActivity: AppCompactActivity() { `UIKitChatFragment` 提供了 Builder 构建方式,方便开发者进行一些自定义设置,目前提供的设置项如下: -```kotlin +```Kotlin // conversationID: 单聊为对端用户的用户 ID,群聊为群组 ID。 // easeChatType: 单聊和群聊分别为 SINGLE_CHAT 和 GROUP_CHAT。 UIKitChatFragment.Builder(conversationID, easeChatType) @@ -124,7 +124,7 @@ UIKitChatFragment.Builder(conversationID, easeChatType) 1. 创建自定义适配器 `CustomMessageAdapter` 继承自 `EaseMessageAdapter`,重写 `getViewHolder` 和 `getItemNotEmptyViewType` 方法。 -```kotlin +```Kotlin class CustomMessageAdapter: ChatUIKitMessagesAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { @@ -143,7 +143,7 @@ class CustomMessageAdapter: ChatUIKitMessagesAdapter() { 2. 创建` CustomTypeChatRow` ,继承自 `ChatUIKitRow`。 -```kotlin +```Kotlin class CustomTypeChatRow( private val context: Context, private val attrs: AttributeSet? = null, @@ -167,7 +167,7 @@ class CustomTypeChatRow( 3. 创建 `CustomChatTypeViewViewHolder`,继承自 `ChatUIKitRowViewHolder`。 -```kotlin +```Kotlin class CustomChatTypeViewViewHolder( itemView: View ): ChatUIKitRowViewHolder(itemView) { @@ -181,7 +181,7 @@ class CustomChatTypeViewViewHolder( 4. 完善 `CustomMessageAdapter`。 -```kotlin +```Kotlin class CustomMessageAdapter: ChatUIKitMessagesAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { @@ -222,7 +222,7 @@ class CustomMessageAdapter: ChatUIKitMessagesAdapter() { 5. 添加 `CustomMessageAdapter` 到 `UIKitChatFragment#Builder`。 -```kotlin +```Kotlin builder.setCustomAdapter(CustomMessageAdapter()) ``` @@ -232,7 +232,7 @@ builder.setCustomAdapter(CustomMessageAdapter()) ### 列表控件相关功能设置 -```kotlin +```Kotlin val chatMessageListLayout:ChatUIKitMessageListLayout? = binding?.layoutChat?.chatMessageListLayout ``` @@ -265,7 +265,7 @@ val chatMessageListLayout:ChatUIKitMessageListLayout? = binding?.layoutChat?.cha ### 扩展功能设置 -```kotlin +```Kotlin val chatExtendMenu: IChatExtendMenu? = binding?.layoutChat?.chatInputMenu?.chatExtendMenu ``` @@ -288,7 +288,7 @@ val chatExtendMenu: IChatExtendMenu? = binding?.layoutChat?.chatInputMenu?.chatE 开发者可以利用 `UIKitChatFragment#Builder#setOnChatExtendMenuItemClickListener` 进行监听,也可以在自定义的 `Fragment` 中重写 `onChatExtendMenuItemClick` 方法。 -```kotlin +```Kotlin override fun onChatExtendMenuItemClick(view: View?, itemId: Int): Boolean { if(itemId == CUSTOM_YOUR_EXTEND_MENU_ID) { // 处理你自己的点击事件逻辑 @@ -305,13 +305,13 @@ override fun onChatExtendMenuItemClick(view: View?, itemId: Int): Boolean { 1. 若实现消息长按后弹出类似微信样式的弹窗,可进行如下设置: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableWxMessageStyle = true ``` 2. 若实现消息长按后弹出仿系统 UIActionSheet 样式的弹窗,可进行如下设置: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableWxMessageStyle = false ``` @@ -324,7 +324,7 @@ ChatUIKitClient.getConfig()?.chatConfig?.enableWxMessageStyle = false - 增加自定义菜单条目 -```kotlin +```Kotlin binding?.let { it.layoutChat.addItemMenu(menuId, menuOrder, menuTile) } @@ -332,7 +332,7 @@ binding?.let { - 显示或隐藏指定菜单 -```kotlin +```Kotlin binding?.let { it.layoutChat.findItemVisible(itemId: Int, visible: Boolean) } @@ -351,7 +351,7 @@ binding?.let { 在自定义的 `Fragment` 中重写以下方法: -```kotlin +```Kotlin override fun onPreMenu(helper: ChatUIKitChatMenuHelper?, message: ChatMessage?) { // 菜单展示前的回调事件,可以通过 helper 对象在这里设置菜单条目是否展示。 } @@ -370,13 +370,13 @@ override fun onDismiss() { 1. 若实现发送附件消息时弹出类似微信样式的弹窗,可进行如下设置: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableWxExtendStyle = true ``` 2. 若实现消息长按后弹出仿系统 `UIActionSheet` 样式的弹窗,可进行如下设置: -```kotlin +```Kotlin ChatUIKitClient.getConfig()?.chatConfig?.enableWxExtendStyle = false ``` @@ -389,7 +389,7 @@ ChatUIKitClient.getConfig()?.chatConfig?.enableWxExtendStyle = false - 获取 `ChatUIKitInputMenu` 对象: -```kotlin +```Kotlin val chatInputMenu: ChatUIKitInputMenu? = binding?.layoutChat?.chatInputMenu chatInputMenu?.let{ @@ -437,7 +437,7 @@ ChatUIKitClient.getConfig()?.chatConfig?.enableWxExtendStyle = false - 获取输入菜单项对象: -```kotlin +```Kotlin val primaryMenu: IChatPrimaryMenu? = binding?.layoutChat?.chatInputMenu?.chatPrimaryMenu ``` @@ -451,7 +451,7 @@ IChatPrimaryMenu 提供了如下方法: - 获取表情菜单对象: -```kotlin +```Kotlin val emojiconMenu: IChatEmojiconMenu? = binding?.layoutChat?.chatInputMenu?.chatEmojiMenu ``` @@ -464,7 +464,7 @@ val emojiconMenu: IChatEmojiconMenu? = binding?.layoutChat?.chatInputMenu?.chatE 添加自定义表情: -```kotlin +```Kotlin binding?.let { it.layoutChat.chatInputMenu?.chatEmojiMenu?.addEmojiconGroup(EmojiconExampleGroupData.getData()) } @@ -490,7 +490,7 @@ binding?.let { #### 设置消息列表控件功能 -```kotlin +```Kotlin //获取 ChatUIKitMessageListLayout 对象: val chatMessageListLayout:ChatUIKitMessageListLayout? = binding?.layoutChat?.chatMessageListLayout @@ -524,7 +524,7 @@ UIKitChatFragment.Builder(conversationID, easeChatType) 1. 创建自定义适配器 `CustomMessageAdapter` 继承自 `EaseMessageAdapter`,重写 `getViewHolder` 和 `getItemNotEmptyViewType` 方法。 -```kotlin +```Kotlin class CustomMessageAdapter: ChatUIKitMessagesAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { @@ -543,7 +543,7 @@ class CustomMessageAdapter: ChatUIKitMessagesAdapter() { 2. 创建 `CustomTypeChatRow` ,继承自 `ChatUIKitRow`。 -```kotlin +```Kotlin class CustomTypeChatRow( private val context: Context, private val attrs: AttributeSet? = null, @@ -567,7 +567,7 @@ class CustomTypeChatRow( 3. 创建 `CustomChatTypeViewViewHolder`,继承自 `ChatUIKitRowViewHolder`。 -```kotlin +```Kotlin class CustomChatTypeViewViewHolder( itemView: View ): ChatUIKitRowViewHolder(itemView) { @@ -581,7 +581,7 @@ class CustomChatTypeViewViewHolder( 4. 完善 `CustomMessageAdapter`。 -```kotlin +```Kotlin class CustomMessageAdapter: ChatUIKitMessagesAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { @@ -622,7 +622,7 @@ class CustomMessageAdapter: ChatUIKitMessagesAdapter() { 5. 添加 `CustomMessageAdapter` 到 `UIKitChatFragment#Builder`。 -```kotlin +```Kotlin builder.setCustomAdapter(CustomMessageAdapter()) ``` @@ -634,7 +634,7 @@ builder.setCustomAdapter(CustomMessageAdapter()) `UIKitChatFragment#Builder` 设置消息条目的点击事件监听,包括气泡区域及头像的点击及长按事件。 -```kotlin +```Kotlin builder.setOnMessageItemClickListener(object : OnMessageItemClickListener{ //聊天气泡点击事件 override fun onBubbleClick(message: ChatMessage?): Boolean {} @@ -659,7 +659,7 @@ builder.setCustomAdapter(CustomMessageAdapter()) | chatOtherDayFormat | 消息列表其他日期的格式,英文环境默认为: "MMM dd, HH:mm"。 | | chatOtherYearFormat | 消息列表其他年份的日期格式,英文环境默认为: "MMM dd, yyyy HH:mm"。 | -```kotlin +```Kotlin // 日期语言区域切换(跟随手机区域语言设置) 默认值为 false 采用 ENGLISH。 // 举例:chatOtherDayFormat = "MMM dd, yyyy" a.false: Sep 25, 2024 b.true(本地语言中文): 9月 25, 2024 ChatUIKitClient.getConfig()?.dateFormatConfig?.useDefaultLocale = true diff --git a/docs/uikit/chatuikit/android/chatuikit_contactlist.md b/docs/uikit/chatuikit/android/chatuikit_contactlist.md index f9446c379..8fbe7e503 100644 --- a/docs/uikit/chatuikit/android/chatuikit_contactlist.md +++ b/docs/uikit/chatuikit/android/chatuikit_contactlist.md @@ -12,7 +12,7 @@ ## 使用示例 -```kotlin +```Kotlin class ContactListActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,7 +39,7 @@ class ContactListActivity: AppCompactActivity() { `ChatUIKitContactsListFragment` 提供了 Builder 构建方式,方便开发者进行一些自定义设置。目前提供的设置项如下: -```kotlin +```Kotlin ChatUIKitContactsListFragment.Builder() .useTitleBar(true) .setTitleBarTitle("title") @@ -95,7 +95,7 @@ ChatUIKitContactsListFragment.Builder() 下面的示例代码展示如何设置数据项: -```kotlin +```Kotlin ChatUIKitContactsListFragment.Builder().setHeaderItemList(mutableListOf( ChatUIKitCustomHeaderItem( @@ -114,7 +114,7 @@ ChatUIKitContactsListFragment.Builder() 添加 Header List Item 点击事件: -```kotlin +```Kotlin ChatUIKitContactsListFragment.Builder().setOnHeaderItemClickListener(object : OnHeaderItemClickListener{ override fun onHeaderItemClick(v: View, itemIndex: Int, itemId: Int?) { @@ -130,7 +130,7 @@ ChatUIKitContactsListFragment.Builder() 1. 创建自定义适配器 `CustomContactListAdapter`,继承自 `ChatUIKitContactListAdapter`,重写 `getViewHolder` 和 `getItemNotEmptyViewType` 方法。 -```kotlin +```Kotlin class CustomContactListAdapter : ChatUIKitContactListAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { // 根据消息类型设置自定义 itemViewType。 @@ -148,7 +148,7 @@ class CustomContactListAdapter : ChatUIKitContactListAdapter() { 2. 添加 `CustomContactListAdapter` 到 `ChatUIKitContactsListFragment#Builder`。 -```kotlin +```Kotlin builder.setCustomAdapter(CustomContactListAdapter) ``` @@ -160,7 +160,7 @@ builder.setCustomAdapter(CustomContactListAdapter) 例如,创建群组时需添加多个用户,可点击联系人对应的复选框进行选择。 -```kotlin +```Kotlin builder.setSearchType(ChatUIKitSearchType.SELECT_USER) ``` @@ -170,7 +170,7 @@ builder.setSearchType(ChatUIKitSearchType.SELECT_USER) ### 设置联系人头像样式 -```kotlin +```Kotlin // uikit_configures.xml style 文件 支持修改以下配置: 2 @@ -190,7 +190,7 @@ builder.setSearchType(ChatUIKitSearchType.SELECT_USER) ## 事件监听 -```kotlin +```Kotlin ChatUIKitContactsListFragment.Builder() .setOnHeaderItemClickListener(OnHeaderItemClickListener) .setOnUserListItemClickListener(OnUserListItemClickListener) @@ -213,7 +213,7 @@ ChatUIKitContactsListFragment.Builder() ### 获取好友请求未读数 -```kotlin +```Kotlin val systemConversation = ChatUIKitNotificationMsgManager.getInstance().getConversation() systemConversation.let { cv-> newRequestCount = cv.unreadMsgCount diff --git a/docs/uikit/chatuikit/android/chatuikit_conversation.md b/docs/uikit/chatuikit/android/chatuikit_conversation.md index abbe55da9..94568d6af 100644 --- a/docs/uikit/chatuikit/android/chatuikit_conversation.md +++ b/docs/uikit/chatuikit/android/chatuikit_conversation.md @@ -22,7 +22,7 @@ ## 使用示例 -```kotlin +```Kotlin class ConversationListActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -49,7 +49,7 @@ class ConversationListActivity: AppCompactActivity() { `ChatUIKitConversationListFragment` 提供了 Builder 构建方式,方便开发者进行一些自定义设置,目前提供的设置项如下: -```kotlin +```Kotlin ChatUIKitConversationListFragment.Builder() .useTitleBar(true) .setTitleBarTitle("title") @@ -88,7 +88,7 @@ ChatUIKitConversationListFragment.Builder() 1. 创建自定义适配器 `CustomConversationListAdapter`,继承自 `ChatUIKitConversationListAdapter`,重写 `getViewHolder` 和 `getItemNotEmptyViewType` 方法。 -```kotlin +```Kotlin class CustomConversationListAdapter : ChatUIKitConversationListAdapter() { override fun getItemNotEmptyViewType(position: Int): Int { // 根据消息类型设置自定义 itemViewType。 @@ -106,7 +106,7 @@ class CustomConversationListAdapter : ChatUIKitConversationListAdapter() { 2. 添加 `CustomConversationListAdapter` 到 `ChatUIKitConversationListFragment#Builder`。 -```kotlin +```Kotlin builder.setCustomAdapter(customConversationListAdapter); ``` @@ -114,7 +114,7 @@ builder.setCustomAdapter(customConversationListAdapter); 创建自定义 `CustomConversationListFragment`,继承自 `ChatUIKitConversationListFragment`,并设置到 `ChatUIKitConversationListFragment#Builder` 中。 -```kotlin +```Kotlin builder.setCustomFragment(customConversationListFragment); ``` @@ -132,7 +132,7 @@ builder.setCustomFragment(customConversationListFragment); #### 设置是否启用标题栏 -```kotlin +```Kotlin //是否使用默认的标题栏(ChatUIKitTitleBar):true:是;(默认) false: 否。 ChatUIKitConversationListFragment.Builder().useTitleBar() @@ -141,7 +141,7 @@ ChatUIKitConversationListFragment.Builder().useTitleBar() #### 设置左侧头像 -```kotlin +```Kotlin //使用 binding?.titleConversations 可以直接获取到 ChatUIKitTitleBar binding?.titleConversations?.let { titlebar-> @@ -163,7 +163,7 @@ binding?.titleConversations?.let { titlebar-> #### 设置左侧头像及文本区域点击事件 -```kotlin +```Kotlin // logo 图标区域点击事件 binding?.titleConversations?.setLogoClickListener {} // logo status 文本区域点击事件 @@ -173,7 +173,7 @@ binding?.titleConversations?.setTitleClickListener {} #### 设置中部标题 -```kotlin +```Kotlin // 文本设置 ChatUIKitConversationListFragment.Builder().setTitleBarTitle("title") // 图片设置 @@ -187,7 +187,7 @@ binding?.titleConversations?.setTitleEndDrawable(R.drawable.conversation_title) `ChatUIKitConversationListFragment` 中有默认实现一个 `defaultMenu()` 的方法 添加默认的 menu 菜单。若默认菜单不满足需求,可以替换为自己的 menu 菜单,重写 `defaultMenu()` 方法。 -```kotlin +```Kotlin // 添加 menu override fun defaultMenu() { // 自定义满足自身需求的 menu 文件 @@ -216,7 +216,7 @@ binding?.titleConversations?.setTitleEndDrawable(R.drawable.conversation_title) #### 设置返回按钮和事件监听 -```kotlin +```Kotlin //设置是否支持显示返回按钮:true:是;(默认) false: 否。 ChatUIKitConversationListFragment.Builder().enableTitleBarPressBack() @@ -229,7 +229,7 @@ ChatUIKitConversationListFragment.Builder().setTitleBarBackPressListener() 设置标题栏的背景色: -```kotlin +```Kotlin binding?.titleConversations?.setBackgroundColor(ContextCompat.getColor(mContext,R.color.blue)) @@ -239,7 +239,7 @@ binding?.titleConversations?.setBackgroundColor(ContextCompat.getColor(mContext, #### 设置是否需要搜索功能 -```kotlin +```Kotlin // 是否使用默认的搜索功能(跳转 ChatUIKitSearchActivity 搜索页面)。目前支持搜索用户、会话、消息、黑名单用户。 // true:是;(默认) false: 否。 @@ -251,7 +251,7 @@ ChatUIKitConversationListFragment.Builder().useSearchBar(true) 如果默认的搜索无法满足用户需求,可以通过 `setCustomActivityRoute` 修改跳转路由,跳转自己的搜索页面。 -```kotlin +```Kotlin ChatUIKitClient.setCustomActivityRoute(object : ChatUIKitCustomActivityRoute { override fun getActivityRoute(intent: Intent): Intent? { intent.component?.className?.let { @@ -276,7 +276,7 @@ ChatUIKitClient.setCustomActivityRoute(object : ChatUIKitCustomActivityRoute { 需要先获取到 `ChatUIKitConversationListLayout` 对象,该对象提供了更加细致的设置项: -```kotlin +```Kotlin binding?.listConversation?.let{ it.setItemBackGround() //设置条目的背景。 it.setItemHeight() //设置条目的高度。 @@ -341,7 +341,7 @@ ChatUIKitClient.setCustomActivityRoute(object : ChatUIKitCustomActivityRoute { `ChatUIKitConversationListFragment#Builder` 提供的如下监听: -```kotlin +```Kotlin ChatUIKitConversationListFragment.Builder() .setTitleBarBackPressListener() .setItemClickListener(onItemClickListener) diff --git a/docs/uikit/chatuikit/android/chatuikit_custom_contact_details.md b/docs/uikit/chatuikit/android/chatuikit_custom_contact_details.md index 03d292990..680449749 100644 --- a/docs/uikit/chatuikit/android/chatuikit_custom_contact_details.md +++ b/docs/uikit/chatuikit/android/chatuikit_custom_contact_details.md @@ -14,7 +14,7 @@ 联系人详情页面中按钮数据源可配项以及按钮点击事件,例如,添加音频通话、视频通话按钮。默认情况下,`super.getDetailItem()` 包含聊天和搜索。 -```kotlin +```Kotlin // 实现 MyContactDetailActivity 继承 ChatUIKitContactDetailsActivity 并重写以下方法 override fun getDetailItem(): MutableList? { diff --git a/docs/uikit/chatuikit/android/chatuikit_custom_group_details.md b/docs/uikit/chatuikit/android/chatuikit_custom_group_details.md index aed92802e..a14ced586 100644 --- a/docs/uikit/chatuikit/android/chatuikit_custom_group_details.md +++ b/docs/uikit/chatuikit/android/chatuikit_custom_group_details.md @@ -14,7 +14,7 @@ 群组详情页面中按钮数据源可配项以及按钮点击事件,例如,添加音频通话、视频通话按钮。默认情况下,`super.getDetailItem()` 包含聊天和搜索。 -```kotlin +```Kotlin // 实现 MyGroupDetailActivity 继承 ChatUIKitGroupDetailActivity 并重写以下方法 override fun getDetailItem(): MutableList? { diff --git a/docs/uikit/chatuikit/android/chatuikit_integrated.md b/docs/uikit/chatuikit/android/chatuikit_integrated.md index 5b99449d1..e01fee24b 100644 --- a/docs/uikit/chatuikit/android/chatuikit_integrated.md +++ b/docs/uikit/chatuikit/android/chatuikit_integrated.md @@ -18,7 +18,7 @@ 在 app 项目 `build.gradle.kts` 中添加以下依赖: -```kotlin +```Kotlin implementation("io.hyphenate:ease-chat-kit:4.7.0") ``` @@ -28,14 +28,14 @@ implementation("io.hyphenate:ease-chat-kit:4.7.0") 1. 在根目录 `settings.gradle.kts` 文件(/Gradle Scripts/settings.gradle.kts)中添加如下代码: -```kotlin +```Kotlin include(":ease-im-kit") project(":ease-im-kit").projectDir = File("../chatuikit-android/ease-im-kit") ``` 2. 在 app 的 `build.gradle.kts` 文件(/Gradle Scripts/build.gradle)中添加如下代码: -```kotlin +```Kotlin //chatuikit-android implementation(project(mapOf("path" to ":ease-im-kit"))) ``` @@ -44,7 +44,7 @@ implementation(project(mapOf("path" to ":ease-im-kit"))) 在 `app/proguard-rules.pro` 文件中添加如下行,防止代码混淆: -```kotlin +```Kotlin -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** ``` @@ -57,7 +57,7 @@ implementation(project(mapOf("path" to ":ease-im-kit"))) 单群聊 UIKit 提供 `UIKitChatActivity` 页面,调用 `UIKitChatActivity#actionStart` 方法即可,示例代码如下: -```kotlin +```Kotlin // conversationId: 单聊会话为对端用户 ID,群聊会话为群组 ID。 // chatType:单聊为 ChatUIKitType#SINGLE_CHAT,群聊为 ChatUIKitType#GROUP_CHAT。 UIKitChatActivity.actionStart(mContext, conversationId, chatType) @@ -68,7 +68,7 @@ UIKitChatActivity.actionStart(mContext, conversationId, chatType) 开发者也可以使用单群聊 UIKit 提供的 `UIKitChatFragment` 创建聊天页面,示例代码如下: -```kotlin +```Kotlin class ChatActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -90,7 +90,7 @@ class ChatActivity: AppCompactActivity() { 示例如下: -```kotlin +```Kotlin class ConversationListActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -111,7 +111,7 @@ class ConversationListActivity: AppCompactActivity() { 示例如下: -```kotlin +```Kotlin class ContactListActivity: AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/docs/uikit/chatuikit/android/chatuikit_internationalization.md b/docs/uikit/chatuikit/android/chatuikit_internationalization.md index 04557de46..ed4ff928d 100644 --- a/docs/uikit/chatuikit/android/chatuikit_internationalization.md +++ b/docs/uikit/chatuikit/android/chatuikit_internationalization.md @@ -4,7 +4,7 @@ ## 设置界面语言 -```kotlin +```Kotlin object LanguageUtil { fun changeLanguage(languageCode:String){ val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags(languageCode) diff --git a/docs/uikit/chatuikit/android/chatuikit_quickstart.md b/docs/uikit/chatuikit/android/chatuikit_quickstart.md index 0a92eb962..ab82c38f7 100644 --- a/docs/uikit/chatuikit/android/chatuikit_quickstart.md +++ b/docs/uikit/chatuikit/android/chatuikit_quickstart.md @@ -31,7 +31,7 @@ 在 `/Gradle Scripts/build.gradle.kts(Project: )` 文件内,检查是否有 **mavenCentral** 仓库。 - ```kotlin + ```Kotlin buildscript { repositories { mavenCentral() @@ -42,7 +42,7 @@ 在 `/Gradle Scripts/settings.gradle.kts(Project Settings)` 文件内,检查是否有 **mavenCentral** 仓库。 - ```kotlin + ```Kotlin dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { @@ -56,7 +56,7 @@ 在 app 项目 build.gradle.kts 中添加以下依赖: -```kotlin +```Kotlin implementation("io.hyphenate:ease-chat-kit:4.11.1") ``` @@ -66,14 +66,14 @@ implementation("io.hyphenate:ease-chat-kit:4.11.1") - 在根目录 `settings.gradle.kts` 文件(/Gradle Scripts/settings.gradle.kts)中添加如下代码: -```kotlin +```Kotlin include(":ease-im-kit") project(":ease-im-kit").projectDir = File("../chatuikit-android/ease-im-kit") ``` - 在 app 的 `build.gradle.kts` 文件(/Gradle Scripts/build.gradle)中添加如下代码: -```kotlin +```Kotlin //chatuikit-android implementation(project(mapOf("path" to ":ease-im-kit"))) ``` @@ -178,7 +178,7 @@ implementation(project(mapOf("path" to ":ease-im-kit"))) 打开 `MainActivity` 文件,并替换为如下代码: -```kotlin +```Kotlin package com.easemob.quickstart import androidx.appcompat.app.AppCompatActivity diff --git a/docs/uikit/chatuikit/android/chatuikit_theme.md b/docs/uikit/chatuikit/android/chatuikit_theme.md index 1ec1f9e69..fb38d4302 100644 --- a/docs/uikit/chatuikit/android/chatuikit_theme.md +++ b/docs/uikit/chatuikit/android/chatuikit_theme.md @@ -26,7 +26,7 @@ Android 利用自己的平台特性,可以在 `res` 目录下创建 `values-ni 若从当前的主题切换到 EaseChatUIKit 内置的浅色或深色主题,可使用以下方法: -```kotlin +```Kotlin // 在 sp 中存入一个 Boolean 类型变量,记录当前是浅色还是深色主题。 val isBlack = ChatUIKitPreferenceManager.getInstance().getBoolean("isBlack") // 调用系统 API 切换模式。 diff --git a/docs/uikit/chatuikit/android/chatuikit_userinfo.md b/docs/uikit/chatuikit/android/chatuikit_userinfo.md index ecaadfb48..67ec8a9ea 100644 --- a/docs/uikit/chatuikit/android/chatuikit_userinfo.md +++ b/docs/uikit/chatuikit/android/chatuikit_userinfo.md @@ -10,7 +10,7 @@ 如果登录时没有传入 `name` 和 `avatar` 属性,可以在登录后,调用 `ChatUIKitClient.updateCurrentUser` 方法对当前用户的信息进行更新。 -```kotlin +```Kotlin ChatUIKitClient.login( user = ChatUIKitProfile( id = "", @@ -33,7 +33,7 @@ ChatUIKitClient.login( `ChatUIKitUserProfileProvider` 接口如下所示: -```kotlin +```Kotlin interface ChatUIKitUserProfileProvider { // 同步获取用户信息 fun getUser(userId: String?): ChatUIKitProfile? @@ -45,7 +45,7 @@ interface ChatUIKitUserProfileProvider { 使用方法如下所示: -```kotlin +```Kotlin ChatUIKitClient.setUserProfileProvider(object : ChatUIKitUserProfileProvider { override fun getUser(userId: String?): ChatUIKitProfile? { return getLocalUserInfo(userId) @@ -68,7 +68,7 @@ ChatUIKitClient.setUserProfileProvider(object : ChatUIKitUserProfileProvider { `ChatUIKitGroupProfileProvider` 接口如下所示: -```kotlin +```Kotlin interface ChatUIKitGroupProfileProvider { // 同步获取群组信息 fun getGroup(id: String?): ChatUIKitGroupProfile? @@ -80,7 +80,7 @@ interface ChatUIKitGroupProfileProvider { 使用方法如下: -```kotlin +```Kotlin ChatUIKitClient.setGroupProfileProvider(object : ChatUIKitGroupProfileProvider { override fun getGroup(id: String?): ChatUIKitGroupProfile? { ChatClient.getInstance().groupManager().getGroup(id)?.let { @@ -101,7 +101,7 @@ ChatUIKitClient.setGroupProfileProvider(object : ChatUIKitGroupProfileProvider { ## 设置会话头像和昵称 -```kotlin +```Kotlin // 调用 setUserProfileProvider 设置单聊时的用户属性,包括用户头像和昵称。 ChatUIKitClient.setUserProfileProvider(object : ChatUIKitUserProfileProvider { @@ -153,7 +153,7 @@ ChatUIKitClient.setGroupProfileProvider(object : ChatUIKitGroupProfileProvider { 因为单群聊 UIKit 会对信息进行缓存。如果用户的信息发生改变,可以通过 UIKit 提供的 `update` 方法对缓存信息进行更新。 -```kotlin +```Kotlin // 更新当前用户信息 ChatUIKitClient.updateCurrentUser(currentUserProfile) // 更新单聊用户/群成员信息 diff --git a/docs/uikit/chatuikit/android/ui_historic.md b/docs/uikit/chatuikit/android/ui_historic.md index 47255f179..7f0acaf7f 100644 --- a/docs/uikit/chatuikit/android/ui_historic.md +++ b/docs/uikit/chatuikit/android/ui_historic.md @@ -76,7 +76,7 @@ EaseIMKit 中位置消息使用的是百度地图定位 jar 包,为了防止 EaseIMKit 初始化里已包含 SDK 的初始化,不需要再去调用 SDK 的初始化。 ::: -```java +```Java public class DemoApplication extends Application { @Override public void onCreate() { @@ -119,7 +119,7 @@ EaseIMKit 提供了 UIKitChatFragment,添加到 Activity 中并传递相应的 - `history_msg_id`——消息 ID,用于查询历史记录时的定位消息 ID; - `isRoaming`——是否开启漫游,布尔类型,用于标记是否优先从服务器拉取消息。 -```java +```Java public class ChatActivity extends BaseActivity { private UIKitChatFragment chatFragment; @@ -172,7 +172,7 @@ xml 中设置如下: 也可进行代码设置,如下: -```java +```Java ChatUIKitTitleBar titleBarMessage = findViewById(R.id.title_bar_message); //设置右侧菜单图标 titleBarMessage.setRightImageResource(R.drawable.chat_user_info); @@ -200,7 +200,7 @@ titleBarMessage.setOnBackPressListener(this); 代码如下: -```java +```Java //设置头像尺寸 conversationListLayout.setAvatarSize(EaseCommonUtils.dip2px(mContext, 50)); //设置头像样式:0 为默认,1 为圆形,2 为方形(设置方形时,需要配合设置 avatarRadius,默认的 avatarRadius 为 50dp) @@ -226,7 +226,7 @@ conversationListLayout.showUnreadDotPosition(EaseConversationSetStyle.UnreadDotP `ChatUIKitConversationListLayout` 提供了增加菜单项的 API,开发者可方便的增加更多的菜单功能。 示例代码如下: -```java +```Java @Override public void initView(Bundle savedInstanceState) { super.initView(savedInstanceState); @@ -268,7 +268,7 @@ public boolean onMenuItemClick(MenuItem item, int position) { 标题区 ChatUIKitTitleBar 的具体布局及实现不在 EaseIMKit 库的聊天控件及 fragment 中,需要你自己去实现。 开发者可以在 UIKitChatFragment 中获取到 ChatUIKitLayout 这个控件,然后通过这个控件进一步获取到获取其他控件,代码如下: -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //获取到菜单输入父控件 @@ -287,7 +287,7 @@ IChatEmojiconMenu emojiconMenu = chatInputMenu.getEmojiconMenu(); #### 修改聊天列表背景 -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //设置聊天列表背景 @@ -302,7 +302,7 @@ messageListLayout.setBackground(new ColorDrawable(Color.parseColor("#DA5A4D"))); 开发者可以设置默认头像和头像形状。 -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //设置默认头像 @@ -319,7 +319,7 @@ messageListLayout.setAvatarShapeType(1); 开发者可以修改聊天文本的字体大小及字体颜色,发送方及接收方需保持一致。 -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //设置文本字体大小 @@ -336,7 +336,7 @@ messageListLayout.setItemTextColor(ContextCompat.getColor(mContext, R.color.red) 开发者可以修改时间线的背景,文字的大小及颜色。 -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //设置时间线的背景 @@ -355,7 +355,7 @@ messageListLayout.setTimeTextColor(ContextCompat.getColor(mContext, R.color.blac 开发者可以设置聊天列表的样式,发送方和接收方位于两侧还是位于一侧。 -```java +```Java //获取到聊天列表控件 ChatUIKitMessageListLayout messageListLayout = chatLayout.getChatMessageListLayout(); //设置聊天列表样式:两侧及均位于左侧 @@ -370,7 +370,7 @@ messageListLayout.setItemShowType(ChatUIKitMessageListLayout.ShowType.LEFT); 输入区控件为 ChatUIKitInputMenu,它由输入控件 ChatUIKitPrimaryMenu,扩展控件 ChatUIKitExtendMenu 和表情控件 ChatUIKitEmojiconMenu 组成。 -```java +```Java //获取到菜单输入父控件 ChatUIKitInputMenu chatInputMenu = chatLayout.getChatInputMenu(); //获取到菜单输入控件 @@ -383,7 +383,7 @@ IChatEmojiconMenu emojiconMenu = chatInputMenu.getEmojiconMenu(); 开发者可以修改菜单输入控件的样式,其有 5 种模式,即 `完整模式`,`不可用语音模式`,`不可用表情模式`,`不可用语音和表情模式` 和 `只有文本输入模式`。 -```java +```Java //获取到菜单输入父控件 ChatUIKitInputMenu chatInputMenu = chatLayout.getChatInputMenu(); //获取到菜单输入控件 @@ -424,7 +424,7 @@ EaseIMKit 中已经为八种基本消息类型文本,表情,图片,视频 1、新建 ChatTxtNewAdapterDelegate 继承 EaseMessageAdapterDelegate。 -```java +```Java public class ChatTxtNewAdapterDelegate extends EaseMessageAdapterDelegate { @Override protected ChatUIKitRow getEaseChatRow(ViewGroup parent, boolean isSender) { @@ -440,7 +440,7 @@ public class ChatTxtNewAdapterDelegate extends EaseMessageAdapterDelegate { @Override public boolean isForViewType(EMMessage item, int position) { @@ -621,7 +621,7 @@ public class ChatTxtNewAdapterDelegate extends EaseMessageAdapterDelegate )即可。 示例如下: -```java +```Java @Override public void onFriendRequestDeclined(String username) { EMLog.i("ChatContactListener", "onFriendRequestDeclined"); diff --git a/docs/uikit/chatuikit/ios/chatuikit_theme.md b/docs/uikit/chatuikit/ios/chatuikit_theme.md index fb890f255..a48eb7221 100644 --- a/docs/uikit/chatuikit/ios/chatuikit_theme.md +++ b/docs/uikit/chatuikit/ios/chatuikit_theme.md @@ -24,11 +24,11 @@ EaseChatUIKit 内置浅色和深色主题,默认为浅色主题。 初始化单群聊 UIKit 视图之前调用 `switchTheme` 方法可修改默认主题。 ::: -```swift +```Swift Theme.switchTheme(style: .dark) ``` -```swift +```Swift Theme.switchTheme(style: .light) ``` diff --git a/docs/uikit/chatuikit/ios/ui_historic.md b/docs/uikit/chatuikit/ios/ui_historic.md index 3474d759a..042e98316 100644 --- a/docs/uikit/chatuikit/ios/ui_historic.md +++ b/docs/uikit/chatuikit/ios/ui_historic.md @@ -87,13 +87,13 @@ EaseIMKit 中包含了拍照,发语音,发图片,发视频,发位置, 第 1 步:引入相关头文件 -```objectivec +```Objective-C #import ``` 第 2 步:在在工程的 AppDelegate 中的以下方法中调用 EaseIMKitManager 的初始化方法一并初始化环信 SDK。(注: 此方法不需要重复调用) -```objectivec +```Objective-C - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. EMOptions *options = [EMOptions optionsWithAppkey:@"您的APPKEY"]; @@ -109,7 +109,7 @@ EaseIMKitManager 主要包含系统通知(好友申请,群邀请/申请) #### 是否需要系统通知 -```objectivec +```Objective-C /*! @method @brief 是否需要系统通知:好友/群 申请等 @@ -121,7 +121,7 @@ EaseIMKitManager 主要包含系统通知(好友申请,群邀请/申请) #### 收到系统通知所展示信息回调接口 -```objectivec +```Objective-C /*! @method @brief 收到请求返回展示信息 @@ -141,7 +141,7 @@ EaseIMKitManager 主要包含系统通知(好友申请,群邀请/申请) #### 收到系统通知扩展信息回调接口 -```objectivec +```Objective-C /*! @method @brief 收到请求返回扩展信息 @@ -159,7 +159,7 @@ EaseIMKitManager 主要包含系统通知(好友申请,群邀请/申请) #### 未读总数变化回调接口 -```objectivec +```Objective-C /*! @method @brief 会话未读总数变化。 @@ -174,13 +174,13 @@ EaseIMKitManager 主要包含系统通知(好友申请,群邀请/申请) 导入 EaseIMKit 头文件 -```objectivec +```Objective-C #import ``` EaseIMKit 提供现成的聊天会话 ViewController,可以通过创建 EaseChatViewController 对象实例,嵌入进自己的聊天控制器方式(参考 EaseIM 中 EMChatViewController)实现对 EaseIMKit 聊天会话的集成。 创建聊天会话页实例,需传递用户‘环信 ID’或‘群 ID’ ,会话类型(EMConversationType)以及必须传入聊天视图配置数据模型 EaseChatViewModel 实例。 -```objectivec +```Objective-C EaseChatViewModel *viewModel = [[EaseChatViewModel alloc]init]; EaseChatViewController *chatController = [EaseChatViewController initWithConversationId:@"custom" conversationType:EMConversationTypeChat @@ -192,7 +192,7 @@ chatController.view.frame = self.view.bounds; 聊天控制器嵌入自己的聊天页后还需传入消息列表 messageList 以供 EaseChatViewController 展示使用 -```objectivec +```Objective-C //isScrollBottom 是否滑动到页面底部 - (void)loadData:(BOOL)isScrollBottom { @@ -213,13 +213,13 @@ chatController.view.frame = self.view.bounds; 导入 EaseIMKit 头文件 -```objectivec +```Objective-C #import ``` 在自己聊天控制器内可嵌入 EaseIMKit 的会话列表页,创建会话列表实例,实例化会话列表必须传入会话列表视图数据配置模型 EaseConversationViewModel 实例。 -```objectivec +```Objective-C EaseConversationViewModel *viewModel = [[EaseConversationViewModel alloc] init]; EaseConversationsViewController *easeConvsVC = [[EaseConversationsViewController alloc] initWithModel:viewModel]; @@ -235,13 +235,13 @@ easeConvsVC.delegate = self; 导入 EaseIMKit 头文件 -```objectivec +```Objective-C #import ``` 在自己聊天控制器内可嵌入 EaseIMKit 的会话列表页,创建通讯录实例,必须传入通讯录视图数据模型 EaseContactsViewModel 实例以构建通讯录 UI 界面。 -```objectivec +```Objective-C EaseContactsViewModel *model = [[EaseContactsViewModel alloc] init]; EaseContactsViewController *contactsVC = [[EaseContactsViewController alloc] initWithModel:model]; //通讯录头部功能区(加好友/群聊/聊天室 入口) @@ -276,7 +276,7 @@ contactsVC.delegate = self; 聊天会话可配置参数如下: -```objectivec +```Objective-C @property (nonatomic, strong) UIColor *chatViewBgColor; //聊天页背景色 @property (nonatomic, strong) UIColor *chatBarBgColor; //输入区背景色 @property (nonatomic, strong) EaseExtFuncModel *extFuncModel; //输入区扩展功能数据模型 @@ -296,7 +296,7 @@ contactsVC.delegate = self; 其中参数:EaseExtFuncModel 输入区扩展功能数据配置模型(聊天会话页相机,相册,音视频等区域)内含可配参数: -```objectivec +```Objective-C @property (nonatomic, strong) UIColor *iconBgColor;//图标所在 view 背景色 @property (nonatomic, strong) UIColor *viewBgColor;//视图背景色 @property (nonatomic, strong) UIColor *fontColor;//字体颜色 @@ -306,7 +306,7 @@ contactsVC.delegate = self; 其中参数:inputBarStyle(输入区)包含五种类型: -```objectivec +```Objective-C typedef NS_ENUM(NSInteger, EaseInputBarStyle) { EaseInputBarStyleAll = 1, //全部功能 EaseInputBarStyleNoAudio, //无语音 @@ -318,7 +318,7 @@ typedef NS_ENUM(NSInteger, EaseInputBarStyle) { 其中参数:EaseAlignmentStyle (消息排列方式,仅群聊可生效)包含两种类型 -```objectivec +```Objective-C typedef enum { EaseAlignmentNormal = 1, //左右排列 EaseAlignmentlLeft, //居左排列 @@ -327,7 +327,7 @@ typedef enum { 实例化的聊天控制器可通过重置视图 UI 配置模型刷新页面 -```objectivec +```Objective-C //重置聊天控制器 - (void)resetChatVCWithViewModel:(EaseChatViewModel *)viewModel; ``` @@ -352,7 +352,7 @@ typedef enum { 会话列表可配置参数如下: -```objectivec +```Objective-C @property (nonatomic) EaseAvatarStyle avatarType; // 头像样式 @property (nonatomic, strong) UIImage *defaultAvatarImage; // 默认头像 @property (nonatomic) CGSize avatarSize; // 头像尺寸 @@ -377,7 +377,7 @@ typedef enum { 会话列表以及联系人列表共用其父类可配置参数如下: -```objectivec +```Objective-C @property (nonatomic) BOOL canRefresh; // 是否可下拉刷新 @property (nonatomic, strong) UIView *bgView; // tableView 背景图 @property (nonatomic, strong) UIColor *cellBgColor; // UITableViewCell 背景色 @@ -389,7 +389,7 @@ typedef enum { 通讯录可配置参数如下: -```objectivec +```Objective-C @property (nonatomic) EaseAvatarStyle avatarType; // 头像样式 @property (nonatomic, strong) UIImage *defaultAvatarImage; // 默认头像 @property (nonatomic) CGSize avatarSize; // 头像尺寸 @@ -407,7 +407,7 @@ typedef enum { 以及通讯录和会话列表共用的参数配置 -```objectivec +```Objective-C @property (nonatomic) BOOL canRefresh; // 是否可下拉刷新 @property (nonatomic, strong) UIView *bgView; // tableView 背景图 @property (nonatomic, strong) UIColor *cellBgColor; // UITableViewCell 背景色 @@ -431,7 +431,7 @@ EaseChatViewControllerDelegate 下拉加载更多消息回调(可得到当前第一条消息 ID 作为下次加载更多消息的参考 ID;当前消息列表) -```objectivec +```Objective-C /** * 下拉加载更多消息回调 * @@ -445,7 +445,7 @@ EaseChatViewControllerDelegate 通过实现聊天控制回调获取自定义消息 cell,根据 messageModel,用户自己判断是否显示自定义消息 cell。如果返回 nil 会显示默认;如果返回 cell 会显示用户自定义消息 cell。 -```objectivec +```Objective-C /*! @method @brief 获取消息自定义 cell @@ -459,7 +459,7 @@ EaseChatViewControllerDelegate 具体创建自定义 Cell 的示例: -```objectivec +```Objective-C //自定义通话记录cell - (UITableViewCell *)cellForItem:(UITableView *)tableView messageModel:(EaseMessageModel *)messageModel { @@ -482,7 +482,7 @@ EaseChatViewControllerDelegate 选中消息的回调(EaseIMKit 没有对于自定义 cell 的选中事件回调,需用户自定义实现选中响应) -```objectivec +```Objective-C /*! @method @brief 消息点击事件 @@ -496,7 +496,7 @@ EaseChatViewControllerDelegate EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实现,例:EaseIM 单聊通话记录 cell 点击事件再次发起通话 -```objectivec +```Objective-C - (void)messageCellDidSelected:(EMMessageCell *)aCell { //使用‘通知’的方式发起通话,其中所定义的宏仅在 EaseIM APP 中生效 @@ -517,7 +517,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 用户资料回调(头像昵称等) -```objectivec +```Objective-C /*! @method @brief 返回用户资料 @@ -530,7 +530,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 #### 用户选中头像的回调 -```objectivec +```Objective-C /*! @method @brief 点击消息头像 @@ -543,7 +543,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 获取用户选中头像回调的样例: -```objectivec +```Objective-C //头像点击 - (void)avatarDidSelected:(id)userData { @@ -558,7 +558,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 #### 用户长按头像的回调 -```objectivec +```Objective-C /*! @method @brief 点击消息头像 @@ -571,7 +571,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 #### 群通知回执详情 -```objectivec +```Objective-C /*! @method @brief 群通知回执详情 @@ -585,7 +585,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 获取用户点击群通知回执详情的样例: -```objectivec +```Objective-C //群通知阅读回执详情 - (void)groupMessageReadReceiptDetail:(EMMessage *)message groupId:(NSString *)groupId { @@ -600,7 +600,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 当前会话输入扩展区数据模型组(UI 配置可在聊天视图配置数据模型中设置) -```objectivec +```Objective-C /*! @method @brief 当前会话输入扩展区数据模型组 @@ -616,7 +616,7 @@ EaseIMKit 选中是消息气泡,自定义 cell 的点击事件需自定义实 当前会话输入扩展区数据模型组回调示例(EaseIM APP 有效): -```objectivec +```Objective-C - (NSMutableArray *)inputBarExtMenuItemArray:(NSMutableArray *)defaultInputBarItems conversationType:(EMConversationType)conversationType { NSMutableArray *menuArray = [[NSMutableArray alloc]init]; @@ -654,7 +654,7 @@ return menuArray; #### 键盘输入变化回调 -```objectivec +```Objective-C /*! @method @brief 输入区键盘输入变化回调 例:@群成员 @@ -665,7 +665,7 @@ return menuArray; 输入区键盘回调示例(EaseIM APP 有效): -```objectivec +```Objective-C //@群成员 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { @@ -700,7 +700,7 @@ return menuArray; #### 输入框选中回调 -```objectivec +```Objective-C /** * 输入区选中范围变化回调 例:@群成员 */ @@ -709,7 +709,7 @@ return menuArray; 输入区选中范围变化回调示例(EaseIM APP 有效): -```objectivec +```Objective-C - (void)textViewDidChangeSelection:(UITextView *)textView { [textView.attributedText enumerateAttributesInRange:NSMakeRange(0, textView.text.length) options:0 usingBlock:^(NSDictionary * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) { @@ -739,7 +739,7 @@ return menuArray; 对方正在输入状态回调(单聊有效) -```objectivec +```Objective-C /** 对方正在输入 */ @@ -748,7 +748,7 @@ return menuArray; 对方结束输入回调(单聊有效) -```objectivec +```Objective-C /** 对方结束输入 */ @@ -759,7 +759,7 @@ return menuArray; 默认消息 cell 长按回调 -```objectivec +```Objective-C /*! @method @brief 默认消息 cell 长按回调 @@ -772,7 +772,7 @@ return menuArray; 默认消息 cell 长按回调示例(EaseIM APP 有效): -```objectivec +```Objective-C //添加转发消息 - (NSMutableArray *)messageLongPressExtMenuItemArray:(NSMutableArray *)defaultLongPressItems message:(EMMessage *)message { @@ -796,7 +796,7 @@ return menuArray; 用户自定义消息 cell 长按事件回调 -```objectivec +```Objective-C /*! @method @brief 当前所长按的 自定义 cell 的扩展区数据模型组 @@ -823,7 +823,7 @@ return menuArray; 通过实现会话列表回调获取自定义消息 cell 如果返回 nil 会显示默认;如果返回 cell 则会显示用户自定义 cell。 -```objectivec +```Objective-C /*! @method @brief 获取消息自定义 cell @@ -837,7 +837,7 @@ return menuArray; #### 会话列表 cell 选中回调 -```objectivec +```Objective-C /*! @method @brief 会话列表 cell 选中回调 @@ -849,7 +849,7 @@ return menuArray; 会话列表 cell 选中回调示例(EaseIM APP 有效): -```objectivec +```Objective-C - (void)easeTableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { EaseConversationCell *cell = (EaseConversationCell*)[tableView cellForRowAtIndexPath:indexPath]; @@ -867,7 +867,7 @@ return menuArray; #### 会话列表用户资料回调 -```objectivec +```Objective-C /*! @method @brief 会话列表用户资料回调 @@ -881,7 +881,7 @@ return menuArray; 会话列表用户资料回调实例(EaseIM APP 有效) -```objectivec +```Objective-C - (id)easeUserDelegateAtConversationId:(NSString *)conversationId conversationType:(EMConversationType)type { //EMConversationUserDataModel 为自定义用户资料数据模型,实现 EaseUserDelegate 接口返回参数 @@ -894,7 +894,7 @@ return menuArray; #### 会话列表 cell 侧滑项回调 -```objectivec +```Objective-C /*! @method @brief 会话列表 cell 侧滑项回调 @@ -909,7 +909,7 @@ return menuArray; 会话列表 cell 侧滑项回调示例(EaseIM APP 有效) -```objectivec +```Objective-C - (NSArray *)easeTableView:(UITableView *)tableView trailingSwipeActionsForRowAtIndexPath:(NSIndexPath *)indexPath actions:(NSArray *)actions { NSMutableArray *array = [[NSMutableArray alloc]init]; @@ -934,7 +934,7 @@ return menuArray; 获取用户自己的联系人列表填充到 EaseIMKit 通讯录中 -```objectivec +```Objective-C - (void)setContacts:(NSArray * _Nonnull)contacts; ``` @@ -944,13 +944,13 @@ EaseConversationsViewControllerDelegate #### 即将刷新通讯录填充数据 -```objectivec +```Objective-C - (void)willBeginRefresh; ``` 即将刷新通讯录填充数据示例(EaseIM APP 有效): -```objectivec +```Objective-C - (void)willBeginRefresh { //从服务器获取当前登录账户的联系人列表 [EMClient.sharedClient.contactManager getContactsFromServerWithCompletion:^(NSArray *aList, EMError *aError) { @@ -972,7 +972,7 @@ EaseConversationsViewControllerDelegate #### 通讯录自定义 cell -```objectivec +```Objective-C /*! @method @brief 获取通讯录自定义 cell @@ -986,7 +986,7 @@ EaseConversationsViewControllerDelegate #### 通讯录 cell 条目选中回调 -```objectivec +```Objective-C /*! @method @brief 通讯录 cell 条目选中回调 @@ -999,7 +999,7 @@ EaseConversationsViewControllerDelegate 通讯录 cell 条目选中回调示例: -```objectivec +```Objective-C - (void)easeTableView:(UITableView *)tableView didSelectRowAtContactModel:(EaseContactModel *)contact { //跳转加好友页 if ([contact.easeId isEqualToString:@"newFriend"]) { @@ -1024,7 +1024,7 @@ EaseConversationsViewControllerDelegate #### 通讯录 cell 侧滑回调 -```objectivec +```Objective-C /*! @method @brief 会话列表 cell 侧滑项回调 @@ -1039,7 +1039,7 @@ EaseConversationsViewControllerDelegate 通讯录 cell 侧滑回调示例: -```objectivec +```Objective-C - (NSArray *)easeTableView:(UITableView *)tableView trailingSwipeActionsForRowAtContactModel:(EaseContactModel *)contact actions:(NSArray *)actions { //通讯录头部非联系人列表禁止侧滑 diff --git a/docs/uikit/chatuikit/react-native/ui_chat.md b/docs/uikit/chatuikit/react-native/ui_chat.md index b4c36cfc2..5d73f89d1 100644 --- a/docs/uikit/chatuikit/react-native/ui_chat.md +++ b/docs/uikit/chatuikit/react-native/ui_chat.md @@ -23,7 +23,7 @@ | `onSendMessageEnd` | 否 | 消息发送完成时发生。 | | `onVoiceRecordEnd` | 否 | 语音消息录制完成时发生。 | -```typescript +```TypeScript import * as React from "react"; import { ChatFragment, ScreenContainer } from "react-native-chat-uikit"; export default function ChatScreen(): JSX.Element { @@ -59,7 +59,7 @@ export default function ChatScreen(): JSX.Element { 例如,你可以自行录制语音,然后调用 `sendVoiceMessage` 方法发送。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -96,7 +96,7 @@ export default function ChatScreen(): JSX.Element { - `VoiceMessageItem`:自定义语音消息样式。 - `FileMessageItem`:自定义文件消息样式。 -```typescript +```TypeScript import type { MessageBubbleListProps } from "../fragments/MessageBubbleList"; import MessageBubbleList from "../fragments/MessageBubbleList"; export default function ChatScreen(): JSX.Element { @@ -131,7 +131,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `MessageBubbleListPropsP` 中的 `backgroundColor` 自定义背景色。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -160,7 +160,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `messageBubbleList` 中的 `showTimeLabel` 自定义时间标签显示和隐藏。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -189,7 +189,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ChatFragment` 中的 `onClickMessageBubble` 自定义点击消息气泡回调,例如:播放语音、预览图片等。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -210,7 +210,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ChatFragment` 中的 `onLongPressMessageBubble` 自定义长按消息气泡回调,例如,可以显示不同右键菜单。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -235,7 +235,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ChatFragment` 中的 `onSendMessage` 自定义发送消息前回调。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -256,7 +256,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ChatFragment` 中的 `onSendMessageEnd` 自定义发送消息完成,例如,更新消息发送状态。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; diff --git a/docs/uikit/chatuikit/react-native/ui_conversation.md b/docs/uikit/chatuikit/react-native/ui_conversation.md index bac5c9549..a940d12d2 100644 --- a/docs/uikit/chatuikit/react-native/ui_conversation.md +++ b/docs/uikit/chatuikit/react-native/ui_conversation.md @@ -17,7 +17,7 @@ | `sortPolicy` | 否 | 设置会话列表项的排序规则。 | | `RenderItem` | 否 | 自定义会话列表项的样式。 | -```typescript +```TypeScript import * as React from "react"; import { ConversationListFragment, @@ -47,7 +47,7 @@ export default function ChatScreen(): JSX.Element { 如果开启侧滑功能,则需要设置侧滑组件的宽度。 ::: -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -73,7 +73,7 @@ export default function ChatScreen(): JSX.Element { 会话默认按会话 ID `convId` 排序。你可以设置 `ConversationListFragment` 中的 `sortPolicy` 自定义会话排序,如置顶会话或按会话中的最新一条消息的时间戳排序。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -105,7 +105,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ConversationListFragment` 中的 `onUpdateReadCount` 自定义会话的未读消息数。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -129,7 +129,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ConversationListFragment` 中的 `onPress` 自定义会话点击事件。例如,你可以点击会话列表项,进入聊天页面。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; @@ -149,7 +149,7 @@ export default function ChatScreen(): JSX.Element { 你可以设置 `ConversationListFragment` 中的 `onLongPress` 自定义会话列表项,例如长按后显示该项目的右键菜单。 -```typescript +```TypeScript export default function ChatScreen(): JSX.Element { const chatId = "xxx"; const chatType = 0; diff --git a/docs/uikit/chatuikit/react-native/ui_quickstart.md b/docs/uikit/chatuikit/react-native/ui_quickstart.md index f68b19b2d..13aebd865 100644 --- a/docs/uikit/chatuikit/react-native/ui_quickstart.md +++ b/docs/uikit/chatuikit/react-native/ui_quickstart.md @@ -147,7 +147,7 @@ buildscript { 1. 初始化 react-native-chat-uikit: -```typescript +```TypeScript export const App = () => { return ( { 2. 添加聊天详情页面: -```typescript +```TypeScript export function ChatScreen({ route, }: NativeStackScreenProps): JSX.Element { diff --git a/docs/uikit/chatuikit/uniapp/chatfeature_common.md b/docs/uikit/chatuikit/uniapp/chatfeature_common.md index a8b0fbb71..f262e51ca 100644 --- a/docs/uikit/chatuikit/uniapp/chatfeature_common.md +++ b/docs/uikit/chatuikit/uniapp/chatfeature_common.md @@ -76,7 +76,7 @@ 示例代码如下: -```javascript +```JavaScript ChatUIKit.hideFeature(['inputMention']) ``` diff --git a/docs/uikit/chatuikit/uniapp/chatfeature_message.md b/docs/uikit/chatuikit/uniapp/chatfeature_message.md index 8e5bbae52..f60c70cad 100644 --- a/docs/uikit/chatuikit/uniapp/chatfeature_message.md +++ b/docs/uikit/chatuikit/uniapp/chatfeature_message.md @@ -36,7 +36,7 @@ 示例代码如下: -```javascript +```JavaScript ChatUIKit.hideFeature(['replyMessage']) ``` diff --git a/docs/uikit/chatuikit/uniapp/chatuikit_integrated.md b/docs/uikit/chatuikit/uniapp/chatuikit_integrated.md index f2541025e..0019649ca 100644 --- a/docs/uikit/chatuikit/uniapp/chatuikit_integrated.md +++ b/docs/uikit/chatuikit/uniapp/chatuikit_integrated.md @@ -262,14 +262,14 @@ UIKit 内置了 Store 模块,你可以通过阅读 `ChatUIKit/Store` 模块源 - 获取 `ChatUIKit` 的所有会话消息未读数: -```javascript +```JavaScript // 消息未读数 const unRead = ChatUIKit.conversationStore.totalUnreadCount ``` - 手动设置群组头像: -```javascript +```JavaScript // 设置群组头像 ChatUIKit.groupStore.setGroupAvatar('groupId', 'group avatar url'); ``` @@ -280,7 +280,7 @@ ChatUIKit.groupStore.setGroupAvatar('groupId', 'group avatar url'); 例如,使用自己的用户属性,示例代码如下: -```javascript +```JavaScript // 隐藏环信内置的用户属性 ChatUIKit.hideFeature(['useUserInfo']) diff --git a/docs/uikit/chatuikit/web/chatuikit_context.md b/docs/uikit/chatuikit/web/chatuikit_context.md index 7675291be..bc81b2528 100644 --- a/docs/uikit/chatuikit/web/chatuikit_context.md +++ b/docs/uikit/chatuikit/web/chatuikit_context.md @@ -83,7 +83,7 @@ rootStore 包含以下数据模块: ## 使用示例 -```javascript +```JavaScript import { rootStore } from "easemob-chat-uikit"; ``` @@ -97,7 +97,7 @@ import { rootStore } from "easemob-chat-uikit"; ### 使用示例 -```javascript +```JavaScript import React from "react"; import { useConversationContext } from "easemob-chat-uikit"; @@ -170,7 +170,7 @@ const ChatAPP = () => { ### Usage example -```javascript +```JavaScript import React from "react"; import { useChatContext, useSDK } from "easemob-chat-uikit"; @@ -281,7 +281,7 @@ const ChatAPP = () => { ### 使用示例 -```javascript +```JavaScript import React from "react"; import { useAddressContext } from "easemob-chat-uikit"; diff --git a/docs/uikit/chatuikit/web/chatuikit_integrated_vue.md b/docs/uikit/chatuikit/web/chatuikit_integrated_vue.md index e15ca7c5d..76d7a7c76 100644 --- a/docs/uikit/chatuikit/web/chatuikit_integrated_vue.md +++ b/docs/uikit/chatuikit/web/chatuikit_integrated_vue.md @@ -69,7 +69,7 @@ npm i @vitejs/plugin-react [Veaury 配置参考](https://github.com/gloriasoft/veaury/blob/master/README_zhcn.md#vite) -```javascript +```JavaScript import { fileURLToPath, URL } from "node:url"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; @@ -166,7 +166,7 @@ export default EaseChat; 3. 定义 `theme` 变量,传递给 EaseChat 组件,用于切换 UIKit 的主题。 4. 添加一些样式,美化界面。 -```javascript +```JavaScript