From 69c1c60421c60eeed93df29292035866c9556690 Mon Sep 17 00:00:00 2001 From: Yleiting <994812516@qq.com> Date: Thu, 21 Sep 2023 18:25:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A7=81=E6=9C=89=E5=8C=96?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vuepress/components/PlatformSwitch.vue | 21 +- docs/.vuepress/public/icon-linux-hover.svg | 1 + docs/.vuepress/public/icon-linux.svg | 1 + .../public/si-glyph-electron (1).svg | 1 + docs/.vuepress/public/si-glyph-electron.svg | 1 + docs/.vuepress/sidebar/document_v2.ts | 97 +- docs/.vuepress/sidebar/push.ts | 6 +- docs/document/v2/android/demo.md | 25 +- docs/document/v2/android/easecallkit.md | 10 +- docs/document/v2/android/easeimkit.md | 47 +- docs/document/v2/android/group_attributes.md | 3 +- docs/document/v2/android/group_manage.md | 3 +- docs/document/v2/android/group_members.md | 5 +- docs/document/v2/android/group_overview.md | 6 +- docs/document/v2/android/message_manage.md | 4 +- docs/document/v2/android/message_modify.md | 2 +- docs/document/v2/android/message_overview.md | 2 +- docs/document/v2/android/message_receipt.md | 10 +- docs/document/v2/android/message_retrieve.md | 12 +- .../v2/android/message_send_receive.md | 4 +- docs/document/v2/android/moderation.md | 4 +- docs/document/v2/android/multi_device.md | 10 +- docs/document/v2/android/overview.md | 8 +- docs/document/v2/android/presence.md | 6 +- docs/document/v2/android/push.md | 20 +- docs/document/v2/android/quickstart.md | 6 +- docs/document/v2/android/reaction.md | 5 +- docs/document/v2/android/releasenote.md | 14 +- docs/document/v2/android/room_attributes.md | 5 +- docs/document/v2/android/room_manage.md | 9 +- docs/document/v2/android/room_members.md | 4 +- docs/document/v2/android/room_overview.md | 4 +- docs/document/v2/android/thread.md | 8 +- docs/document/v2/android/thread_message.md | 4 +- docs/document/v2/android/user_relationship.md | 4 +- docs/document/v2/android/userprofile.md | 6 +- docs/document/v2/applet/alipay.md | 12 +- docs/document/v2/applet/baidu.md | 12 +- docs/document/v2/applet/bytedance.md | 12 +- docs/document/v2/applet/initialization.md | 12 +- .../v2/applet/message_send_receive.md | 4 +- docs/document/v2/applet/overview.md | 3 +- docs/document/v2/applet/qq.md | 12 +- docs/document/v2/applet/releasenote.md | 12 +- docs/document/v2/applet/serverconfig.md | 3 +- docs/document/v2/applet/uniapp.md | 15 +- docs/document/v2/applet/uniappnativeapp.md | 13 +- docs/document/v2/applet/wechat.md | 12 +- docs/document/v2/electron/appendix.md | 53 + docs/document/v2/electron/chatmanage.md | 458 ++++++++ docs/document/v2/electron/demo.md | 6 + docs/document/v2/electron/group_manage.md | 1018 +++++++++++++++++ docs/document/v2/electron/message.md | 257 +++++ docs/document/v2/electron/multi_device.md | 23 + docs/document/v2/electron/overview.md | 152 +++ docs/document/v2/electron/quickstart.md | 228 ++++ docs/document/v2/electron/releasenote.md | 59 + docs/document/v2/electron/room_manage.md | 106 ++ .../document/v2/electron/user_relationship.md | 338 ++++++ docs/document/v2/flutter/error.md | 4 +- docs/document/v2/flutter/group_attributes.md | 4 +- docs/document/v2/flutter/group_manage.md | 3 +- docs/document/v2/flutter/group_members.md | 4 +- docs/document/v2/flutter/message_manage.md | 2 +- docs/document/v2/flutter/message_modify.md | 2 +- docs/document/v2/flutter/message_receipt.md | 8 +- docs/document/v2/flutter/message_retrieve.md | 8 +- .../v2/flutter/message_send_receive.md | 5 +- docs/document/v2/flutter/moderation.md | 2 +- docs/document/v2/flutter/multi_device.md | 9 +- docs/document/v2/flutter/overview.md | 8 +- docs/document/v2/flutter/presence.md | 7 +- docs/document/v2/flutter/quickstart.md | 12 +- docs/document/v2/flutter/reaction.md | 5 +- docs/document/v2/flutter/room_attributes.md | 3 +- docs/document/v2/flutter/room_manage.md | 9 +- docs/document/v2/flutter/room_members.md | 4 +- docs/document/v2/flutter/thread.md | 8 +- docs/document/v2/flutter/thread_message.md | 4 +- docs/document/v2/flutter/user_relationship.md | 2 +- docs/document/v2/flutter/userprofile.md | 4 +- docs/document/v2/ios/demo.md | 13 +- docs/document/v2/ios/easecallkit.md | 10 +- docs/document/v2/ios/easeimkit.md | 24 +- docs/document/v2/ios/group_attributes.md | 4 +- docs/document/v2/ios/group_manage.md | 3 +- docs/document/v2/ios/group_members.md | 4 +- docs/document/v2/ios/message_manage.md | 2 +- docs/document/v2/ios/message_modify.md | 2 +- docs/document/v2/ios/message_receipt.md | 8 +- docs/document/v2/ios/message_retrieve.md | 10 +- docs/document/v2/ios/message_send_receive.md | 4 +- docs/document/v2/ios/multi_device.md | 6 +- docs/document/v2/ios/overview.md | 10 +- docs/document/v2/ios/presence.md | 4 +- docs/document/v2/ios/push.md | 4 +- docs/document/v2/ios/quickstart.md | 2 +- docs/document/v2/ios/reaction.md | 5 +- docs/document/v2/ios/releasenote.md | 6 +- docs/document/v2/ios/room_attributes.md | 4 +- docs/document/v2/ios/room_manage.md | 9 +- docs/document/v2/ios/room_members.md | 3 +- docs/document/v2/ios/thread.md | 8 +- docs/document/v2/ios/thread_message.md | 5 +- docs/document/v2/ios/user_relationship.md | 2 +- docs/document/v2/ios/userprofile.md | 6 +- docs/document/v2/linux/overview.md | 109 ++ docs/document/v2/linux/releasenote.md | 6 + docs/document/v2/linux/techspec.md | 7 + .../v2/privatization/easemob_app_token.md | 82 ++ .../v2/privatization/easemob_user_token.md | 219 ++++ .../privatization/faq_integration_issues.md | 53 + .../v2/privatization/faq_quality_issues.md | 90 ++ .../document/v2/privatization/uc_configure.md | 14 +- docs/document/v2/privatization/uc_deploy.md | 12 +- docs/document/v2/privatization/uc_glossary.md | 201 ++++ .../v2/privatization/uc_introduction.md | 130 +++ .../v2/privatization/uc_limitation.md | 88 ++ docs/document/v2/privatization/uc_private.md | 104 +- docs/document/v2/react-native/error.md | 4 +- .../v2/react-native/group_attributes.md | 4 +- docs/document/v2/react-native/group_manage.md | 3 +- .../document/v2/react-native/group_members.md | 4 +- .../v2/react-native/message_manage.md | 7 +- .../v2/react-native/message_modify.md | 2 +- .../v2/react-native/message_receipt.md | 8 +- .../v2/react-native/message_send_receive.md | 4 +- .../v2/react-native/message_translation.md | 2 +- docs/document/v2/react-native/multi_device.md | 12 +- docs/document/v2/react-native/overview.md | 12 +- docs/document/v2/react-native/presence.md | 4 +- docs/document/v2/react-native/quickstart.md | 4 +- docs/document/v2/react-native/reaction.md | 4 +- docs/document/v2/react-native/releasenote.md | 3 +- .../v2/react-native/room_attributes.md | 4 +- docs/document/v2/react-native/room_manage.md | 9 +- docs/document/v2/react-native/room_members.md | 4 +- docs/document/v2/react-native/thread.md | 5 +- .../v2/react-native/thread_message.md | 2 +- .../v2/react-native/user_relationship.md | 2 +- docs/document/v2/react-native/userprofile.md | 4 +- .../document/v2/server-side/account_system.md | 14 +- docs/document/v2/server-side/callback.md | 16 +- docs/document/v2/server-side/chatroom.md | 8 +- .../v2/server-side/easemob_app_token.md | 2 +- .../v2/server-side/easemob_user_token.md | 2 +- .../v2/server-side/enable_and_configure_IM.md | 2 +- docs/document/v2/server-side/error.md | 6 +- docs/document/v2/server-side/group.md | 12 +- .../v2/server-side/java_server_sdk.md | 4 +- docs/document/v2/server-side/limitation.md | 2 +- .../v2/server-side/message_chatroom.md | 11 +- .../v2/server-side/message_download.md | 12 +- docs/document/v2/server-side/message_group.md | 12 +- .../v2/server-side/message_historical.md | 10 +- .../document/v2/server-side/message_import.md | 9 +- .../document/v2/server-side/message_recall.md | 4 +- .../document/v2/server-side/message_single.md | 14 +- docs/document/v2/server-side/overview.md | 5 +- .../document/v2/server-side/php_server_sdk.md | 6 +- docs/document/v2/server-side/presence.md | 11 +- docs/document/v2/server-side/push.md | 16 +- docs/document/v2/server-side/reaction.md | 10 +- .../v2/server-side/user_relationship.md | 10 +- .../v2/server-side/user_status_callback.md | 3 +- docs/document/v2/server-side/userprofile.md | 8 +- docs/document/v2/unity/group_attributes.md | 4 +- docs/document/v2/unity/group_manage.md | 4 +- docs/document/v2/unity/group_members.md | 4 +- docs/document/v2/unity/message_manage.md | 2 +- docs/document/v2/unity/message_modify.md | 2 +- docs/document/v2/unity/message_receipt.md | 8 +- docs/document/v2/unity/message_retrieve.md | 9 +- .../document/v2/unity/message_send_receive.md | 4 +- docs/document/v2/unity/multi_device.md | 8 +- docs/document/v2/unity/overview.md | 12 +- docs/document/v2/unity/presence.md | 7 +- docs/document/v2/unity/quickstart.md | 10 +- docs/document/v2/unity/reaction.md | 5 +- docs/document/v2/unity/releasenote.md | 4 +- docs/document/v2/unity/room_attributes.md | 4 +- docs/document/v2/unity/room_manage.md | 9 +- docs/document/v2/unity/room_members.md | 4 +- docs/document/v2/unity/thread.md | 8 +- docs/document/v2/unity/thread_message.md | 4 +- docs/document/v2/unity/user_relationship.md | 2 +- docs/document/v2/unity/userprofile.md | 4 +- docs/document/v2/web/demo_react.md | 10 +- docs/document/v2/web/demo_vue.md | 9 +- docs/document/v2/web/group_attributes.md | 2 +- docs/document/v2/web/group_manage.md | 3 +- docs/document/v2/web/group_members.md | 2 +- docs/document/v2/web/message_receipt.md | 9 +- docs/document/v2/web/message_retrieve.md | 6 +- docs/document/v2/web/message_send_receive.md | 6 +- docs/document/v2/web/multi_device.md | 8 +- docs/document/v2/web/overview.md | 12 +- docs/document/v2/web/presence.md | 4 +- docs/document/v2/web/privatecloud.md | 4 +- docs/document/v2/web/push.md | 5 +- docs/document/v2/web/quickstart.md | 6 +- docs/document/v2/web/reaction.md | 5 +- docs/document/v2/web/releasenote.md | 5 - docs/document/v2/web/room_attributes.md | 4 +- docs/document/v2/web/room_manage.md | 9 +- docs/document/v2/web/room_members.md | 3 +- docs/document/v2/web/room_overview.md | 6 +- docs/document/v2/web/thread.md | 8 +- docs/document/v2/web/thread_message.md | 5 +- docs/document/v2/web/user_relationship.md | 4 +- docs/document/v2/web/userprofile.md | 6 +- docs/document/v2/windows/group_attributes.md | 4 +- docs/document/v2/windows/group_manage.md | 5 +- docs/document/v2/windows/group_members.md | 4 +- docs/document/v2/windows/message_manage.md | 2 +- docs/document/v2/windows/message_modify.md | 2 +- docs/document/v2/windows/message_receipt.md | 8 +- docs/document/v2/windows/message_retrieve.md | 8 +- .../v2/windows/message_send_receive.md | 4 +- docs/document/v2/windows/multi_device.md | 8 +- docs/document/v2/windows/overview.md | 12 +- docs/document/v2/windows/presence.md | 7 +- docs/document/v2/windows/quickstart.md | 10 +- docs/document/v2/windows/reaction.md | 5 +- docs/document/v2/windows/releasenote.md | 4 +- docs/document/v2/windows/room_attributes.md | 4 +- docs/document/v2/windows/room_manage.md | 9 +- docs/document/v2/windows/room_members.md | 3 +- docs/document/v2/windows/thread.md | 8 +- docs/document/v2/windows/thread_message.md | 4 +- docs/document/v2/windows/user_relationship.md | 2 +- docs/document/v2/windows/userprofile.md | 4 +- docs/private/media/conference_android.md | 8 +- docs/private/media/conference_ios.md | 8 +- docs/private/media/conference_web.md | 8 +- docs/private/media/one2one_android.md | 8 +- docs/private/media/one2one_ios.md | 8 +- docs/private/media/one2one_web.md | 4 +- docs/private/media/rest_introduction.md | 4 +- docs/private/media/scenario_live.md | 12 +- docs/private/media/scenario_meeting.md | 12 +- docs/private/media/scenario_one2one.md | 10 +- docs/push/image.png | Bin 0 -> 164586 bytes docs/push/push_androidvendor_statistics.md | 8 +- docs/push/push_by_tag.md | 24 +- docs/push/push_certificate_config.md | 2 +- docs/push/push_createproduct_app.md | 21 +- docs/push/push_integration_note_android.md | 6 +- docs/push/push_integration_note_ios.md | 10 +- docs/push/push_send_notification.md | 22 +- static/images/instantpush/push_create_app.jpg | Bin 0 -> 114317 bytes static/images/instantpush/push_open_app.jpg | Bin 0 -> 147291 bytes .../images/instantpush/push_sdk_download.jpg | Bin 0 -> 164758 bytes .../privitization/deploy_user_manage.png | Bin 0 -> 160170 bytes .../privitization/faq-msgdeliveryquery.jpg | Bin 0 -> 264025 bytes .../faq-userconnectionstatus.jpg | Bin 0 -> 233498 bytes static/images/privitization/framework.jpg | Bin 0 -> 101130 bytes 257 files changed, 4540 insertions(+), 915 deletions(-) create mode 100644 docs/.vuepress/public/icon-linux-hover.svg create mode 100644 docs/.vuepress/public/icon-linux.svg create mode 100644 docs/.vuepress/public/si-glyph-electron (1).svg create mode 100644 docs/.vuepress/public/si-glyph-electron.svg create mode 100644 docs/document/v2/electron/appendix.md create mode 100644 docs/document/v2/electron/chatmanage.md create mode 100644 docs/document/v2/electron/demo.md create mode 100644 docs/document/v2/electron/group_manage.md create mode 100644 docs/document/v2/electron/message.md create mode 100644 docs/document/v2/electron/multi_device.md create mode 100644 docs/document/v2/electron/overview.md create mode 100644 docs/document/v2/electron/quickstart.md create mode 100644 docs/document/v2/electron/releasenote.md create mode 100644 docs/document/v2/electron/room_manage.md create mode 100644 docs/document/v2/electron/user_relationship.md create mode 100644 docs/document/v2/linux/overview.md create mode 100644 docs/document/v2/linux/releasenote.md create mode 100644 docs/document/v2/linux/techspec.md create mode 100644 docs/document/v2/privatization/easemob_app_token.md create mode 100644 docs/document/v2/privatization/easemob_user_token.md create mode 100644 docs/document/v2/privatization/faq_integration_issues.md create mode 100644 docs/document/v2/privatization/faq_quality_issues.md create mode 100644 docs/document/v2/privatization/uc_glossary.md create mode 100644 docs/document/v2/privatization/uc_introduction.md create mode 100644 docs/document/v2/privatization/uc_limitation.md create mode 100644 docs/push/image.png create mode 100644 static/images/instantpush/push_create_app.jpg create mode 100644 static/images/instantpush/push_open_app.jpg create mode 100644 static/images/instantpush/push_sdk_download.jpg create mode 100644 static/images/privitization/deploy_user_manage.png create mode 100644 static/images/privitization/faq-msgdeliveryquery.jpg create mode 100644 static/images/privitization/faq-userconnectionstatus.jpg create mode 100644 static/images/privitization/framework.jpg diff --git a/docs/.vuepress/components/PlatformSwitch.vue b/docs/.vuepress/components/PlatformSwitch.vue index e28f3f324..e23a553a5 100644 --- a/docs/.vuepress/components/PlatformSwitch.vue +++ b/docs/.vuepress/components/PlatformSwitch.vue @@ -44,6 +44,14 @@ const PLATFORM_ICON_MAP = { icon : '/icon-platform.svg', activeIcon: '/icon-platform-hover.svg', }, + electron: { + icon : '/icon-Electron.svg', + activeIcon: '/icon-Electron-hover.svg', + }, + linux: { + icon : '/icon-linux.svg', + activeIcon: '/icon-linux-hover.svg', + }, } const platform = ref('android') @@ -84,7 +92,7 @@ const options = [ options: [ { value: 'privatization', - label: '服务部署', + label: '环境准备', }, ], }, @@ -122,11 +130,20 @@ const options = [ { value: 'applet', label: '小程序', + + }, + { + value: 'electron', + label: 'Electron', + }, + { + value: 'linux', + label: 'Linux', }, { value: 'server-side', label: 'Rest Api', - } + }, ], }, ] diff --git a/docs/.vuepress/public/icon-linux-hover.svg b/docs/.vuepress/public/icon-linux-hover.svg new file mode 100644 index 000000000..336b3ce1b --- /dev/null +++ b/docs/.vuepress/public/icon-linux-hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vuepress/public/icon-linux.svg b/docs/.vuepress/public/icon-linux.svg new file mode 100644 index 000000000..eee941b86 --- /dev/null +++ b/docs/.vuepress/public/icon-linux.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vuepress/public/si-glyph-electron (1).svg b/docs/.vuepress/public/si-glyph-electron (1).svg new file mode 100644 index 000000000..7b267ee7c --- /dev/null +++ b/docs/.vuepress/public/si-glyph-electron (1).svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vuepress/public/si-glyph-electron.svg b/docs/.vuepress/public/si-glyph-electron.svg new file mode 100644 index 000000000..c4701b50c --- /dev/null +++ b/docs/.vuepress/public/si-glyph-electron.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.vuepress/sidebar/document_v2.ts b/docs/.vuepress/sidebar/document_v2.ts index d8dd52ab2..3b337d7a2 100644 --- a/docs/.vuepress/sidebar/document_v2.ts +++ b/docs/.vuepress/sidebar/document_v2.ts @@ -8,26 +8,33 @@ const platformList = getSubDirectories(DOC_PATH) const privateSidebar = { '/document/v2/privatization/': [ { - text: '服务部署', + text: '产品简介', children: [ - { text: '私有化服务部署', link: 'uc_deploy.html' }, + { text: '产品概述', link: 'uc_introduction.html' }, + { text: '产品使用限制', link: 'uc_limitation.html' }, + { text: '术语表', link: 'uc_glossary.html' }, ] - }, + } , { - text: '配置说明', - children: [ - { text: 'Console配置说明', link: 'uc_configure.html' }, - { text: 'Android私有化配置', link: 'uc_android_private.html' }, - { text: 'iOS私有化配置', link: 'uc_iOS_private.html' }, - { text: 'Web私有化配置', link: 'uc_Web_private.html' }, - ] - }, - { - text: 'SDK下载', - children: [ - { text: 'SDK 及 Demo 下载', link: 'uc_private.html' }, - ] - }, + text: '快速开始', + children: [ + { text: '服务部署', link: 'uc_deploy.html' }, + { text: '客户端下载', link: 'uc_private.html' }, + { text: 'Console指南', link: 'uc_configure.html' }, + { text: 'App Token 鉴权', link: 'easemob_app_token.html' }, + { text: 'User Token 鉴权', link: 'easemob_user_token.html' }, + { text: '快速开始(不使用 UIKIT) Android', link: '/document/v2/android/overview.html' }, + { text: '快速开始(不使用 UIKIT)iOS', link: '/document/v2/ios/quickstart.html' }, + { text: '快速开始(不使用 UIKIT) Web', link: '/document/v2/web/quickstart.html' }, + ] + } , + { + text: 'FAQ', + children: [ + { text: 'FAQ质量', link: 'faq_quality_issues.html' }, + { text: ' FAQ集成', link: 'faq_integration_issues.html' }, + ] + } , ] } @@ -60,9 +67,9 @@ const documentSidebar = [ { text: '使用环信 App Token 鉴权', link: 'easemob_app_token.html', only: ['server-side'] }, { text: '使用环信 User Token 鉴权', link: 'easemob_user_token.html', only: ['server-side'] }, { text: 'IM 产品使用限制', link: 'limitation.html', only: ['server-side'] }, - { text: '接口频率限制', link: 'limitationapi.html', only: ['server-side'] }, + /*{ text: '接口频率限制', link: 'limitationapi.html', only: ['server-side'] },*/ ], - except: ['applet'] + except: ['applet', 'linux', 'electron'] }, { text: '基础功能', @@ -78,7 +85,7 @@ const documentSidebar = [ { text: '管理服务端消息', link: 'message_retrieve.html', except: ['react-native'] }, { text: '管理消息回执', link: 'message_receipt.html' }, { text: '修改消息', link: 'message_modify.html' }, - { text: '翻译', link: 'message_translation.html' }, + /*{ text: '翻译', link: 'message_translation.html' },*/ ] }, { text: '管理用户属性', link: 'userprofile.html' }, @@ -104,7 +111,7 @@ const documentSidebar = [ ] }, ], - except: ['applet', 'server-side'] + except: ['applet', 'server-side','electron'] }, { text: '进阶功能', @@ -121,9 +128,9 @@ const documentSidebar = [ { text: '管理子区消息', link: 'thread_message.html' } ] }, - { text: '消息审核(举报)', link: 'moderation.html'}, + /*{ text: '消息审核(举报)', link: 'moderation.html'},*/ ], - except: ['applet','server-side'] + except: ['applet','server-side','electron'] }, { text: '其他', @@ -168,7 +175,7 @@ const documentSidebar = [ { text: '管理服务端消息', link: 'message_retrieve.html' }, { text: '管理消息回执', link: 'message_receipt.html' }, { text: '修改消息', link: 'message_modify.html' }, - { text: '翻译', link: 'message_translation.html' }, + /**{ text: '翻译', link: 'message_translation.html' },**/ ] }, { text: '用户属性', link: 'userprofile.html' }, @@ -211,7 +218,7 @@ const documentSidebar = [ { text: '管理子区消息', link: 'thread_message.html' } ] }, - { text: '消息审核(举报)', link: 'moderation.html'}, + /**{ text: '消息审核(举报)', link: 'moderation.html'},**/ ], only: ['applet'] }, @@ -274,7 +281,45 @@ const documentSidebar = [ { text: '发送后回调-事件回调', link: 'callback_configurations.html' } ], only: ['server-side'] - } + }, + { + text: 'Linux开发文档', + children: [ + { text: '集成说明', link: 'overview.html' }, + { text: '技术参数', link: 'techspec.html' }, + { text: 'SDK更新日志', link: 'releasenote.html' }, + ], + only: ['linux'] + }, + { + text: '快速开始', + children: [ + { text: 'Demo下载体验', link: 'demo.html' }, + { text: '快速开始', link: 'quickstart.html' }, + { text: '集成概述', link: 'overview.html' }, + { text: 'SDK更新日志', link: 'releasenote.html' }, + ], + only: ['electron'] + }, + { + text: '基础功能', + children: [ + { text: '消息管理', link: 'message.html' }, + { text: '会话管理', link: 'chatmanage.html' }, + { text: '好友管理', link: 'user_relationship.html' }, + { text: '群组管理', link: 'group_manage.html' }, + { text: '聊天室管理', link: 'room_manage.html' }, + ], + only: ['electron'] + }, + { + text: '进阶功能', + children: [ + { text: '多设备监听', link: 'multi_device.html' }, + { text: '附录', link: 'appendix.html' }, + ], + only: ['electron'] + }, ] function buildDocSidebar() { diff --git a/docs/.vuepress/sidebar/push.ts b/docs/.vuepress/sidebar/push.ts index 0c0d424d3..e7b926f92 100644 --- a/docs/.vuepress/sidebar/push.ts +++ b/docs/.vuepress/sidebar/push.ts @@ -8,15 +8,15 @@ export const PUSH_SIDEBAR = [ { text: 'Android SDK 发布动态', link: 'push_dynamics_android.html' }, { text: 'iOS SDK 发布动态', link: 'push_dynamics_ios.html' }, ]}, - { text: '全球化部署', link: 'push_global_deployment.html' }, + /**{ text: '全球化部署', link: 'push_global_deployment.html' },**/ ] }, - { + /** { text: '产品定价', children: [ { text: '计费说明', link: 'push_billing.html' }, ] - }, + },**/ { text: '快速入门', children: [ diff --git a/docs/document/v2/android/demo.md b/docs/document/v2/android/demo.md index e675ba063..0b8f7fc8a 100644 --- a/docs/document/v2/android/demo.md +++ b/docs/document/v2/android/demo.md @@ -4,23 +4,22 @@ 环信即时通讯 IM Android 端提供示例应用可供体验。 -1. [下载 Demo](https://www.easemob.com/download/demo)。 +1. [下载 Demo](https://downloadsdk.easemob.com/mp/downloads/sdk/imsdkdemo_android-4.1.2.apk)。 -2. 输入你的手机号,获取验证码,然后输入。 +2. 输入你的登录账号和密码。 3. 选择同意《环信服务条款》与《环信隐私协议》,然后点击 **登录** 登录 Demo。 -![img](@static/images/demo/android_login.png) + ## 代码下载 您可以通过以下两种方式获取到源代码: -- 下载代码压缩包:[IM SDK 及 Demo 下载](https://www.easemob.com/download/im) -- 下载源代码:[github源码地址](https://github.com/easemob/chat-android) +- 下载代码压缩包:[IM SDK 及 Demo 下载](https://downloadsdk.easemob.com/downloads/easemob-sdk-4.1.2.zip) 欢迎大家提交 PR 改进和修复 EaseIM 和 EaseIMKit 中的问题。 ## 导入 EaseIM -从 [IM SDK 及 Demo 下载](https://www.easemob.com/download/im) 下载 Android SDK 压缩包,然后解压。解压后在 examples 文件夹下,即为 EaseIM 的工程目录。 +下载 Android SDK 压缩包,然后解压。解压后在 examples 文件夹下,即为 EaseIM 的工程目录。 ### 导入到 Android Studio 打开 Android Studio,点击 File > Open,打开 EaseIm3.0 根目录即可。 :::notice @@ -58,6 +57,14 @@ - **ContactListFragment**:继承自 EaseIMKit 中的 EaseContactListFragment,展示了添加头布局,添加条目长按功能及实现条目点击事件等; - **GroupDetailActivity**:实现了如下功能:添加群成员,修改群公告及群介绍,上传共享文件,进行群组管理,设置消息免打扰及解散或者退出群组等。 ## 部分 UI 展示 -![会话列表](@static/images/android/app-demo-ui-1.jpeg) -![联系人列表](@static/images/android/app-demo-ui-2.jpeg) -![聊天页面](@static/images/android/app-demo-ui-3.jpeg) \ No newline at end of file + + + + + \ No newline at end of file diff --git a/docs/document/v2/android/easecallkit.md b/docs/document/v2/android/easecallkit.md index 7af7401b8..a7f96e818 100644 --- a/docs/document/v2/android/easecallkit.md +++ b/docs/document/v2/android/easecallkit.md @@ -14,7 +14,7 @@ ## 跑通 Demo -EaseCallKit 集成在环信开源 IM Demo 中,你可以通过进入 [环信 Demo 及源码](https://www.easemob.com/download/im) 下载页面,选择 Android 端进行下载,直接下载: [Android IM 源码](https://github.com/easemob/chat-android)。 +EaseCallKit 集成在环信开源 IM Demo 中,你可以直接下载 Android 端源码 [Android IM 源码](https://downloadsdk.easemob.com/downloads/easemob-sdk-4.1.2.zip)。 环境准备: @@ -32,7 +32,7 @@ EaseCallKit 集成在环信开源 IM Demo 中,你可以通过进入 [环信 De 集成该库之前,你需要满足以下条件: -- 分别创建 [环信应用](/product/enable_and_configure_IM.html) 及 [声网应用](https://docportal.shengwang.cn/cn/video-legacy/run_demo_video_call_ios?platform=iOS#1-创建声网项目); +- 分别创建 [环信应用](/document/v2/privatization/uc_configure.html) 及 [声网应用](https://docportal.shengwang.cn/cn/video-legacy/run_demo_video_call_ios?platform=iOS#1-创建声网项目); - 已完成环信 IM 的基本功能,包括登录、好友、群组以及会话等的集成; - 上线之前开通声网 Token 验证时,用户需要实现自己的 [App Server](https://github.com/easemob/easemob-im-app-server/tree/master/agora-app-server),用于生成 Token。具体请参见 [创建 Token 服务及使用 App Server 生成 Token](https://docportal.shengwang.cn/cn/video-call-4.x/token_server_ios_ng)。 @@ -65,7 +65,7 @@ implementation 'io.hyphenate:ease-call-kit:3.8.9' #### 源码集成 -- 下载 [EaseCallKit 源码](https://github.com/easemob/easecallkitui-android); +- 下载 [EaseCallKit 源码](https://github.com/easemob/easecallkitui-android/tree/EaseCallKit_4.1.0); - 在 `build.gradle` 中增加以下内容,重新 build 你的项目即可。 ```gradle @@ -201,7 +201,7 @@ public void startInviteMultipleCall(final String[] users,final String ext){} 发起通话后的 UI 界面如下: -![img](@static/images/android/sendcall.png) + ### 被叫收到通话邀请 @@ -221,7 +221,7 @@ void onRevivedCall(EaseCallType callType, String userId,String ext){} 收到通话邀请后的界面如下: -![img](@static/images/android/called.jpeg) + ### 多人通话中邀请 diff --git a/docs/document/v2/android/easeimkit.md b/docs/document/v2/android/easeimkit.md index 572314c07..4235dd546 100644 --- a/docs/document/v2/android/easeimkit.md +++ b/docs/document/v2/android/easeimkit.md @@ -12,11 +12,11 @@ EaseIMKit 是什么? EaseIMKit 源码地址 -- [EaseIMKit](https://github.com/easemob/easeui/tree/EaseIMKit) +- [EaseIMKit](https://github.com/easemob/easeui/tree/EaseIMKit_4.1.0) 使用 EaseIMKIt 的环信 IM APP 源码地址: -- [环信 IM](https://github.com/easemob/chat-android) +- [环信 IM](https://downloadsdk.easemob.com/downloads/easemob-sdk-4.1.2.zip) ## 导入 EaseIMKit @@ -100,7 +100,8 @@ EaseIMKit 封装了常用 IM 功能,提供了会话,聊天及联系人等基 EaseIMKit 提供了 EaseConversationListFragment,需要将其或者其子类添加到 Activity 中。开发者需要对刷新事件(新消息,删除消息,删除会话等)进行处理。 -![img](@static/images/android/easeim.jpeg) + + :::notice 要实现自定义头像及昵称,请参考 [设置头像和昵称](userprofile.html#设置当前用户的属性)。 @@ -136,13 +137,13 @@ public class ChatActivity extends BaseActivity { } ``` -![img](@static/images/android/easeim1.jpeg) + ### 添加联系人界面 EaseIMKit 提供了 EaseContactListFragment,添加其及其子类到 Activity 中。开发者需要对刷新事件(添加联系人,删除联系人等)进行处理。 -![img](@static/images/android/easeim2.jpeg) + ## 设置样式 @@ -150,7 +151,7 @@ EaseIMKit 提供了 EaseContactListFragment,添加其及其子类到 Activity EaseIMKit 提供了自定义的标题栏控件 EaseTitleBar。 -![img](@static/images/android/easeim-titlebar.jpeg) + 标题栏除了做为 View 所具有的属性功能外,还可以设置标题的位置等。 @@ -215,10 +216,10 @@ conversationListLayout.hideUnreadDot(false); conversationListLayout.showUnreadDotPosition(EaseConversationSetStyle.UnreadDotPosition.LEFT); ``` -效果如下图: +效果如下图,更多样式请参考 EaseContactListLayout 控件。 + + -![img](@static/images/android/easeim3.jpeg) -更多样式请参考 EaseContactListLayout 控件。 #### 增加长按菜单项 @@ -262,7 +263,7 @@ public boolean onMenuItemClick(MenuItem item, int position) { 聊天窗口包括标题栏(不包含在 EaseChatFragment 中),聊天区,输入区及扩展展示区,如下图所示: -![img](@static/images/android/easeim4.png) + 标题区 EaseTitleBar 的具体布局及实现不在 EaseIMKit 库的聊天控件及 fragment 中,需要你自己去实现。 开发者可以在 EaseChatFragment 中获取到 EaseChatLayout 这个控件,然后通过这个控件进一步获取到获取其他控件,代码如下: @@ -295,7 +296,7 @@ messageListLayout.setBackground(new ColorDrawable(Color.parseColor("#DA5A4D"))); 效果如下图: -![img](@static/images/android/easeim5.jpeg) + #### 修改头像属性 @@ -312,7 +313,7 @@ messageListLayout.setAvatarShapeType(1); 效果如下图: -![img](@static/images/android/easeim6.jpeg) + #### 修改聊天文本 @@ -329,7 +330,7 @@ messageListLayout.setItemTextColor(ContextCompat.getColor(mContext, R.color.red) 效果如下图: -![img](@static/images/android/easeim7.jpeg) + #### 修改时间线样式 @@ -348,7 +349,7 @@ messageListLayout.setTimeTextColor(ContextCompat.getColor(mContext, R.color.blac 效果如下图: -![img](@static/images/android/easeim8.jpeg) + #### 修改聊天列表展示样式 @@ -363,7 +364,7 @@ messageListLayout.setItemShowType(EaseChatMessageListLayout.ShowType.LEFT); 效果如下图: -![img](@static/images/android/easeim9.jpeg) + #### 修改输入区样式 @@ -395,25 +396,26 @@ if(primaryMenu != null) { 效果(EaseInputMenuStyle.DISABLE_VOICE)如下图: -![img](@static/images/android/easeim10.jpeg) + + 其他样式为: 完整模式(EaseInputMenuStyle.All): -![img](@static/images/android/easeim11.jpeg) + 不可用表情模式(EaseInputMenuStyle.DISABLE_EMOJICON): -![img](@static/images/android/easeim12.jpeg) + 不可用语音和表情模式(EaseInputMenuStyle.DISABLE_VOICE_EMOJICON): -![img](@static/images/android/easeim13.jpeg) + 只有文本输入模式(EaseInputMenuStyle.ONLY_TEXT): -![img](@static/images/android/easeim14.jpeg) + #### 增加自定义消息类型及其布局 @@ -768,7 +770,7 @@ contactList.setHeaderBackGround(ContextCompat.getDrawable(mContext, R.color.whit 效果如图: -![img](@static/images/android/easeim15.jpeg) + 设置简洁模式 @@ -779,7 +781,8 @@ contactLayout.showSimple(); 效果如图: -![img](@static/images/android/easeim16.jpeg) + + #### 增加长按菜单项 diff --git a/docs/document/v2/android/group_attributes.md b/docs/document/v2/android/group_attributes.md index ec13e6e4a..58d6573e8 100644 --- a/docs/document/v2/android/group_attributes.md +++ b/docs/document/v2/android/group_attributes.md @@ -18,8 +18,7 @@ 开始前,请确保满足以下条件: - 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。 -- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 diff --git a/docs/document/v2/android/group_manage.md b/docs/document/v2/android/group_manage.md index 9e755fae8..d1cfbda1f 100644 --- a/docs/document/v2/android/group_manage.md +++ b/docs/document/v2/android/group_manage.md @@ -22,8 +22,7 @@ 开始前,请确保满足以下条件: - 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。 -- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 diff --git a/docs/document/v2/android/group_members.md b/docs/document/v2/android/group_members.md index c1bd623e5..150ace624 100644 --- a/docs/document/v2/android/group_members.md +++ b/docs/document/v2/android/group_members.md @@ -19,10 +19,9 @@ 开始前,请确保满足以下条件: -- 完成 SDK 初始化,详见 [快速开始](quickstart.html); -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html); +- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 - 了解群成员角色,详见 [群组概述](group_overview.html); -- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。 ## 实现方法 diff --git a/docs/document/v2/android/group_overview.md b/docs/document/v2/android/group_overview.md index 5bf01cb7f..f026e83a0 100644 --- a/docs/document/v2/android/group_overview.md +++ b/docs/document/v2/android/group_overview.md @@ -20,7 +20,7 @@ | 功能
| 群组 | 聊天室 | | :----------- | :----------------------------------------------------------- | :----------------------------------------------------------- | | 使用场景 | 类似于 Signal,Skype 里的群聊,所有加入的用户拥有固定的关系。 | 类似 Twitch 的直播间,成员间没有固定关系,离开即退出。 | -| 创建方式 | 所有 app 用户都可以创建群组。 | 仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 有权限创建聊天室。 | +| 创建方式 | 所有 app 用户都可以创建群组。 | 仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 有权限创建聊天室。 | | 类型 | 分为公开群和私有群,创建群组时可设置入群是否需获得群主和群管理员的同意,支持不同使用场景。 | 没有公开和私有之分,所有用户均可自由加入或退出。 | | 最大成员数 | 成员数支持取决于所选择的版本,最高版本支持 8,000 人。 | 成员数支持取决于所选择的版本,最高版本支持 10,000 人。如需提升该上限,请联系商务。 | | 离线推送消息 | 离线时,会收到推送消息。 | 离线时,不会收到推送消息;成员离线超过 2 分钟会自动退出聊天室。 | @@ -50,7 +50,7 @@ | 功能 | 描述 | | :----------------- | :----------------------------------------------------------- | -| 创建群组 | 群组分为公开群和私有群,可以对加群的方式进行设置。任何用户都可以创建群组。群组创建者为群组。群组数量和群成员数量根据套餐版本有所不同。详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。 | +| 创建群组 | 群组分为公开群和私有群,可以对加群的方式进行设置。任何用户都可以创建群组。群组创建者为群组。 | | 解散群组 | 只有群主才能解散群组。群组一旦解散,所有本地群组数据都会被删除,所有群成员都被强制退出群。 | | 获取群成员列表 | 所有群组用户都可以从服务器获取群组成员的分页列表。成员按加入群组时的时间戳降序显示。 | | 获取群组列表 | 用户可以获取公开群列表和自己创建或加入的群组列表。 | @@ -80,4 +80,4 @@ ### 群组人数限制 -群成员的数量根据不同的套餐版本而不同,免费版 100 人/群,专业版 300 人/群, 旗舰版 3,000 人/群,尊享版 8,000 人/群。 +群成员的数量可按需设置,默认群成员数:2000人/群,可支持调整至8000人/群 diff --git a/docs/document/v2/android/message_manage.md b/docs/document/v2/android/message_manage.md index aa756a7d7..a6dba84ae 100644 --- a/docs/document/v2/android/message_manage.md +++ b/docs/document/v2/android/message_manage.md @@ -32,8 +32,8 @@ 开始前,请确保满足以下条件: -- 完成 SDK 初始化并连接到服务器,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。 +- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 diff --git a/docs/document/v2/android/message_modify.md b/docs/document/v2/android/message_modify.md index 73984ffa9..6a9ac5425 100644 --- a/docs/document/v2/android/message_modify.md +++ b/docs/document/v2/android/message_modify.md @@ -9,7 +9,7 @@ 若使用该功能,需将 SDK 升级至 4.1.0 或以上版本。 ::: -你可以调用 `com.hyphenate.chat.EMChatManager#asyncModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。 +你可以调用 `com.hyphenate.chat.EMChatManager#asyncModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次。 示例代码如下: diff --git a/docs/document/v2/android/message_overview.md b/docs/document/v2/android/message_overview.md index b6672c58d..26cc14020 100644 --- a/docs/document/v2/android/message_overview.md +++ b/docs/document/v2/android/message_overview.md @@ -59,7 +59,7 @@ Web 和小程序端无本地消息存储。 环信即时通讯 IM 在消息服务器保存历史消息,方便用户在新设备上获取历史消息。 -历史消息存储时间与套餐版本相关:专业版 7 天,旗舰版 90 天, 尊享版 180 天。 +私有部署历史消息存储时间支持自定义,请在部署服务前约定存储时间。 | 功能 | 描述 | 适用的平台/框架| | :---------- | :----------- |:----------------------------------- | diff --git a/docs/document/v2/android/message_receipt.md b/docs/document/v2/android/message_receipt.md index 56038fd77..2d4edbfa9 100644 --- a/docs/document/v2/android/message_receipt.md +++ b/docs/document/v2/android/message_receipt.md @@ -4,7 +4,7 @@ 单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。 -群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。 +群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。 本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。 @@ -39,9 +39,9 @@ 开始前,请确保满足以下条件: -- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。 -- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。 +- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 + ## 实现方法 @@ -200,7 +200,7 @@ EMClient.getInstance().chatManager().addMessageListener(new EMMessageListener() 对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。 -仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。 +私有部署即时通讯服务默认支持并开通群消息已读回执功能。 1. 群主或群管理员发送消息时若需已读回执,需设置 `EMMessage` 的方法 `setIsNeedGroupAck()` 为 `YES`。 diff --git a/docs/document/v2/android/message_retrieve.md b/docs/document/v2/android/message_retrieve.md index e5ac77703..8bd255750 100644 --- a/docs/document/v2/android/message_retrieve.md +++ b/docs/document/v2/android/message_retrieve.md @@ -4,9 +4,6 @@ 环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何获取和删除服务端的会话和消息。 -:::tip -本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。 -::: ## 技术原理 @@ -23,8 +20,8 @@ 开始前,请确保满足以下条件: -- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。 +- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 @@ -159,8 +156,9 @@ EMClient.getInstance().chatManager().asyncFetchHistoryMessage( 你可以调用 `removeMessagesFromServer` 方法单向删除服务端的历史消息,每次最多可删除 50 条消息。消息删除后,该用户无法从服务端拉取到该消息。其他用户不受该操作影响。登录该账号的其他设备会收到 `EMMultiDeviceListener` 中的 `onMessageRemoved` 回调,已删除的消息自动从设备本地移除。 -:::tip -若使用该功能,需将 SDK 升级至 V3.9.8 或以上版本并联系商务开通。 + +:::notice +若使用该功能,需将 SDK 升级至 V3.9.8 或以上版本 ::: 示例代码如下: diff --git a/docs/document/v2/android/message_send_receive.md b/docs/document/v2/android/message_send_receive.md index 0b1551778..0803cd2b2 100644 --- a/docs/document/v2/android/message_send_receive.md +++ b/docs/document/v2/android/message_send_receive.md @@ -40,7 +40,7 @@ 开始前,请确保满足以下条件: - 完成 SDK 初始化,详见 [快速开始](quickstart.html)。 -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 @@ -117,7 +117,7 @@ EMClient.getInstance().chatManager().removeMessageListener(msgListener); ### 撤回消息 -发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。 +发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。 ```java try { diff --git a/docs/document/v2/android/moderation.md b/docs/document/v2/android/moderation.md index c9a7e1677..1ec745b8b 100644 --- a/docs/document/v2/android/moderation.md +++ b/docs/document/v2/android/moderation.md @@ -13,8 +13,8 @@ 开始前,请确保满足以下条件: - 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。 -- 已在 [环信即时通讯云控制台](https://console.easemob.com/user/login) 开通消息审核服务。 -- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。 +- 已在 环信即时通讯云控制台开通消息审核服务。 +- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。 ## 实现方法 diff --git a/docs/document/v2/android/multi_device.md b/docs/document/v2/android/multi_device.md index 2aaa8e140..c7b3eb1eb 100644 --- a/docs/document/v2/android/multi_device.md +++ b/docs/document/v2/android/multi_device.md @@ -11,7 +11,7 @@ 多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。 -你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量: +你可以在环信控制台的**服务管理** > **服务概览**页面的下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量: ![img](@static/images/common/multidevice_device_count.png) @@ -24,7 +24,7 @@ -单端/多端登录 | @@ -37,8 +37,8 @@设备支持自动登录时,若设备下线后自动重连时需要判断是否踢掉当前在线的最早登录设备,请联系环信商务。 | ||
多端登录 | -若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。 | +多端登录 | +若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。 即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。 |
+
+调用方法如下:
+
+emclient.createAccount("newAccount","password").then((res) => {
+ if(res.errorCode == 0)
+ console.log("createAccount success");
+ else
+ console.log("createAccount fail:" + res.description);
+ },(error) => {})
+```
+
+------
+
+## 连接监听管理
+
+通过注册回调函数,可以监听 SDK 的连接与断开状态,在用户登录成功后调用,代码如下
+
+```
+// 实例化监听模块
+var listener = new easemob.EMConnectionListener();
+// 添加到client
+emclient.addConnectionListener(listener);
+
+// 连接成功,什么都不需要做
+listener.onConnect(() => {
+console.log("EMConnectionListener onConnect");
+});
+
+// 连接断开,可能是断网或异地登录被踢,可通过error.errorCode判断,若为206,即为被踢,需要退出登录
+listener.onDisconnect((res) => {
+console.log(res.errorCode);
+console.log(res.description);
+console.log("EMConnectionListener onDisconnect");
+if(res.errorCode == 206)
+ emclient.logout();
+ console.log("你的账户已在其他地方登录");
+});
+
+// 移除监听
+emclient.removeConnectionListener(listener);
+```
+
+------
+
+## 系统配置
+
+系统配置信息模块为 EMChatConfig ,可以使用 emclient 的 getChatConfigs() 接口获取
+
+```
+let config = emclient.getChatConfigs();
+```
+
+配置信息包括日志路径,资源路径、下载路径、是否自动同意好友申请、是否自动同意组邀请、退出群组时是否删除消息等,[详见](https://github.com/easemob/sdkdemoapp_windows/blob/electron/jsdoc/out/EmChatConfigs.html)
+
+------
+
+## 私有化部署
+
+sdk 提供私有化部署中的服务器设置接口,私有化部署设置使用 api 中的 **EMChatPrivateConfigs**,可以由系统配置模块的 **privateConfigs** 接口获取,代码如下:
+
+```
+let privateconfigs = config.privateConfigs();
+```
+
+**EMChatPrivateConfigs** 使用属性配置服务器部署信息,设置及获取的方法如下:
+
+```
+privateconfigs.enableDns=false;
+privateconfigs.chatServer="192.168.1.100";
+privateconfigs.chatPort=5000;
+privateconfigs.restServer="http://192.168.1.101:5001";
+privateconfigs.resolverServer="http://192.168.1.101:5002";
+console.log(privateconfigs.enableDns);
+console.log(privateconfigs.chatServer);
+console.log(privateconfigs.chatPort);
+console.log(privateconfigs.restServer);
+console.log(privateconfigs.resolverServer);
+```
+
+------
+
+## 日志输出
+
+SDK 提供输出到日志文件的 js 接口,需要先创建 EMLog 对象,可以输出 String 和数字,代码如下:
+
+```
+// 实例化日志对象,日志按等级可分为error,warn,Debug 3级
+var log = new easemob.EMLog();
+
+// 设置日志等级,0为debug,1为warn,2为error
+log.setLogLevel(0);
+
+// 可以控制日志是否输出到控制台,默认不输出
+log.setIsDisplayOnConsole(true);
+
+//输出日志
+log.Log("Log Test");
+log.Log(5);
+log.Debug("Debug Test");
+log.Debug(5);
+log.Warn("Warn Test");
+log.Warn(5);
+log.Error("Error Test");
+log.Error(5);
+```
+
+**注:**由于 EMChatConfig 对象创建时会指定日志输出路径,日志对象的创建一般放到 EMChatConfig 创建之后。
+
+Windows 桌面端日志生成在 c:/用户/{user}/AppData/Roaming/{ProcessName}/easemob-desktop/easemobLog 路径下的`easemob.log`,{user}为操作系统用户名,{ProcessName}为进程名称,热启动时为**electron**,安装后启动时为**IM-SDK桌面端Demo**。
+
+Mac 桌面端日志生成在 /Users/{user}/Library/Application Support/{ProcessName}/easemob-desktop/easemobLog 路径下的`easemolog.log`,{user}为操作系统用户名,{ProcessName}为进程名称,热启动时为**electron**,安装后启动时为**IM-SDK桌面端Demo**。
\ No newline at end of file
diff --git a/docs/document/v2/electron/releasenote.md b/docs/document/v2/electron/releasenote.md
new file mode 100644
index 000000000..cb44c8b6e
--- /dev/null
+++ b/docs/document/v2/electron/releasenote.md
@@ -0,0 +1,59 @@
+# 桌面端SDK 更新日志
+
+## 版本 V3.8.4 2021-12-09
+
+新增
+
+- 增加支持自定义消息的收发
+
+## 版本 V3.8.0 2021-03-13
+
+修复
+
+- 去掉音视频功能
+- 修复部分Demo bug
+
+## 版本 V3.6.0 2019-07-16
+
+新增
+
+- 1v1音视频会话功能
+
+修复
+
+- 修复了上传附件token过期时,重新获取的token在重试过程中未应用的bug
+- 修复了音视频消息体中remotePath路径为空的问题
+- 修复Demo UI层的bug
+
+## 版本 V3.5.5 2019-05-09
+
+新增
+
+- sdk 新增私有化部署的接口
+
+修复
+
+- 修复 Demo 在 mac 系统某些版本(如10.12)上,存在兼容性问题,无法启动的问题
+- 修改 sdk 收到消息后 ack 确认的发送为消息存储到数据库之后,防止突然崩溃导致的消息丢失
+- 修复 Demo UI 层的部分 bug
+
+优化
+
+- 离线消息的下载存储由单条存储改为多条批量存储,提升效率
+
+## 版本:V3.5.4 2019-03-26
+
+实现功能:
+
+- 账户的登录、登出、注册。
+
+- 聊天:单聊、群聊消息收发。
+
+- 消息类型:
+
+1. 可发送:文本、emoji表情、图片、文件。
+2. 可接收:文本、emoji表情、图片、文件、位置、语音消息。
+
+- 好友管理:添加好友、删除好友。
+
+- 群管理:创建群、退出群、解散群、修改群标题、邀请加入群、搜索公开群、申请加入公开群。
\ No newline at end of file
diff --git a/docs/document/v2/electron/room_manage.md b/docs/document/v2/electron/room_manage.md
new file mode 100644
index 000000000..dc437efbd
--- /dev/null
+++ b/docs/document/v2/electron/room_manage.md
@@ -0,0 +1,106 @@
+# 聊天室管理
+
+环信桌面端 SDK 支持聊天室功能的集成,集成后可以进行如下操作:
+
+- 查询聊天室信息
+
+- 加入聊天室
+
+- 退出聊天室
+
+- 监听回调
+
+通过这些操作,可以组合帮助您完成多种场景下的 IM 需求。
+
+**注意:**聊天室只能有服务端创建,客户端只可以查询、加入和退出聊天室
+
+------
+
+## 查询聊天室信息
+
+```
+// 获取聊天室控制对象
+var chatroomManager = emclient.getChatroomManager();
+// 获取所有聊天室
+var chatroomlist = chatroomManager.fetchAllChatrooms(error);
+// 获取聊天室属性
+chatroomlist.map((chatroom) => {
+ console.log("chatroom id:"+chatroom.chatroomId());
+ console.log("chatroom chatroomSubject:"+chatroom.chatroomSubject());
+ console.log("chatroom chatroomDescription:"+chatroom.chatroomDescription());
+ console.log("chatroom owner:"+chatroom.owner());
+ console.log("chatroom chatroomMemberCount:"+chatroom.chatroomMemberCount());
+ console.log("chatroom chatroomMemberMaxCount:"+chatroom.chatroomMemberMaxCount());
+ console.log("chatroom chatroomAnnouncement:"+chatroom.chatroomAnnouncement());
+ var adminlist = chatroom.chatroomAdmins();
+ var memberlist = chatroom.chatroomMembers();
+ var banslist = chatroom.chatroomBans();
+});
+```
+
+------
+
+## 加入聊天室
+
+接口 API 说明如下:
+
+```
+/**
+ * 加入聊天室
+ * param chatroomid 聊天室 ID
+ * param error 操作结果
+ * return Promise 对象,该对象的 response 参数 EMChatroom 对象
+ */
+joinChatroom(chatroomid,error);
+```
+
+调用方法如下:
+
+```
+chatroomManager.joinChatroom(chatroomId, error).then((res)=>{},(error) => {});
+```
+
+------
+
+## 退出聊天室
+
+接口 API 说明如下:
+
+```
+/**
+ * 离开聊天室
+ * param chatroomid 聊天室 ID
+ * param error 操作结果
+ * return Promise 对象,该对象的 response 参数为空
+ */
+leaveChatroom(chatroomid,error);
+```
+
+调用方法如下:
+
+```
+chatroomManager.leaveChatroom(chatroomId, error).then((res)=>{},(error) => {});
+```
+
+------
+
+## 回调监听
+
+```
+// 添加消息回调
+var emchatroomlistener = new easemob.EMChatroomManagerListener();
+console.log(emchatroomlistener);
+
+emchatroomlistener.onMemberJoinedChatroom((chatroom,member) => {
+ console.log("onMemberJoinedChatroom" + chatroom.chatroomSubject());
+ console.log("onMemberJoinedChatroom" + member);
+});
+emchatroomlistener.onMemberLeftChatroom((chatroom,member) => {
+ console.log("onMemberLeftChatroom" + chatroom.chatroomSubject());
+ console.log("onMemberLeftChatroom" + member);
+});
+//注册监听
+chatroomManager.addListener(emchatroomlistener);
+// 移除监听
+chatroomManager.removeListener(emchatroomlistener);
+```
\ No newline at end of file
diff --git a/docs/document/v2/electron/user_relationship.md b/docs/document/v2/electron/user_relationship.md
new file mode 100644
index 000000000..3d1afc810
--- /dev/null
+++ b/docs/document/v2/electron/user_relationship.md
@@ -0,0 +1,338 @@
+# 好友管理
+
+环信桌面端 SDK 支持好友功能的集成,集成后可以进行如下操作:
+
+- 好友处理
+
+- 黑名单处理
+
+- 监听联系人变更
+
+通过这些操作,可以组合帮助您完成多种场景下的 IM 需求。
+
+好友管理模块为 EMContactManager ,由 EMClient 模块加载时主动创建,可以使用 EMClient 模块的 getContactManager 方法获取,代码如下:
+
+```
+var contactManager = emclient.getContactManager();
+```
+
+------
+
+## 好友处理
+
+好友处理包含以下处理操作:
+
+- 获取好友列表
+
+- 添加好友
+
+- 删除好友
+
+- 同意好友申请
+
+- 拒绝好友申请
+
+所有处理操作的示例下面会一一说明。
+
+------
+
+### 获取好友列表
+
+好友列表可以从**本地**和**服务器**获取,各接口说明如下:
+
+#### 从本地中获取
+
+接口 API 如下:
+
+```
+/**
+ * 获取当前缓存中的好友列表,若缓存中没有则从数据库中获取
+ * return 返回 ContactListResult
+ */
+allContacts()
+```
+
+调用方法如下:
+
+```
+let res = contactManager.allContacts();
+console.log()
+```
+
+#### 从服务器获取
+
+接口API如下:
+
+```
+/**
+ * 从服务端拉取好友列表,异步操作
+ * return 返回 Promise 对象,response 参数为 ContactListResult
+ */
+getContactsFromServer();
+```
+
+调用方法如下:
+
+```
+contactManager.getContactsFromServer().then(ContactListResult => {
+ },(error) => {});
+```
+
+------
+
+### 添加好友
+
+接口API如下:
+
+```
+/**
+ * 添加好友 api,异步操作
+ * param String,username 为对方用户名,输入参数
+ * param String,message 为欢迎信息,输入参数,对方收到好友申请时可以看到
+ * return Promise 对象,response 参数为 Result
+ */
+inviteContact(username, message);
+```
+
+调用方法如下:
+
+```
+contactManager.inviteContact("jwfan1", "welcome").then((res) => {
+ },(error) => {})
+```
+
+------
+
+### 删除好友
+
+接口API如下:
+
+```
+/**
+ * 从好友列表移除好友 api,异步操作
+ * param username 移除目标好友的用户名,输入参数
+ * param keepConversation 移除好友后,是否保留会话,输入参数,布尔型,true 为保留,false 为不保留
+ * return Promise 对象,response 参数 Result
+ */
+deleteContact(username,keepConversation);
+```
+
+调用方法如下:
+
+```
+contactManager.deleteContact("jwfan1", true).then((res) => {
+ },(error) => {})
+```
+
+------
+
+### 同意好友申请
+
+接口 API 如下:
+
+```
+/**
+ * 用户收到好友申请后的操作,同意好友申请,异步操作
+ * param username 发起好友申请的用户名,输入参数
+ * return Promise 对象,response 参数为 Result
+ */
+acceptInvitation(username);
+```
+
+调用方法如下:
+
+```
+contactManager.acceptInvitation(username).then((res) => {
+ },(error) => {})
+```
+
+------
+
+### 拒绝好友申请
+
+接口 API 如下:
+
+```
+/**
+ * 用户收到好友申请后的操作,拒绝好友申请,异步操作
+ * param username 发起好友申请的用户名,输入参数
+ * return Promise 对象,response 参数为 Result
+ */
+declineInvitation(username)
+```
+
+调用方法如下:
+
+```
+contactManager.declineInvitation(username).then((res) => {
+ },(error) => {})
+```
+
+------
+
+## 黑名单
+
+黑名单包含以下处理操作:
+
+- 获取黑名单
+
+- 设置黑名单
+
+- 移入黑名单
+
+- 从黑名单移除
+
+所有处理操作的示例下面会一一说明。
+
+------
+
+### 获取黑名单
+
+黑名单列表可以从**本地**和**服务器**获取,各接口说明如下:
+
+#### 从本地中获取
+
+接口 API 如下:
+
+```
+/**
+ * 从本地获取用户的黑名单列表,黑名单的用户无法发送消息
+ * return ContactListResult 黑名单列表,data 为 String 数组
+ */
+blacklist();
+```
+
+调用方法如下:
+
+```
+let res = contactManager.blacklist()
+```
+
+#### 从服务器获取
+
+接口 API 如下:
+
+```
+/**
+ * 从服务器获取用户的黑名单列表,黑名单的用户无法发送消息
+ * return Promise 对象,response 参数为 ContactListResult
+ */
+getBlackListFromServer();
+```
+
+调用方法如下:
+
+```
+contactManager.getBlackListFromServer().then((res) => {},(error) => {})
+```
+
+------
+
+### 设置黑名单
+
+接口 API 如下:
+
+```
+/**
+ * 设置用户的黑名单列表,异步操作
+ * param blacklist 输入参数,黑名单列表,StringArray,["ID1","ID2"]
+ * return Promise 对象,response 参数为 Result
+ */
+saveBlackList(blacklist);
+```
+
+调用方法如下:
+
+```
+contactManager.saveBlackList(['jwfan2', 'jwfan3']).then((res)=>{},(error) => {});
+```
+
+### 移入黑名单
+
+接口 API 如下:
+
+```
+/**
+ * 添加用户到黑名单列表,异步操作
+ * param username 输入参数,要添加的黑名单用户名,String
+ * return Promise 对象,response 参数为 Result
+ */
+addToBlackList(username);
+```
+
+调用方法如下:
+
+```
+contactManager.addToBlackList('jwfan2').then((res)=>{},(error) => {});
+```
+
+------
+
+### 从黑名单移除
+
+接口 API 如下:
+
+```
+/**
+ * 从黑名单列表移除用户,异步操作
+ * param username 输入参数,要从黑名单移除的用户名,String
+ * return Promise 对象,response 参数为 Result
+ */
+removeFromBlackList(username);
+```
+
+调用方法如下:
+
+```
+contactManager.removeFromBlackList('jwfan2').then((res)=>{},(error) => {});
+```
+
+------
+
+## 监听联系人变更
+
+通过注册回调函数,监听联系人的变动,代码如下:
+
+```
+// 实例化监听对象
+var listener = new easemob.EMContactListener();
+
+// 有好友添加的回调
+listener.onContactAdded((username) => {
+console.log("onContactAdded username: " + username);
+});
+
+// 有好友删除的回调
+listener.onContactDeleted((username) => {
+console.log("onContactDeleted username: " + username);
+});
+
+// 收到好友申请的回调,用户可以在这里同意或拒绝好友申请
+listener.onContactInvited((username, reason) => {
+console.log("onContactInvited username: " + username + " reason: " + reason);
+if (username == "jwfan1") {
+ let res = contactManager.acceptInvitation(username);
+} else {
+ let res = contactManager.declineInvitation(username);
+}
+});
+
+// 群组邀请成员同意
+listener.onContactAgreed((username) => {
+console.log("onContactAgreed username: " + username);
+});
+
+// 群组邀请成员拒绝
+listener.onContactRefused((username) => {
+console.log("onContactRefused username: " + username);
+});
+
+// 注册回调函数
+contactManager.registerContactListener(listener);
+
+
+===== 结束联系人监听 =====
+
+// 移除回调监听
+contactManager.removeContactListener(listener);
+```
\ No newline at end of file
diff --git a/docs/document/v2/flutter/error.md b/docs/document/v2/flutter/error.md
index 7d126aa90..1587434c3 100644
--- a/docs/document/v2/flutter/error.md
+++ b/docs/document/v2/flutter/error.md
@@ -2,6 +2,6 @@
-[Android 平台设备请参见:](/document/android/error.html)
+[Android 平台设备请参见:](/document/v2/android/error.html)
-[iOS 平台设备请参见:](/document/ios/error.html)
\ No newline at end of file
+[iOS 平台设备请参见:](/document/v2/ios/error.html)
\ No newline at end of file
diff --git a/docs/document/v2/flutter/group_attributes.md b/docs/document/v2/flutter/group_attributes.md
index ddc42fbfb..6e0f2f80d 100644
--- a/docs/document/v2/flutter/group_attributes.md
+++ b/docs/document/v2/flutter/group_attributes.md
@@ -18,8 +18,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/flutter/group_manage.md b/docs/document/v2/flutter/group_manage.md
index 3cbf8b2c3..f0dd7852e 100644
--- a/docs/document/v2/flutter/group_manage.md
+++ b/docs/document/v2/flutter/group_manage.md
@@ -23,8 +23,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
## 实现方法
diff --git a/docs/document/v2/flutter/group_members.md b/docs/document/v2/flutter/group_members.md
index ed7794d33..087ac4b0c 100644
--- a/docs/document/v2/flutter/group_members.md
+++ b/docs/document/v2/flutter/group_members.md
@@ -21,9 +21,9 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
- 了解群成员角色,详见 [群组概述](group_overview.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+
## 实现方法
diff --git a/docs/document/v2/flutter/message_manage.md b/docs/document/v2/flutter/message_manage.md
index 359609ec9..66958343c 100644
--- a/docs/document/v2/flutter/message_manage.md
+++ b/docs/document/v2/flutter/message_manage.md
@@ -31,7 +31,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/flutter/message_modify.md b/docs/document/v2/flutter/message_modify.md
index 8d18da44e..8ed38f336 100644
--- a/docs/document/v2/flutter/message_modify.md
+++ b/docs/document/v2/flutter/message_modify.md
@@ -9,7 +9,7 @@
若使用该功能,需将 SDK 升级至 4.1.0 或以上版本。
:::
-你可以调用 `EMChatManager#modifyMessage` 方法修改已经发送成功的消息, 目前只支持文本消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。
+你可以调用 `EMChatManager#modifyMessage` 方法修改已经发送成功的消息, 目前只支持文本消息。一条消息默认最多可修改 10 次。
示例代码如下:
diff --git a/docs/document/v2/flutter/message_receipt.md b/docs/document/v2/flutter/message_receipt.md
index fb146886b..0b247dfb5 100644
--- a/docs/document/v2/flutter/message_receipt.md
+++ b/docs/document/v2/flutter/message_receipt.md
@@ -4,7 +4,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -36,8 +36,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
@@ -157,7 +157,7 @@ try {
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 消息发送方需要知道群组消息是否已读,需要监听 `onGroupMessageRead` 事件。
diff --git a/docs/document/v2/flutter/message_retrieve.md b/docs/document/v2/flutter/message_retrieve.md
index 80a60ba28..2b44d2a2d 100644
--- a/docs/document/v2/flutter/message_retrieve.md
+++ b/docs/document/v2/flutter/message_retrieve.md
@@ -4,9 +4,7 @@
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何从消息服务器获取会话和消息。
-:::tip
-本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-:::
+
## 技术原理
@@ -24,7 +22,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -147,7 +145,7 @@ try {
你可以调用 `deleteRemoteMessagesBefore` 和 `deleteRemoteMessagesWithIds` 方法单向删除服务端的历史消息,每次最多可删除 50 条消息。消息删除后,该用户无法从服务端拉取到该消息。其他用户不受该操作影响。已删除的消息自动从设备本地移除。
:::tip
-若使用该功能,需将 SDK 升级至 V4.0.0 或以上版本并联系商务。
+若使用该功能,需将 SDK 升级至 V4.0.0 或以上版本。
:::
```dart
diff --git a/docs/document/v2/flutter/message_send_receive.md b/docs/document/v2/flutter/message_send_receive.md
index b4eafcdf1..1c3b1a233 100644
--- a/docs/document/v2/flutter/message_send_receive.md
+++ b/docs/document/v2/flutter/message_send_receive.md
@@ -38,7 +38,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -153,7 +153,8 @@ class _ChatMessagesPageState extends State {
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
+
```dart
try {
await EMClient.getInstance.chatManager.recallMessage(msgId);
diff --git a/docs/document/v2/flutter/moderation.md b/docs/document/v2/flutter/moderation.md
index 8b9d6d4dc..5e1ec2afe 100644
--- a/docs/document/v2/flutter/moderation.md
+++ b/docs/document/v2/flutter/moderation.md
@@ -14,7 +14,7 @@
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
- 开通消息审核服务,详见管理后台。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/flutter/multi_device.md b/docs/document/v2/flutter/multi_device.md
index 8b4c9d51a..84a57c488 100644
--- a/docs/document/v2/flutter/multi_device.md
+++ b/docs/document/v2/flutter/multi_device.md
@@ -11,7 +11,8 @@
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+你可以在环信控制台的**服务管理** > **服务概览**页面的下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+
![img](@static/images/common/multidevice_device_count.png)
@@ -24,7 +25,7 @@
-
+
单端/多端登录
@@ -38,7 +39,7 @@
多端登录
- 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
+ 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。
即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
@@ -128,7 +129,7 @@ EMClient.getInstance.addConnectionEventHandler(
你可以按照以下步骤设置登录设备所属的平台:
-1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+1. 在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
diff --git a/docs/document/v2/flutter/overview.md b/docs/document/v2/flutter/overview.md
index 56ce90ad9..6af6c4fdc 100644
--- a/docs/document/v2/flutter/overview.md
+++ b/docs/document/v2/flutter/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -40,7 +40,7 @@ try {
:::notice
- 以上注册模式为在客户端注册,主要用于测试,简单方便,但不推荐在正式环境中使用;
-- 正式环境应[调用 REST API 接口注册用户](/document/server-side/account_system.html#注册用户)。
+- 正式环境应[调用 REST API 接口注册用户](/document/v2/server-side/account_system.html#注册用户)。
:::
## 用户登录
@@ -50,7 +50,7 @@ try {
- 用户 ID + 密码
- 用户 ID + token
-手动登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+手动登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
调用登录接口后,收到 `onConnected` 回调表明 SDK 与环信服务器连接成功。
@@ -64,7 +64,7 @@ try {
} on EMError catch (e) {}
```
-**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取。 详见 [环信用户 token 的获取](/document/server-side/easemob_user_token.html)。
+**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取。 详见 [环信用户 token 的获取](/document/v2/server-side/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。
diff --git a/docs/document/v2/flutter/presence.md b/docs/document/v2/flutter/presence.md
index 906b1103f..0ceb7ee9b 100644
--- a/docs/document/v2/flutter/presence.md
+++ b/docs/document/v2/flutter/presence.md
@@ -6,9 +6,6 @@
本文介绍如何在即时通讯应用中发布、订阅和查询用户的在线状态。
-:::notice
-私有化版本不支持在线状态订阅。
-:::
## 技术原理
@@ -40,8 +37,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `1.0.5 以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/flutter/quickstart.md b/docs/document/v2/flutter/quickstart.md
index 7eb201aeb..f0c186cff 100644
--- a/docs/document/v2/flutter/quickstart.md
+++ b/docs/document/v2/flutter/quickstart.md
@@ -31,7 +31,7 @@
配置开发或者运行环境如果遇到问题,请参考 [这里](https://docs.flutter.dev/get-started/install)。
-- 有效的环信即时通讯 IM 开发者账号和 App Key,详见 [环信即时通讯云控制台](https://console.easemob.com/user/login)。
+- 有效的环信即时通讯 IM 开发者账号和 App Key,详见 [环信即时通讯云控制台](/document/v2/privatization/uc_configure.html)。
## 项目设置
@@ -259,7 +259,7 @@ void _initSDK() async {
### 注册环信 IM 用户
-Demo 中使用 [开放注册](/server-side/account_system.html#开放注册单个用户),此操作需要在环信后台开启 `开放注册`。在开放注册模式下,允许通过 App 客户端直接注册环信用户,正式环境中请使用 [授权注册](server-side/account_system.html#授权注册单个用户)。
+Demo 中使用 [开放注册](/document/v2/server-side/account_system.html#开放注册单个用户),此操作需要在环信后台开启 `开放注册`。在开放注册模式下,允许通过 App 客户端直接注册环信用户,正式环境中请使用 [授权注册](/document/v2/server-side/account_system.html#授权注册单个用户)。
在 `_signUp` 方法中添加注册代码:
@@ -457,19 +457,19 @@ flutter run
运行结果如下:
-
+
参考以下步骤发送和接收文本消息:
1. 输入任意用户名(如 `flutter001` 和 `flutter002`)和密码 `1`,点击 `SIGN UP` 创建用户;
2. 以 `flutter001` 身份登录 Demo,将 `Enter the username you want to send` 输如为 `flutter002`, 发送文本消息;
-
+
3. 以 `flutter002` 身份登录 Demo,查看 Log 信息确认是否都到消息。
-
+
## 后续步骤
-为保障通信安全,在正式生产环境中,你需要在自己的 app 服务端生成 Token。详见[使用 App Token 鉴权](/product/easemob_app_token.html)。
\ No newline at end of file
+为保障通信安全,在正式生产环境中,你需要在自己的 app 服务端生成 Token。详见[使用 App Token 鉴权](/document/v2/server-side/easemob_app_token.html)。
\ No newline at end of file
diff --git a/docs/document/v2/flutter/reaction.md b/docs/document/v2/flutter/reaction.md
index 7e1be8e9a..4c94963b0 100644
--- a/docs/document/v2/flutter/reaction.md
+++ b/docs/document/v2/flutter/reaction.md
@@ -6,7 +6,6 @@
:::notice
1. 目前 Reaction 仅适用于单聊和群组。聊天室暂不支持 Reaction 功能。
-2. 私有化版本不支持 Reaction 功能。
:::
## 技术原理
@@ -29,8 +28,8 @@ Reaction 场景示例如下:
开始前,请确保满足以下条件:
1. 完成 `1.0.5 以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/flutter/room_attributes.md b/docs/document/v2/flutter/room_attributes.md
index 1f217c88d..7f3954475 100644
--- a/docs/document/v2/flutter/room_attributes.md
+++ b/docs/document/v2/flutter/room_attributes.md
@@ -20,8 +20,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/flutter/room_manage.md b/docs/document/v2/flutter/room_manage.md
index 4a13320d4..9944ef2cc 100644
--- a/docs/document/v2/flutter/room_manage.md
+++ b/docs/document/v2/flutter/room_manage.md
@@ -25,9 +25,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 不同版本的聊天室相关数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
-- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/server-side/chatroom.html#添加超级管理员)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/v2/server-side/chatroom.html#添加超级管理员)。
- 聊天室创建者和管理员的数量之和不能超过 100,即管理员最多可添加 99 个。
## 实现方法
@@ -36,9 +35,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `EMChatRoomManager#createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `EMChatRoomManager#createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/flutter/room_members.md b/docs/document/v2/flutter/room_members.md
index 2d9967893..3697407e4 100644
--- a/docs/document/v2/flutter/room_members.md
+++ b/docs/document/v2/flutter/room_members.md
@@ -21,8 +21,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 聊天室相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/flutter/thread.md b/docs/document/v2/flutter/thread.md
index 576c97f7d..868298543 100644
--- a/docs/document/v2/flutter/thread.md
+++ b/docs/document/v2/flutter/thread.md
@@ -6,9 +6,6 @@
本文介绍如何使用环信即时通讯 IM Flutter SDK 在实时互动 app 中创建和管理子区,并实现子区相关功能。
-:::notice
-私有化版本不支持子区功能。
-:::
## 技术原理
@@ -29,9 +26,8 @@
开始前,请确保满足以下条件:
- 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/flutter/thread_message.md b/docs/document/v2/flutter/thread_message.md
index 758032fec..24910c369 100644
--- a/docs/document/v2/flutter/thread_message.md
+++ b/docs/document/v2/flutter/thread_message.md
@@ -32,8 +32,8 @@
开始前,请确保满足以下条件:
- 已集成 `1.0.5 或版本` SDK 的基本功能,完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/flutter/user_relationship.md b/docs/document/v2/flutter/user_relationship.md
index 1bbde6e24..5b4026774 100644
--- a/docs/document/v2/flutter/user_relationship.md
+++ b/docs/document/v2/flutter/user_relationship.md
@@ -30,7 +30,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/flutter/userprofile.md b/docs/document/v2/flutter/userprofile.md
index 8f5ba095f..3591965de 100644
--- a/docs/document/v2/flutter/userprofile.md
+++ b/docs/document/v2/flutter/userprofile.md
@@ -25,7 +25,7 @@
设置用户属性前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -45,7 +45,7 @@ try {
}
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 描述 |
| :---------- | :----- | :----------------------------------------------------------- |
diff --git a/docs/document/v2/ios/demo.md b/docs/document/v2/ios/demo.md
index 7675a32b3..8a483dc0c 100644
--- a/docs/document/v2/ios/demo.md
+++ b/docs/document/v2/ios/demo.md
@@ -2,7 +2,7 @@
-环信即时通讯 IM iOS 端提供示例应用可供体验。
+
## 代码下载
您可以通过以下两种方式获取到源代码:
-- 下载代码压缩包:[IM SDK 及 Demo 下载](https://www.easemob.com/download/im)
-- 下载源代码:[github 源码地址](https://github.com/easemob/chat-ios)
+- 下载代码压缩包:[IM SDK 及 Demo 下载](https://downloadsdk.easemob.com/downloads/iOS_IM_SDK_V4.1.1.zip)
+
欢迎大家提交 PR 改进和修复 EaseIM 和 EaseIMKit 中的问题。
## 运行 EaseIM 工程
-从 [IM SDK 及 Demo 下载](https://www.easemob.com/download/im) 下载 iOS SDK 压缩包,然后解压。解压后在 `EaseIM` 文件夹下,即为 EaseIM 的工程目录。
+下载 iOS SDK 压缩包,然后解压。解压后在 `EaseIM` 文件夹下,即为 EaseIM 的工程目录。
终端 cd 到 EaseIM 的 `podfile` 目录下,终端执行 `pod install` 命令,等待下载完所有的 pod 依赖库,即可打开 `EaseIM.xcworkspace`,运行 EaseIM demo 进行自定义再次开发。
@@ -67,6 +68,6 @@ Demo 中有几大 UI 功能模块,在集成时将对应的模块添加到工
## 部分 UI 展示
-![联系人列表](@static/images/android/app-demo-ui-2.jpeg)
-![聊天页面](@static/images/android/app-demo-ui-3.jpeg)
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/docs/document/v2/ios/easecallkit.md b/docs/document/v2/ios/easecallkit.md
index f106f5d30..9b6f63c3b 100644
--- a/docs/document/v2/ios/easecallkit.md
+++ b/docs/document/v2/ios/easecallkit.md
@@ -8,7 +8,7 @@
使用 `EaseCallKit` 库可以快速实现常用的音视频场景,通过信令的交互确认,保证 **用户多端登录时,收到呼叫同时振铃,一端处理后,其他端自动停止**。
-`EaseCallKit` 库在 Github 上进行了保存,请参见 [EaseCallKit iOS 端使用指南](https://github.com/easemob/easecallkitui-ios)。
+`EaseCallKit` 库在 Github 上进行了保存,请参见 [EaseCallKit iOS 端使用指南](https://github.com/easemob/easecallkitui-ios/tree/4.0.0)。
**`EaseCallKit` 在通话过程中,使用环信 ID 加入频道,方便音视频视图中显示用户名。如果用户不使用 `EaseCallKit` 而直接调用声网 API,也可以直接使用数字 UID 加入频道。**
@@ -18,7 +18,7 @@
## 跑通 Demo
-`EaseCallKit` 集成在环信提供的开源 IM Demo 中,你可以通过进入 [环信 IM Demo 下载页面](https://www.easemob.com/download/im),选择 iOS 端 Demo 下载,或直接进入 [Github 开源网站](https://github.com/easemob/chat-ios) 下载。
+EaseCallKit 集成在环信开源 IM Demo 中,你可以直接下载 iOS 端Demo下载 [iOS IM源码](https://downloadsdk.easemob.com/downloads/iOS_IM_SDK_V4.1.1.zip) 。
- 安装 SDK 与 `EaseCallKit`
@@ -40,7 +40,7 @@ pod install
在集成该库前,你需要满足以下条件:
-- 分别创建 [环信应用](/product/enable_and_configure_IM.html) 及 [声网应用](https://docportal.shengwang.cn/cn/video-legacy/run_demo_video_call_ios?platform=iOS#1-创建声网项目);
+- 分别创建 [环信应用](/document/v2/privatization/uc_configure.html) 及 [声网应用](https://docportal.shengwang.cn/cn/video-legacy/run_demo_video_call_ios?platform=iOS#1-创建声网项目);
- 已完成环信 IM 的基本功能,包括登录、好友、群组以及会话等的集成;
- 上线之前开通声网 token 验证时,用户需要实现自己的 [App Server](https://github.com/easemob/easemob-im-app-server/tree/master/agora-app-server),用于生成 token。利用 App Server 生成 token 的过程参见 [声网 token](https://docportal.shengwang.cn/cn/video-call-4.x/token_server_ios_ng?platform=iOS)。
@@ -163,13 +163,13 @@ config.agoraAppId=@"声网 AppID";
发起通话后的 UI 界面如下:
-
+
### 收到邀请
主叫方调用邀请接口后,如果被叫方在线且并未处于通话过程中,将弹出通话页面,被叫用户可选择接听或者拒绝。通话页面如下:
-
+
被叫振铃的同时,会触发以下回调:
diff --git a/docs/document/v2/ios/easeimkit.md b/docs/document/v2/ios/easeimkit.md
index b3e5e2317..6f87eb206 100644
--- a/docs/document/v2/ios/easeimkit.md
+++ b/docs/document/v2/ios/easeimkit.md
@@ -12,11 +12,11 @@ EaseIMKit 是基于环信 IM SDK 的一款 UI 组件库,它提供了一些通
EaseIMKit 源码地址
-- [EaseIMKit 工程](https://github.com/easemob/easeui_ios/tree/EaseIMKit)
+- [EaseIMKit 工程](https://github.com/easemob/easeui_ios/tree/EaseIMKit_4.1.0)
使用 EaseIMKit 环信 IM App 地址:
-- [环信 IM](https://github.com/easemob/chat-ios)
+- [环信 IM](https://downloadsdk.easemob.com/downloads/iOS_IM_SDK_V4.1.1.zip)
## 导入
@@ -43,9 +43,13 @@ EaseIMKit 中包含了拍照,发语音,发图片,发视频,发位置,
### 源码集成
+
+[下载IM源码](https://downloadsdk.easemob.com/downloads/iOS_IM_SDK_V4.1.1.zip)
+
- 创建 `Podfile` 文件并添加 EaseIMKit 源码依赖
@@ -75,7 +79,7 @@ EaseIMKit 中包含了拍照,发语音,发图片,发视频,发位置,
1. 终端 cd 到 Podfile 文件所在目录,执行 pod install 命令在项目中安装 EaseIMKit 本地源码
2. 执行完成后,则在 Xcode 项目目录 Pods/Development Pods/ 可找到 EaseIMKit 源码,如下图所示:
- ![img](@static/images/ios/easeimkit3.png)
+
3. 可对源码进行符合自己项目目标的自定义修改
@@ -334,19 +338,21 @@ typedef enum {
聊天页背景色,输入区颜色配置示例:
-![背景色,输入区颜色](@static/images/ios/easeimkit4.png)
+
聊天会话输入区类型参数配置示例:
-![全部功能,语音不可用,表情不可用,语音和表情不可用,纯文本](@static/images/ios/easeimkit5.png)
+
+
输入区扩展功能参数配置示例:
-![输入区扩展](@static/images/ios/easeimkit6.jpeg)
+
聊天会话群聊消息同左排列,时间线背景色,时间字体颜色配置示例:
-![群聊消息同左排列,时间线背景色,时间字体颜色](@static/images/ios/easeimkit7.jpeg)
+
+
### 会话列表样式配置
@@ -417,7 +423,7 @@ typedef enum {
通讯录添加头部功能区:新的好友,群聊,聊天室示意图:
-![头部功能区:新的好友,群聊,聊天室以及联系人列表](@static/images/ios/easeimkit8.png)
+
## 自定义功能扩展
@@ -476,7 +482,7 @@ EaseChatViewControllerDelegate
通过自定义 cell 展示单聊音视频通话记录的效果图:
-![自定义 cell 展示单聊音视频通话记录](@static/images/ios/easeimkit9.png)
+
#### 选中消息的回调
diff --git a/docs/document/v2/ios/group_attributes.md b/docs/document/v2/ios/group_attributes.md
index e064d5b71..8fefd08e3 100644
--- a/docs/document/v2/ios/group_attributes.md
+++ b/docs/document/v2/ios/group_attributes.md
@@ -18,8 +18,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/ios/group_manage.md b/docs/document/v2/ios/group_manage.md
index 8d5573aba..c8380a14e 100644
--- a/docs/document/v2/ios/group_manage.md
+++ b/docs/document/v2/ios/group_manage.md
@@ -22,8 +22,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/ios/group_members.md b/docs/document/v2/ios/group_members.md
index 781231138..60eae8177 100644
--- a/docs/document/v2/ios/group_members.md
+++ b/docs/document/v2/ios/group_members.md
@@ -20,9 +20,9 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
- 了解群成员角色,详见 [群组功能介绍](group_overview.html)。
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+
## 实现方法
diff --git a/docs/document/v2/ios/message_manage.md b/docs/document/v2/ios/message_manage.md
index c613b71c2..0d1012f45 100644
--- a/docs/document/v2/ios/message_manage.md
+++ b/docs/document/v2/ios/message_manage.md
@@ -32,7 +32,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/ios/message_modify.md b/docs/document/v2/ios/message_modify.md
index b4e2b01c1..7f40a7943 100644
--- a/docs/document/v2/ios/message_modify.md
+++ b/docs/document/v2/ios/message_modify.md
@@ -9,7 +9,7 @@
若使用该功能,需将 SDK 升级至 4.1.0 或以上版本。
:::
-你可以调用 `EMChatManager::modifyMessage:body:completion:` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。
+你可以调用 `EMChatManager::modifyMessage:body:completion:` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次。
消息修改后,消息的接收方会收到 `EMChatManagerDelegate#onMessageContentChanged:operatorId:operationTime` 事件,该事件中会携带修改后的消息对象、最新一次修改消息的用户以及消息的最新修改时间。对于群聊会话,除了修改消息的用户,群组内的其他成员均会收到该事件。
diff --git a/docs/document/v2/ios/message_receipt.md b/docs/document/v2/ios/message_receipt.md
index a04dea65a..adedefa3e 100644
--- a/docs/document/v2/ios/message_receipt.md
+++ b/docs/document/v2/ios/message_receipt.md
@@ -4,7 +4,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -40,8 +40,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
@@ -189,7 +189,7 @@ EMChatManagerDelegate
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 群主或群管理员设置 `EMChatMessage` 的属性 `isNeedGroupAck` 为 `YES`。
diff --git a/docs/document/v2/ios/message_retrieve.md b/docs/document/v2/ios/message_retrieve.md
index 45adf99d3..50e50ab81 100644
--- a/docs/document/v2/ios/message_retrieve.md
+++ b/docs/document/v2/ios/message_retrieve.md
@@ -4,9 +4,7 @@
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何获取和删除服务端的会话和消息。
-:::tip
-本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-:::
+
## 技术原理
@@ -24,7 +22,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -105,8 +103,8 @@ NSString *cursor = @"";
你可以调用 `removeMessagesFromServerWithTimeStamp` 或 `removeMessagesFromServerMessageIds` 方法按消息时间或消息 ID 单向删除服务端的历史消息。每次最多可删除 50 条消息。消息删除后,该用户无法从服务端拉取到该消息。其他用户不受该操作影响。登录该账号的其他设备会收到 `EMMultiDevicesDelegate` 中的 `multiDevicesMessageBeRemoved` 回调,已删除的消息自动从设备本地移除。
-:::tip
-若使用该功能,需将 SDK 升级至 V3.9.8 或以上版本并联系商务开通。
+:::notice
+若使用该功能,需将 SDK 升级至 V3.9.8 或以上版本。
:::
示例代码如下:
diff --git a/docs/document/v2/ios/message_send_receive.md b/docs/document/v2/ios/message_send_receive.md
index 8485f4305..0c563597d 100644
--- a/docs/document/v2/ios/message_send_receive.md
+++ b/docs/document/v2/ios/message_send_receive.md
@@ -38,7 +38,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -112,7 +112,7 @@ message.priority = EMChatRoomMessagePriorityHigh;
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
```objectivec
// 异步方法
diff --git a/docs/document/v2/ios/multi_device.md b/docs/document/v2/ios/multi_device.md
index cc1f13e5b..aff8a5a5f 100644
--- a/docs/document/v2/ios/multi_device.md
+++ b/docs/document/v2/ios/multi_device.md
@@ -11,7 +11,7 @@
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
![img](@static/images/common/multidevice_device_count.png)
@@ -24,7 +24,7 @@
-
+
单端/多端登录
@@ -121,7 +121,7 @@ option.customDeviceName = @"XXX的iPad";
你可以按照以下步骤设置登录设备所属的平台:
-1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击**新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+1. 在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击**新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
diff --git a/docs/document/v2/ios/overview.md b/docs/document/v2/ios/overview.md
index b2e072a95..6e10038e3 100644
--- a/docs/document/v2/ios/overview.md
+++ b/docs/document/v2/ios/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号并获得 App key,详见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号并获得 App key,详见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -41,7 +41,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"];
:::notice
- 以上注册模式为在客户端注册,旨在方便测试,并不推荐在正式环境中使用;
-- 正式环境应使用服务器端调用 REST API 接口 [注册用户](/document/server-side/account_system.html#注册用户)。
+- 正式环境应使用服务器端调用 REST API 接口 [注册用户](/document/v2/server-side/account_system.html#注册用户)。
:::
## 用户登录
@@ -53,7 +53,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"];
### 手动登录
-登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
手动登录后,收到 `connectionStateDidChange` 回调表明 SDK 与环信服务器连接成功。
@@ -70,7 +70,7 @@ EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"];
```
-**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/server-side/easemob_user_token.html)。
+**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/v2/server-side/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如每次登录时更新 token 等机制。
@@ -190,7 +190,7 @@ option.logLevel = EMLogLevelDebug;
### 获取本地日志
-SDK 会写入日志文件到本地。日志文件路径如下:沙箱 Library/Application Support/HyphenateSDK/easemobLog/easemob.log。
+SDK 会写入日志文件到本地。日志文件路径如下:
沙箱 Library/Application Support/HyphenateSDK/easemobLog/easemob.log。
以真机为例,获取本地日志过程如下:
diff --git a/docs/document/v2/ios/presence.md b/docs/document/v2/ios/presence.md
index d552061ae..39e8db4ed 100644
--- a/docs/document/v2/ios/presence.md
+++ b/docs/document/v2/ios/presence.md
@@ -35,8 +35,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `3.9.1 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/ios/push.md b/docs/document/v2/ios/push.md
index 06d09e556..8bfacdd52 100644
--- a/docs/document/v2/ios/push.md
+++ b/docs/document/v2/ios/push.md
@@ -184,7 +184,7 @@ DeviceToken 注册后,iOS 系统会通过以下方式将 DeviceToken 回调给
- 设置推送通知,包含设置推送通知方式和免打扰模式。
- 配置推送翻译和推送模板。
-其中,设置推送通知方式、免打扰模式和推送模板为推送的高级功能,使用前需要在[环信即时通讯云控制后台](https://console.easemob.com/user/login)上开通。
+其中,设置推送通知方式、免打扰模式和推送模板为推送的高级功能,使用前需要在环信即时通讯云控制后台上开通。
![image](@static/images/ios/push/push_ios_27_enable_push.png)
@@ -449,7 +449,7 @@ NSArray *conversations = @[conversation1,conversation2];
#### 4.3 设置推送翻译
-如果用户启用 [自动翻译](message_translation.html) 功能并发送消息,SDK 会同时发送原始消息和翻译后的消息。
+如果用户启用 自动翻译 功能并发送消息,SDK 会同时发送原始消息和翻译后的消息。
推送通知与翻译功能协同工作。作为接收方,你可以设置你在离线时希望接收的推送通知的首选语言。如果翻译消息的语言符合你的设置,则翻译消息显示在推送通知中;否则,将显示原始消息。
diff --git a/docs/document/v2/ios/quickstart.md b/docs/document/v2/ios/quickstart.md
index 0964ab6e9..4e48e8330 100644
--- a/docs/document/v2/ios/quickstart.md
+++ b/docs/document/v2/ios/quickstart.md
@@ -15,7 +15,7 @@
- Xcode (推荐最新版本)。
- 安装 iOS 10.0 或更高版本的 iOS 模拟器或 Apple 设备。
- CocoaPods [1.10.1 或更高版本](https://cocoapods.org/)。
-- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
- 如果你的网络环境部署了防火墙,请联系环信技术支持设置白名单。
## 1. 准备开发环境
diff --git a/docs/document/v2/ios/reaction.md b/docs/document/v2/ios/reaction.md
index 9004c5168..0b40c80e8 100644
--- a/docs/document/v2/ios/reaction.md
+++ b/docs/document/v2/ios/reaction.md
@@ -6,7 +6,6 @@
:::notice
1. 目前 Reaction 仅适用于单聊和群组。聊天室暂不支持 Reaction 功能。
-2. 私有化版本不支持 Reaction 功能。
:::
## 技术原理
@@ -30,8 +29,8 @@ Reaction 场景示例如下:
开始前,请确保满足以下条件:
1. 完成 `HyphenateChat 3.9.2.1 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/ios/releasenote.md b/docs/document/v2/ios/releasenote.md
index e6f624172..e0161c9e5 100644
--- a/docs/document/v2/ios/releasenote.md
+++ b/docs/document/v2/ios/releasenote.md
@@ -227,7 +227,6 @@
### 新增特性:
- [IM SDK] 新增 [消息 Reaction](reaction.html) 功能,可以对消息进行不同的响应。
-- [IM SDK] 新增 [举报 API](moderation.html) 用于内容审核。
### 优化:
@@ -260,7 +259,6 @@
### 新增特性:
- [IM SDK] [用户在线状态 (Presence) 订阅](presence.html)功能。
-- [IM SDK] [翻译](message_translation.html)功能更新,增加自动翻译接口。实现用户按需翻译和发消息自动翻译。
### 优化:
@@ -275,7 +273,7 @@
- [IM SDK] [单向删除服务端会话 API](https://sdkdocs.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_chat_manager-p.html#a4ac87045ad781e99c59acc271f9af433);
- [IM SDK] 免打扰事件的多设备间同步;
-- [IM SDK] Push 平台推送支持扩展字段获取、后续动作、角标设置、透传消息等功能,具体见:[iOS 推送集成](https://docs-im.easemob.com/push/apppush/iossdk);
+- [IM SDK] Push 平台推送支持扩展字段获取、后续动作、角标设置、透传消息等功能,具体见:[iOS 推送集成](/push/push_integration_note_ios.html);
- [IM SDK] 发送图片支持 PNG 格式;
- [IM SDK] 非好友不能发送消息错误码 [221 EMErrorUserNotOnRoster];
@@ -917,7 +915,7 @@ IM_DEMO 修改:
新功能:
-- 实现不同模式的实时语音会议功能 [多人音视频会议](https://docs-im.easemob.com/im/ios/basics/multiuserconference)
+- 实现不同模式的实时语音会议功能 [多人音视频会议](/private/media/conference_ios.html)
- 添加动态更换对方实时视频显示页面的功能[IEMConferenceManager updateConference:streamId:remoteVideoView:completion:]
## 版本 V3.3.9 2018-02-11
diff --git a/docs/document/v2/ios/room_attributes.md b/docs/document/v2/ios/room_attributes.md
index ac023fd45..e9e08a56e 100644
--- a/docs/document/v2/ios/room_attributes.md
+++ b/docs/document/v2/ios/room_attributes.md
@@ -20,8 +20,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/ios/room_manage.md b/docs/document/v2/ios/room_manage.md
index ed6ea659e..9c2096585 100644
--- a/docs/document/v2/ios/room_manage.md
+++ b/docs/document/v2/ios/room_manage.md
@@ -25,9 +25,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 不同版本的聊天室相关数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
-- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/server-side/chatroom.html#添加超级管理员)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/v2/server-side/chatroom.html#添加超级管理员)。
- 聊天室创建者和管理员的数量之和不能超过 100 ,即管理员最多可添加 99 个。
## 实现方法
@@ -36,9 +35,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatroomWithSubject` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatroomWithSubject` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/ios/room_members.md b/docs/document/v2/ios/room_members.md
index 9c0c73bb9..7e5aab57e 100644
--- a/docs/document/v2/ios/room_members.md
+++ b/docs/document/v2/ios/room_members.md
@@ -21,8 +21,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 聊天室相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/ios/thread.md b/docs/document/v2/ios/thread.md
index 594924d5e..e8dfe5443 100644
--- a/docs/document/v2/ios/thread.md
+++ b/docs/document/v2/ios/thread.md
@@ -4,9 +4,6 @@
子区是群组成员的子集,是支持多人沟通的即时通讯系统,本文介绍如何使用环信即时通讯 IM iOS SDK 在实时互动 app 中创建和管理子区,并实现子区相关功能。
-:::notice
-私有化版本不支持子区功能。
-:::
## 技术原理
@@ -26,9 +23,8 @@
开始前,请确保满足以下条件:
- 完成 3.9.3 或以上版本 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/ios/thread_message.md b/docs/document/v2/ios/thread_message.md
index e09af9b6a..27e67b1db 100644
--- a/docs/document/v2/ios/thread_message.md
+++ b/docs/document/v2/ios/thread_message.md
@@ -30,9 +30,8 @@
开始前,请确保满足以下条件:
- 完成 3.9.3 以上版本 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/ios/user_relationship.md b/docs/document/v2/ios/user_relationship.md
index 6410b097c..aa278a65c 100644
--- a/docs/document/v2/ios/user_relationship.md
+++ b/docs/document/v2/ios/user_relationship.md
@@ -25,7 +25,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
开始前,请确保满足以下条件:
- 完成 SDK 初始化并连接到服务器,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
- 调用好友请求相关方法之前先导入头文件 `IEMContactManager.h`;
- 调用监听接收好友请求等回调方法 API 之前导入头文件:`EMContactManagerDelegate.h`。
diff --git a/docs/document/v2/ios/userprofile.md b/docs/document/v2/ios/userprofile.md
index c28363ace..9c8b83827 100644
--- a/docs/document/v2/ios/userprofile.md
+++ b/docs/document/v2/ios/userprofile.md
@@ -26,7 +26,7 @@
设置用户属性前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -68,7 +68,7 @@ NSString *url = @"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMD
}];
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 描述 |
| ----------- | ------ | ------------------------------------------------------------------------------------------------- |
@@ -142,7 +142,7 @@ EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:@"convers
如果需要在名片中展示更丰富的信息,可以在 `ext` 中增加更多字段。
-可参考 [示例项目](https://www.easemob.com/download/im) 中的以下类:
+可参考 Demo 中的以下类:
- `EMCustomMessageBody`
- `EMChatMessage`
diff --git a/docs/document/v2/linux/overview.md b/docs/document/v2/linux/overview.md
new file mode 100644
index 000000000..9a3a5aad4
--- /dev/null
+++ b/docs/document/v2/linux/overview.md
@@ -0,0 +1,109 @@
+# Linux SDK 集成说明
+
+
+Linux SDK 是为在 Linux 及其他嵌入式设备中集成 IM 功能提供的 SDK。用户可以用 SDK 实现 IM 功能。目前支持文本消息、图片、语音、位置等消息以及透传消息,还可以实现好友管理、群组管理等功能。
+
+目前已经支持 ARM 平台及 MIPS 平台。
+
+## 集成准备
+
+获取环信 IM Linux SDK,SDK中包含如下文件:
+
+- release
+- doc
+- demo
+
+release 目录中包含SDK的库文件和头文件,libeasemob.a 是 SDK 静态库文件,include 目录包含 sdk 的头文件,doc 目录包含对 sdk 的详细说明,demo 包含使用 SDK 的 demo 程序。
+
+## 集成示例
+
+### 获取 EMClient
+
+EMClient 是 IM 服务的入口,可以直接调用 EMClient 的接口,也可以通过 EMClient 获得相应 EMContactManager、EMChatManager 等进行相应的操作。
+
+```
+#include "emclient.h"
+ ...
+ using namespace easemob;
+
+ easemob::EMChatConfigsPtr configPtr = easemob::EMChatConfigsPtr(new easemob::EMChatConfigs(resourcePath, workPath, "easemob-demo#chatdemoui"));
+ chatClient = easemob::EMClient::create(configPtr);
+```
+
+### 注册及登录
+
+调用 chatclient 的 createAccount(), login() 接口可以实现注册、登录功能。
+
+注册的示例:
+
+```
+easemob::EMErrorPtr result = chatClient->createAccount("zhangsan", "passw0rd");
+if(result->mErrorCode == EMError::NO_ERROR) {
+ cout << "Sing up successfully." << endl;
+} else {
+ cout << result->mDescription << endl;
+}
+```
+
+登录的示例 :
+
+```
+easemob::EMErrorPtr result = chatClient->login("zhangsan", "passw0rd");
+if(result->mErrorCode == EMError::NO_ERROR) {
+ cout << "Login successfully" << endl;
+} else {
+ cout << result->mDescription << endl;
+}
+```
+
+**注意:** createAccount(), login() 是需要与后台服务器通讯的操作,可能需要一定时间,如果程序想同时显示 UI 的话,需要放在单独线程中处理。
+
+### 添加好友
+
+管理好友的操作需要通过 EMChatManager 进行。
+
+```
+chatClient->getContactManager().inviteContact("contact01", "hi, contact01");
+```
+
+添加好友需要等待对方的确认,也可以由程序设置成自动接受好友邀请。
+
+### 与好友聊天
+
+接收消息需要实现 EMChatManagerListener 的 onReceiveMessage() 方法并且注册该listener。
+
+```
+class Chat : public easemob::EMChatManagerListener {
+ void onReceiveMessage(const easemob::EMMessageList &messages);
+}
+
+chatClient->getChatManager().addListener(this);
+```
+
+发送消息需要创建 EMMessage 实例,目前支持文本、图片、音频文件等消息类型。
+
+```
+EMTextMessageBody* body = new EMTextMessageBody("How are you, du");
+ easemob::EMMessagePtr msg = EMMessage::createSendMessage(loginUser, to, body);
+
+ easemob::EMCallbackPtr callback(new easemob::EMCallback(mHandle,
+ [=]()->bool{
+ window_->AddOutput("Msg send success");
+ return true;
+ },
+ [=](const easemob::EMErrorPtr error)->bool{
+ window_->AddOutput( "Send message failed: " + error->mDescription);
+ return true;
+ }));
+
+ msg->setCallback(callback);
+ chatClient->getChatManager().sendMessage(msg);
+```
+
+请注意 callback 的定义,为了能够获知 callback 的拥有者是否仍然存在,需要在您的类中定义`EMCallbackObserverHandle`。
+
+```
+easemob::EMCallbackObserverHandle mHandle;
+```
+
+具体接口说明及使用可以参考 SDK 中的文档和 demo 程序。
\ No newline at end of file
diff --git a/docs/document/v2/linux/releasenote.md b/docs/document/v2/linux/releasenote.md
new file mode 100644
index 000000000..63e4247f4
--- /dev/null
+++ b/docs/document/v2/linux/releasenote.md
@@ -0,0 +1,6 @@
+# Linux SDK 更新日志
+
+## 版本:V3.1.0 2016-03-24
+
+1. 全新的通信协议:全新的基于消息同步的私有协议,在不稳定网络环境下更稳定更省流量,确保消息投递的可靠、顺序以及实时性,并具有更高的安全性。同时提供了更好的扩展性,将支持更多的对接和设备同步场景。
+2. 全新的 SDK:全面重构,将核心通信模块做了更好的封装;简化了接口,结构更清晰,集成更容易;提升了登录速度和弱网络环境下的可靠性。
\ No newline at end of file
diff --git a/docs/document/v2/linux/techspec.md b/docs/document/v2/linux/techspec.md
new file mode 100644
index 000000000..2230c31f7
--- /dev/null
+++ b/docs/document/v2/linux/techspec.md
@@ -0,0 +1,7 @@
+# 技术参数
+
+
+- 开发语言:C++11
+- 编译器:GCC 4.8.4
+- 已适配系统:Ubuntu 14.04、树莓派
+- 第三方库:libpthread、libsqlite3、libcurl、libssl、libz
\ No newline at end of file
diff --git a/docs/document/v2/privatization/easemob_app_token.md b/docs/document/v2/privatization/easemob_app_token.md
new file mode 100644
index 000000000..1ef56108d
--- /dev/null
+++ b/docs/document/v2/privatization/easemob_app_token.md
@@ -0,0 +1,82 @@
+# 使用环信 App Token 鉴权
+
+
+
+环信提供的 REST API 需要 app token (管理员权限 token) 才能使用,即发送 HTTP 请求时需要携带 app token。本文介绍如何获取 app token。
+
+另外,环信 Server SDK 提供了用户、消息、群组、聊天室等资源的操作管理能力,详见 [Java Server SDK](/document/v2/server-side/java_server_sdk.html) 和 [PHP Server SDK](/document/v2/server-side/php_server_sdk.html)。
+
+## 获取管理员权限 Token
+
+获取 token 时,服务器会返回 token 有效期,即响应中的 `expires_in` 字段的值。由于网络延迟等原因,系统不保证 token 在此值表示的有效期内绝对有效。如果发现 token 使用异常,如返回 HTTP 状态码 401,请重新获取新的 token。
+
+:::notice
+请不要频繁向服务器发送获取 token 的请求,同一账号发送此请求超过一定频率会被服务器封禁。
+:::
+
+### HTTP 请求
+
+```http
+POST https://{host}/{org_name}/{app_name}/token
+```
+
+#### 路径参数
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
+
+#### 请求 header
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :------------- | :----- | :------- | :---------------------------------- |
+| `Content-Type` | String | 是 | 内容类型。请填 `application/json`。 |
+| `Accept` | String | 是 | 内容类型。请填 `application/json`。 |
+
+#### 请求 body
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :-------------- | :----- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `grant_type` | String | 是 | 授权方式。该参数设置为固定字符串 `client_credentials`,即客户端凭证模式。 |
+| `client_id` | String | 是 | App 的 `client_id`,用于生成 app token 调用 REST API。详见环信即时通讯控制台的 `应用概览->应用详情`页面下的`应用信息-Client ID`。 |
+| `client_secret` | String | 是 | App 的 `client_secret`,用于生成 app token 调用 REST API。详见环信即时通讯控制台的 `应用概览->应用详情`页面下的`应用信息-ClientSecret`。 |
+| `ttl` | Long | 否 | token 有效期,单位为秒。
- 若传入该参数,token 有效期以传入的值为准。
- 若不传该参数,以 详见环信即时通讯控制台的`用户认证`页面的 token 有效期的设置为准。
- 若设置为 `0`,则 token 永久有效。 |
+
+### HTTP 响应
+
+#### 响应 body
+
+如果返回的 HTTP 状态码为 `200`,表示成功返回 token。响应 body 包含如下字段:
+
+| 参数 | 类型 | 描述 |
+| :------------- | :----- | :--------------------------------------------------- |
+| `access_token` | String | 有效的 Token 字符串。 |
+| `expires_in` | Long | Token 有效时间,单位为秒,在有效期内不需要重复获取。 |
+| `application` | String | 当前 App 的 UUID 值。 |
+
+如果返回的 HTTP 状态码非 `200`,表示请求失败。你可以参考 [响应状态码](/document/v2/server-side/error.html) 了解可能的原因。
+
+### 示例
+
+#### 请求示例
+
+```shell
+curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{
+ "grant_type": "client_credentials",
+ "client_id": "YXA6i-Ak8Ol4Eei2l11ZjV-EAg",
+ "client_secret": "YXA6VunqiNxoB7IwXHInk1cGiXOOJfc",
+ "ttl": "1024000"
+ }' 'http://a1.easemob.com/easemob-demo/testapp/token'
+```
+
+#### 响应示例
+
+```json
+{
+ "access_token": "YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw",
+ "expires_in": 1024000,
+ "application": "8be024f0-e978-11e8-b697-5d598d5f8402"
+}
+```
diff --git a/docs/document/v2/privatization/easemob_user_token.md b/docs/document/v2/privatization/easemob_user_token.md
new file mode 100644
index 000000000..12d14da55
--- /dev/null
+++ b/docs/document/v2/privatization/easemob_user_token.md
@@ -0,0 +1,219 @@
+# 使用环信 User Token 鉴权
+
+
+
+客户端 SDK 不提供获取 token 的 API。如果你的用户在客户端使用环信 token 登录和鉴权,你需要在应用服务器(App Server)集成环信服务端获取 token 的 API,实现获取 Token 的业务逻辑。
+
+环信服务端支持以下三种方式获取用户 token:
+
+- 通过“用户 ID”和“密码”获取:用户注册后,使用 “用户 ID” 和 “密码” 登录。登录成功后,你的 App Server 会为客户端提供一个用户 token。
+
+- 通过“用户 ID”获取:用户在客户端上登录时,你的应用服务器会下发用户 token,SDK 使用用户 ID 和用户 token 进行登录。开发者可通过 RESTful API 在你的应用服务器上对用户 token 进行管理,设置有效期,并确定当用户不存在时是否自动创建用户。
+
+- 基于 `AppKey、AppSecret` 和 `userId`(即注册用户时传入的 `username`)生成动态 Token。
+
+## 前提条件
+
+要调用环信即时通讯 RESTful API,请确保满足以下要求:
+
+- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](uc_configure.html)。
+- 已从服务端获取 app token,详见 [App Token 鉴权](easemob_app_token.html)。
+
+## 认证方式
+
+环信即时通讯 RESTful API 要求 Bearer HTTP 认证。每次发送 HTTP 请求时,都必须在请求头部填入如下 `Authorization` 字段:
+
+Authorization:`Bearer YourAppToken`
+
+为提高项目的安全性,环信使用 token(动态密钥)对即将登录即时通讯系统的用户进行鉴权。即时通讯 RESTful API 推荐使用 app token 的鉴权方式,详见 [使用 App Token 鉴权](easemob_app_token.html)。
+
+## 通过用户 ID 和密码获取用户 token
+
+### HTTP 请求
+
+```http
+POST https://{host}/{org_name}/{app_name}/token
+```
+
+#### 路径参数
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :------------- | :----- | :------- | :--------------------- |
+| `host`| String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。|
+
+#### 请求 header
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :------------- | :----- | :------- | :---------------------- |
+| `Content-Type` | String | 是 | 内容类型。请填 `application/json`。 |
+| `Accept` | String | 是 | 内容类型。请填 `application/json`。 |
+
+#### 请求 body
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :----------- | :----- | :------- | :------------------- |
+| `grant_type` | String | 是 | 授权方式。
- 若值为 `password`,通过用户 ID 和密码获取 token,需设置 `username` 和 `password` 参数。在该请求中,该参数需设置为 `password`。
- 若值为 `inherit`,通过用户 ID 获取 token,只需设置 `username` 参数。 |
+| `username` | String | 是 | 用户 ID。 |
+| `password` | String | 是 | 用户的登录密码。 |
+| `ttl` | Long | 否 | token 有效期,单位为秒。
- 若传入该参数,token 有效期以传入的值为准。
- 若不传该参数,以 详见环信即时通讯控制台的`用户认证`页面的 token 有效期的设置为准。
- 若设置为 `0`,则 token 永久有效。 |
+
+### HTTP 响应
+
+#### 响应 body
+
+如果返回的 HTTP 状态码为 200,表示成功获取 token,响应包体中包含以下字段:
+
+| 字段 | 类型 | 描述 |
+| :-------------- | :----- | :---------------- |
+| `access_token` | String | 有效的用户 token。 |
+| `expires_in` | Long | token 有效期,单位为秒。在有效期内无需重复获取。 |
+| `user` | JSON | 用户相关信息。 |
+| `user.uuid` | String | 用户的 UUID。即时通讯服务为该请求中的 app 或用户生成的唯一内部标识,用于生成用户 token。 |
+| `user.type` | String | 对象类型,无需关注。 |
+| `user.created` | Long | 注册用户的 Unix 时间戳,单位为毫秒。 |
+| `user.modified` | Long | 最近一次修改用户信息的 Unix 时间戳,单位为毫秒。 |
+| `user.username` | String | 用户 ID。 |
+| `user.activated` | Bool | 用户是否为活跃状态:
- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户的 API](/document/v2/server-side/account_system.html#账号解禁)对账号解除封禁。 |
+
+如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考[响应状态码](/document/v2/server-side/error.html)了解可能的原因。
+
+### 示例
+
+#### 请求示例
+
+```shell
+curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{
+ "grant_type": "password",
+ "username": "C",
+ "password": "1",
+ "ttl": "1024000"
+ }' 'http://XXXX/XXXX/XXXX/token'
+```
+
+#### 响应示例
+
+```json
+{
+ "access_token": "YWMtrR6ECkz8Eeyx6Y9j1eX9kbsMrFep3U6BvVj7KSnNonWqRx7gTPwR7Kzl-Q_xISNOAwMAAAF9UPZqbQAPoAAtYK9fWgaTNyuWoB3-6nGf_TXBx3Nt3XRZST-elU0x2A",
+ "expires_in": 1024000,
+ "user": {
+ "uuid": "aa471ee0-XXXX-XXXX-ace5-f90ff121234e",
+ "type": "user",
+ "created": 1637740861395,
+ "modified": 1637740861395,
+ "username": "c",
+ "activated": true
+ }
+}
+```
+
+## 通过用户 ID 获取用户 token
+
+你通过用户 ID 获取用户 token。若用户 ID 不存在,你可以确定是否自动创建用户。
+
+### HTTP 请求
+
+```http
+POST https://{host}/{org_name}/{app_name}/token
+```
+
+#### 路径参数
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :------------- | :----- | :------- | :---------------------------------- |
+| `host`| String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。|
+
+#### 请求 header
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :------------- | :----- | :------- | :---------------------------------- |
+| `Content-Type` | String | 是 | 内容类型。请填 `application/json`。 |
+| `Accept` | String | 是 | 内容类型。请填 `application/json`。 |
+| `Authorization`| String | 是 | App 管理员的鉴权 token,格式为 `Bearer YourAppToken`,其中 `Bearer` 为固定字符,后面为英文空格和获取到的 app token。 |
+
+#### 请求 body
+
+| 参数 | 类型 | 是否必需 | 描述 |
+| :----------- | :----- | :------- | :------------------- |
+| `grant_type` | String | 是 | 授权方式。
- 若值为 `password`,通过用户 ID 和密码获取 token,需设置 `username` 和 `password` 参数。
- 若值为 `inherit`,通过用户 ID 获取 token,只需设置 `username` 参数。在该请求中,该参数需设置为 `inherit`。 |
+| `username` | String | 是 | 用户 ID。 |
+| `autoCreateUser` | Boolean | 是 | 当用户不存在时,是否自动创建用户。**自动创建用户时,需保证授权方式(`grant_type`)必须为 `inherit`,API 请求 header 中使用 App token 进行鉴权**。 |
+| `ttl` | Long | 否 | token 有效期,单位为秒。
- 若传入该参数,token 有效期以传入的值为准。
- 若不传该参数,有效期默认为 60 天。此外,也可通过 环信即时通讯控制台的`用户认证`页面的 token 有效期的设置为准。
- 若设置为 `0`,则 token 永久有效。 |
+
+### HTTP 响应
+
+#### 响应 body
+
+如果返回的 HTTP 状态码为 `200`,表示成功获取 token。如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考[响应状态码](/document/v2/server-side/error.html)了解可能的原因。
+
+关于响应包体中的字段的描述,详见[通过用户 ID 和密码获取 token 的 API](#通过用户 ID 和密码获取用户 token) 中的响应字段的描述。
+
+### 示例
+
+#### 请求示例
+
+```shell
+# 将 替换为你在服务端生成的 App Token
+
+curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer ' -d '{
+ "username": "test2333",
+ "grant_type": "inherit",
+ "autoCreateUser": true,
+ "ttl": 1024000
+ }' 'http://XXXX/XXXX/XXXX/token'
+```
+
+#### 响应示例
+
+自动创建用户并获取 token 的响应如下:
+
+```json
+{
+ "access_token": "YWMthyeiFhbyEe2eMGeYZSLlT7sMrFep3U6BvVj7KSnNonUiDB-wFvIR7a5Ttx2-01MYAwMAAAGCfIeryQAPoAAsuveDfkUrePkEM2Hgy6SaOTeTx3ETgh5cnXcP_HfBPg",
+ "expires_in": 1024000,
+ "user": {
+ "uuid": "220c1fb0-XXXX-XXXX-ae53-b71dbed35318",
+ "type": "user",
+ "created": 1659946472753,
+ "modified": 1659946472753,
+ "username": "test2333",
+ "activated": true
+ }
+}
+```
+
+## 生成动态的用户 Token
+
+动态 Token 的生成方法依赖 `AppSecret`,因此生成逻辑务必在客户的服务器侧完成,以免 `AppSecret` 泄露。
+
+动态 Token 临时有效,有效期由你自行设置,建议不要太长。
+
+你可以按照如下步骤生成动态用户 token:
+
+1. 在环信即时通讯控制台 创建应用,生成 `AppKey`、`Client ID` 和 `ClientSecret`。
+
+2. 基于 `AppKey、AppSecret` 和 `userId`(即注册用户时传入的 `username`),参考如下示例生成 token。
+
+```
+a. 获取当前时间戳,单位为秒。
+ CurTime = 1686207557
+b. 设置过期时间,单位为秒。
+ ttl = 600
+c. 生成 signature,将 clientId、appkey、userId、curTime、ttl、clientSecret 六个字段拼成一个字符串,进行 sha1 编码并将编码内容得到的字节转换为十六进制字符串。
+ str = clientId + appkey + userId + curTime + ttl + clientSecret
+ shaBytes = sha1(str)
+ signature = fmt.Sprintf("%x", shaBytes)
+d. 组装为 json。
+ json = {"signature": "xx", "appkey":"xx#xx", "userId":"xx", "curTime":1686207557, "ttl": 600}
+e. 将 token 类型 "dt-" 放到 json 转成的字符串前,生成最终的字符串。
+ str = "dt-" + jsonStr
+f. 进行 base64 编码,生成最终的 token。
+ token = base64.urlEncode.encode(str)
+```
+
+3. 使用上述方法生成 Token 后,客户端 SDK 将该 Token 填入并登录,服务器校验成功后即登录成功。
+
diff --git a/docs/document/v2/privatization/faq_integration_issues.md b/docs/document/v2/privatization/faq_integration_issues.md
new file mode 100644
index 000000000..f7544a9a3
--- /dev/null
+++ b/docs/document/v2/privatization/faq_integration_issues.md
@@ -0,0 +1,53 @@
+# 集成类问题
+
+
+
+## 如何实现跨 app 聊天
+
+如果您需要两个 app 之间可以互相通信,只要将 AppKey 写成同一个就可以实现跨 app 聊天。同时,您需要在环信即时通讯云控制台上传对应 app 的推送证书(可以是多个),这样可以确保您的两个 app 都能收到推送。
+
+## 获取设备本地日志文件
+
+在排查移动端集成或者使用问题的时候,会遇到需要查看设备本地 SDK 的 log 来确认问题,在此提供移动端获取本地 log 的方法。
+
+### Android
+
+#### 通过 API 获取
+
+SDK 的 log 文件在 app 的安装目录中,可以通过 API 获取,获取时需要确保 SDK 已经完成初始化。
+
+通过 API 获取 log 文件路径, 返回格式为 `xxxxx/xxxx/log.gz`
+
+```java
+logPath = EMClient.getInstance().compressLogs();
+```
+
+#### 从手机或者模拟器获取日志文件
+
+前提条件
+
+- 确保电脑上安装了 adb 工具,可以参考 [SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools)
+- 手机连接到电脑,adb 的使用可以参考:[Android Debug Bridge]( https://developer.android.com/studio/command-line/adb)
+
+```shell
+adb pull /sdcard/android/data/(your_package_name)/(appkey)/core_log/easemob.log
+```
+
+### iOS
+
+#### 通过 API 获取
+
+SDK 的 Log 文件在 app 的 sandbox 中,如需获取可通过 SDK 提供的`getLogFilesPath:` 获取,获取时需要确保SDK已经完成初始化。
+
+```
+EMError *error = nil;
+NSString *logPath = [EMClient.sharedClient getLogFilesPath:&error];
+```
+
+返回格式为 `xxxxx/xxxx/log.gz`。 `error` 为错误信息,无错误是返回`nil`。
+
+#### 从手机或者模拟器获取日志文件
+
+通过 XCode debug 时,可以连接手机或者模拟器,找到应用的 sandbox 目录,然后提取日志文件。
+
+App_Sandbox_path/Application Support/HyphenateSDK/easemobLog
\ No newline at end of file
diff --git a/docs/document/v2/privatization/faq_quality_issues.md b/docs/document/v2/privatization/faq_quality_issues.md
new file mode 100644
index 000000000..1153edfa3
--- /dev/null
+++ b/docs/document/v2/privatization/faq_quality_issues.md
@@ -0,0 +1,90 @@
+# 质量类问题
+
+
+
+## 如何排查 环信即时通讯 IM 单聊消息丢失
+
+### 问题描述
+
+在使用 环信即时通讯 IM 聊天的过程中,如果遇到用户 A 给用户 B 发消息,用户 B 没有接收到的情况(视为消息丢失),可以按照下面的说明进行排查。
+
+### 问题原因
+
+可能是以下原因:
+
+- 用户 A 消息发送失败;
+- 接受消息的用户 ID 错误;
+- 用户 B 把 A 设为黑名单了;
+- 用户 B 在其他设备上登录时接收了消息;
+- 用户 B 离线消息数量超过 500 条等。
+
+### 排查方案
+
+#### 在使用环信即时通讯 IM SDK 集成阶段测试用户出现消息丢失
+
+分为用户 B 在线和不在线两种情况:
+
+- 用户 B 在线的情况下收不到用户 A 发的消息:
+ 1. 检查用户 A 发送的消息是否成功,可以根据 SDK 发消息方法返回的结果判断消息是否发送成功,如果发送失败,则用户 B 收不到消息。
+ 2. 检查用户 A 给用户 B 发消息时,B 的 ID 是否正确,如果传的不是用户 B 的 环信即时通讯 IM ID,那么用户 B 收不到消息。
+ 3. 检查用户 B 是否将用户 A 加入黑名单 ,如果用户 B 将用户 A 加入黑名单,那么用户 B 将收不到用户 A 发的消息,详见 [获取黑名单](/document/v2/server-side/user_relationship.html#获取黑名单列表)。
+- 用户 B 不在线时,用户 A 给用户 B 发消息,用户 B 重新登录后收不到消息:
+ 1. 可能存在用户 B 有在其他设备上登录的情况,把消息接收走了,所以在当前设备登录时将不再接收消息。
+ 2. 确认用户 B 的离线数量是不是很大,如果超过 500 条,那么用户 B 只会收到最新的 500 条消息,超过500条的那部分消息将接收不到。
+
+
+
+## 排查环信即时通讯 IM 群聊消息丢失
+
+### 问题描述
+
+用户有时反馈环信即时通讯 IM 丢消息,在用户 A 与用户 B 在同一个群组,用户 A 向群组中发消息这种情况下,我们建议先按以下步骤自查。如果没发现问题,可以提交工单由技术支持同事协助排查。
+
+### 问题原因
+
+可能的原因包括用户 A 构建消息时传的消息类型不是群聊类型、用户 A 消息发送失败、用户 B 不在群组中、用户 B 屏蔽了该群组消息、用户 B 被加入了群组黑名单、用户 B 在其他设备上登录时接收了消息以及用户 B 群组离线消息数量超过 200 条等。
+
+### 排查方案
+
+#### 一、App 未上线时,使用环信即时通讯 IM SDK 集成阶段测试用户出现消息丢失
+
+- 用户 B 在线的情况下收不到用户 A 发的群组消息:
+ 1. 检查用户 A 在构建消息时,传的消息类型是不是群聊类型的,如果不是则用户 B 收不到用户 A 发的群组消息,详见 [Android 版构建消息](/document/v2/android/message_send_receive.html#发送文本消息) 或 [iOS 版构建消息](/document/v2/ios/message_send_receive.html#发送文本消息)。
+ 2. 检查用户 A 发送的消息是否成功,可以根据 SDK 发消息方法返回的结果判断消息是否发送成功,如果发送失败,则用户 B 收不到用户 A 发送的群组消息。
+ 3. 检查用户 A 给用户 B 发消息时,传的群组 ID 是否正确(是否为 A 与 B 共同加入的群组 ID),如果传的不是正确的群组 ID,那么用户 B 收不到消息用户 A 发的群组消息。
+ 4. 检查用户 B 是否在群组中,可以获取群组详情,看群组中是否有用户 B,详见 [获取群组详情](/document/v2/server-side/group.html#获取群组详情)。
+ 5. 检查用户 B 是否屏蔽了该群组消息,如果用户 B 屏蔽了该群组消息,那么将收不到用户 A 发的群组消息,详见 [Android 屏蔽和解除群消息](/document/v2/android/group_manage.html#屏蔽和解除屏蔽群消息) 或 [iOS 屏蔽和解除群消息](/document/v2/ios/group_manage.html#屏蔽和解除屏蔽群消息)。
+ 6. 检查用户 B 是否被加入了群组黑名单,如果用户 B 被加入到了群组黑名单,那么将收不到用户 A 发的群组消息,详见 [获取群组黑名单](/document/v2/server-side/group.html#查询群组黑名单)。
+- 用户 B 不在线时,用户 A 向群组中发送消息,用户 B 重新登录后收不到群组消息:
+ 1. 可能存在用户 B 在其他设备上登录把消息接收走了的情况,则在当前设备登录时将不再接收消息。
+ 2. 确认用户 B 所在的群组的离线数量是不是很大,如果超过200条,那么用户 B 只会收到最新的 200 条群组消息,超过 200 条的那部分群组消息将接收不到。
+
+#### 二、App 已经上线后,线上用户出现群组消息丢失
+
+1.先与 App 的用户确认是否存在以下情况:
+- “用户 B 在线的情况下收不到用户 A 发的群组消息”的 3、4 和 5 的情况
+- “用户 B 不在线时,用户 A 向群组中发送消息,用户 B 重新登录后收不到群组消息”的 1 和 2 的情况。
+
+2.若排除以上情况,可根据 App Key、发送者 ID 或消息 ID、消息发送时间在 环信即时通讯云控制台自行查询消息投递状态,具体操作如下:
+
+1. 登录环信即时通讯云控制台。
+2. 在首页的 应用列表 区域中,点击具体应用的 **操作** 栏中的 **管理**。
+3. 在界面左侧导航栏中选择**实时查询** > **IM消息投递查询**。
+
+![img](@static/images/privitization/faq-msgdeliveryquery.jpg)
+
+## 参考
+
+### 如何判断用户是否在线
+
+在使用环信即时通讯 IM 基础聊天业务的场景下,处理特定业务需求时需知晓某些用户是否在线。为此,环信即时通讯 IM 提供单个用户以及批量用户是否在线状态的查询,详见 [用户在线状态回调](/document/v2/server-side/user_status_callback.html)。
+
+除此之外,可以在 环信即时通讯云控制台 上查询用户连接状态,具体操作如下:
+
+1. 登录环信即时通讯云控制台。
+2. 在首页的 **应用列表** 区域中,点击具体应用的 **操作** 栏中的 **管理**。
+3. 在界面左侧导航栏中选择 **实时查询** > **IM用户连接状态**。
+
+![img](@static/images/privitization/faq-userconnectionstatus.jpg)
+
+说明: 环信即时通讯 IM SDK 未提供直接查询用户是否在线的方法,客户端可以封装查询用户是否在线的接口调用或者让自己服务器端来调用再与自己客户端交互。
\ No newline at end of file
diff --git a/docs/document/v2/privatization/uc_configure.md b/docs/document/v2/privatization/uc_configure.md
index 94eefb7bf..7dfbf9102 100644
--- a/docs/document/v2/privatization/uc_configure.md
+++ b/docs/document/v2/privatization/uc_configure.md
@@ -1,4 +1,4 @@
-# 开通配置环信即时通讯 IM 服务
+# Console服务开通与配置
@@ -132,3 +132,15 @@
![img](@static/images/privitization/deploy_ip_allow_list.png)
3. 单击 **确认**,则删除该 IP 地址。
+
+### 用户管理
+
+console后台支持管理用户,包括:用户注册、用户删除、修改用户信息、查看用户好友、查看用户黑名单、重置密码、发送REST消息、封禁、强制下线等操作.
+
+1. 在环信即时通讯云的左侧导航栏中,选择 **运营服务** > **用户管理**。
+
+2. 单击 **创建IM用户** 按钮,注册新用户。
+
+3. 在 **用户名单** 列表中,单击操作列的 **更多** 执行更多操作。
+
+![img](@static/images/privitization/deploy_user_manage.png)
diff --git a/docs/document/v2/privatization/uc_deploy.md b/docs/document/v2/privatization/uc_deploy.md
index 636cc6b5c..bb3152936 100644
--- a/docs/document/v2/privatization/uc_deploy.md
+++ b/docs/document/v2/privatization/uc_deploy.md
@@ -1,4 +1,4 @@
-# 私有化部署流程说明
+# 私有化服务部署
@@ -58,7 +58,7 @@
## 3、集成测试
-当服务端验证完成后,可通过下载需要的客户端 SDK 及 Demo 进行集成体验。环信客户端 SDK 已对 IM 核心服务完成封装, 通过调用 SDK API 接口,即可快速获得消息收发 、会话管理 、群组 、好友 、聊天室等功能。目前客户端 SDK 已覆盖 Windows 、Linux 、MacOS 、Android 、iOS 、Web 、小程序等多种平台,服务器端 SDK 已覆盖 Java 、PHP 等平台,[下载私有化客户端 SDK](http://docs-im-beta.easemob.com/private/im/uc_private.html#私有化-sdk-下载)。
+当服务端验证完成后,可通过下载需要的客户端 SDK 及 Demo 进行集成体验。环信客户端 SDK 已对 IM 核心服务完成封装, 通过调用 SDK API 接口,即可快速获得消息收发 、会话管理 、群组 、好友 、聊天室等功能。目前客户端 SDK 已覆盖 Windows 、Linux 、MacOS 、Android 、iOS 、Web 、小程序等多种平台,服务器端 SDK 已覆盖 Java 、PHP 等平台,[下载私有化客户端 SDK](uc_private.html#私有化-sdk-下载)。
示例一:以 Android 端 demo 体验为例
@@ -96,13 +96,7 @@
![img](@static/images/privitization/deploy_wechat_code.png)
-2. 提交工单
-
-登录[环信通讯云管理后台](https://console.easemob.com/user/login),点击“服务支持-工单支持”,点击“进入工单系统”
-
-![img](@static/images/privitization/deploy_ticket.png)
-
-3. Geek 社区
+2. Geek 社区
[Geek 开发者社区](http://www.imgeek.org/)里面的环信专区/环信技术交流板块提供了很多常见问题的讨论和解答,您也可以发帖提问,我们的技术和服务人员会尽力解答您的疑问!
diff --git a/docs/document/v2/privatization/uc_glossary.md b/docs/document/v2/privatization/uc_glossary.md
new file mode 100644
index 000000000..470d70f9d
--- /dev/null
+++ b/docs/document/v2/privatization/uc_glossary.md
@@ -0,0 +1,201 @@
+# 术语表
+
+
+
+## 环信即时通讯 IM SDK
+
+环信即时通讯 IM SDK 是环信提供的用于实现即时通讯,比如:单聊、群聊、聊天室的 SDK。
+
+### 环信即时通讯 IMKit
+
+IMKit 是环信即时通讯 IM SDK 的一个开源 UI 组件,提供应用内聊天的常用页面和 UI 组件,帮助开发者快速构建应用的 UI。
+
+## 环信即时通讯 CallKit
+
+CallKit 提供应用内聊天中音视频通话的页面和 UI 组件,帮助开发者快速构建音视频通话功能。
+
+### 环信通讯云控制台(Easemob Console)
+
+[环信通讯云控制台](uc_configure.md)是环信提供给开发者管理环信各项服务的工具。
+
+## Demo
+
+环信即时通讯 IM 示例开源项目,目前支持 Android、iOS 和 Web 平台。
+
+## 会话和消息
+
+### 会话
+
+会话是一个单聊、群聊、聊天室或者子区所有消息的集合。用户需在会话中发送消息或查看历史消息或清空历史消息等操作。
+
+### 会话列表
+
+会话列表是指会话依照一定顺序排列的列表,会话的排列顺序依赖于会话中最近一条消息的接收时间等因素。
+
+### 广播消息
+
+广播消息是指通过 RESTful API 对应用内的所有用户发送消息。当用户离线时,消息会自动转换为系统离线推送。
+
+### 离线消息
+
+当接收方不在线时,环信即时通讯 IM 服务器会暂时保存消息,用户上线时,会接收到服务器保存的离线消息。私有部署即时通讯服务离线消息保存时长可支持自定义。单聊和群聊支持离线消息,聊天室不支持离线消息。
+
+### 历史消息
+
+环信即时通讯 IM 服务器会保存历史消息以供查询。开发者可以通过 RESTful API 下载历史消息压缩包文件。
+
+### 漫游消息
+
+多端登录时,用户在其中一端发送的消息会同步到所有其他客户端,此类消息称为漫游消息。
+
+### 文本消息
+
+消息内容是普通文本,其中可以包括超链接,客户端收到消息后存入数据库、计入未读消息数。表情消息为开发者自定义。实质上是发文本消息。接收方收到文本消息后,首先查询文本消息是否是表情消息,如果是,则显示该文本消息为对应的表情图片。
+
+### 图片消息
+
+图片消息内容属于附件类型消息,内容图片 URL 地址、尺寸、图片大小等信息。最大支持 10 MB。
+
+### 位置消息
+
+消息内容为地理位置标题、经度和纬度信息。
+
+### 语音消息
+
+语音数据属于附件类型,需要提供时长信息,以秒为单位。最大支持 10 MB。
+
+### 视频消息
+
+消息内容为视频文件的 URL 地址、时长、大小、格式等信息,默认支持 10 MB。
+
+### 文件消息
+
+消息内容为文件的 URL 地址、大小、格式等信息,格式不限,默认支持 10 MB。
+
+### 透传消息
+
+透传消息可视为一条指令,通过发送这条指令给对方,通知对方要执行的操作,对方收到消息可自定义处理。透传消息不会存入本地数据库中,在 UI 上不显示,也不计入未读消息。具体功能可以根据自身业务需求自定义,例如实现头像或昵称的更新等。
+
+### 消息自定义扩展
+
+当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型,例如消息中需要携带被回复的消息内容等场景。
+
+使用扩展后,消息大小不能超过原类型消息的大小。消息自定义扩展作为消息内容会存入本地数据库。
+
+### 自定义消息
+
+发者自定义的消息类型,例如红包消息、石头剪刀布等形式的消息。
+
+### 消息回调
+
+消息回调,即聊天服务器会在事件发生之前或之后,向客户的应用服务器发送请求,应用服务器可据此进行必要的数据同步,或者根据业务需求干预事件的后续处理流程。
+
+### 消息云存储
+
+将用户发送的单聊、群聊、聊天室消息存储到聊天服务器,方便用户在更换设备或删除本地消息后,通过服务端获取历史消息。私有部署即时通讯服务消息存储时间可支持自定义。
+
+## 用户相关
+
+### 用户 ID
+
+用户 ID 即用户名,是 App Key 内用户的唯一标识,不同于即时通讯系统服务器为用户创建的 UUID。
+
+### UUID
+
+即时通讯服务器为 App Key 内用户创建的唯一 ID,不同于用户 ID。
+
+### 用户属性
+
+用户属性指用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。例如,在招聘场景下,利用用户属性功能,可以存储性别、邮箱、用户类型(面试者)、职位类型(Web 研发)等。当查看用户信息时,可以直接查询服务器存储的用户属性信息。
+
+### 离线
+
+离线是指用户成功登出环信即时通讯 IM 系统或与即时通讯 IM 系统断开连接后的状态。用户登出即时通讯 IM 系统之后,无法发送和接受消息,在下次登录后可以接收到离线消息。
+
+## 封禁用户
+
+禁止用户使用即时通讯 IM 服务。封禁后,用户无法连接即时通讯 IM 服务器。
+
+### 用户黑名单
+
+用户将不会接收黑名单中用户发送的消息。
+
+## 单聊
+
+单聊即一对一聊天,支持全类型消息。参与聊天的双方可以是好友也可以是陌生人。
+
+## 群组
+
+群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可在群中收发送消息。当群成员离线时,可以收到推送消息。群组分为公开群和私有群,公开群可以被搜索到,非群成员可以加入;私有群不能被搜索到,需要群主或群管理员添加用户进入。群组成员支持多种角色:群主、群管理员、群成员。群组提供丰富的管理能力,例如,群组禁言、黑名单和白名单等。
+
+### 群主
+
+群主即群组的创建者,在群中拥有最高权限,可以指定管理员、解散群组、更改群组信息以及对群组成员进行管理。
+
+群主也可以将群主权限转移给群组其他成员。
+
+### 群管理员
+
+由群主授权,协助进行管理,拥有一定管理权限。可以对群组成员进行管理。
+
+### 群成员
+
+群组的普通成员,可以收发消息和查看群组描述信息,不具备群组管理权限。
+
+### 群组黑名单
+
+群主和管理员可以将群组成员加入黑名单,加入群黑名单的用户不能在群中发送消息。
+
+### 群组白名单
+
+群主和管理员可以将群组成员加入白名单。群组开启全局禁言时,只有白名单中的用户可以在群组中发送消息。
+
+## 聊天室
+
+聊天室是支持多人加入的组织。聊天室中的成员没有固定关系,用户离线后,超过 2 分钟会自动退出聊天室。聊天室成员在离线后,不会收到推送消息。聊天室可以应用于直播、消息广播等。
+
+### 聊天室黑名单
+
+聊天室创建者和管理员可以将聊天室成员加入黑名单,被加入聊天室黑名单的用户不能在聊天室中发送消息。
+
+### 聊天室白名单
+
+聊天室创建者和管理员可以将聊天室成员加入白名单,聊天室开启全局禁言时,只有白名单中的用户可以在聊天室中发送消息。
+
+### 聊天室创建者
+
+聊天室的创建者,在聊天室中拥有最高权限。可以指定管理员、解散聊天室、更改聊天室信息、对聊天室成员进行管理。
+
+### 聊天室管理员
+
+由聊天室所有者授权,协助进行管理,拥有一定管理权限。可以对聊天室成员进行管理。
+
+### 聊天室成员
+
+聊天室的普通成员,不具备聊天室管理权限。
+
+## RESTful 接口
+
+环信即时通讯 IM 的服务器端接口都是通过 RESTful 服务方式提供的,RESTful API 基于最简单的 HTTP 协议,在各个编程语言中都提供了良好的支持。
+
+环信即时通讯 IM RESTful 平台提供一个多租户用户体系,以集合(Collection)的形式的形式管理资源,一个集合包括数据库、企业、应用、用户、群组、消息和文件等。
+
+## 离线推送
+
+离线推送是指当应用被杀死时,通过厂商推送接收消息。iOS 设备使用苹果推送通知服务(APNs),Android 设备为谷歌云消息传递服务(FCM)、华为推送、小米推送、魅族推送、OPPO 推送和 vivo 推送。
+
+## 在线状态订阅
+
+用户在线状态(即 Presence)包含用户的在线、离线以及自定义状态。环信即时通讯 IM 提供发布、订阅和查询用户的在线状态的功能。
+
+## 消息表情回复 Reaction
+
+在单聊和群聊中对消息添加、删除表情。表情可以直观地表达情绪,利用 Reaction 可以提升用户的使用体验。同时在群组中,利用 Reaction 可以发起投票,根据不同表情的追加数量来确认投票。
+
+## 子区
+
+子区是建立在群组内一条消息上的支持多人沟通的即时通讯系统,子区成员是群组成员的子集。
+
+## 子区消息
+
+子区消息是子区内发送和接收的消息。
\ No newline at end of file
diff --git a/docs/document/v2/privatization/uc_introduction.md b/docs/document/v2/privatization/uc_introduction.md
new file mode 100644
index 000000000..d0e363a1e
--- /dev/null
+++ b/docs/document/v2/privatization/uc_introduction.md
@@ -0,0 +1,130 @@
+# 产品概述
+
+
+
+环信即时通讯私有化服务是基于 IM 核心技术实现的可私有化部署解决方案。本方案可适配内网物理服务器集群、公有云以及私有云等任意部署环境,提供功能完备、安全可靠、易于扩展的即时通讯平台。整体通讯平台架构主要由三部分组成,分别为客户端、服务端、Web 控制台。
+
+- **客户端**:采用 SDK 形式,对核心通信模块进行封装,提供场景功能接口,覆盖多种平台(包括:Android、iOS、Web、小程序、 Windows/Mac OS、Linux),支持快速集成终端用户应用。
+- **服务端**:采用 Java 和 Erlang 语言编写,可支持用户高并发连接和系统动态调配,高效处理用户长连接相关的服务和用户管理、推送等无状态服务。同时提供服务端 REST API 和 Java Server SDK 接口,便于完成即时通讯软件中服务的控制、数据的转发存储工作。
+- **Web 控制台**:是基于 B/S 模式的可视化操作平台,可支持开通与配置应用功能,查询各类 IM 服务情况,管理与维护用户体系(增、删、改、查),满足系统管理员、开发者等多种业务角色使用需求,提升业务集成与运营管理效率。
+
+
+## 平台架构
+
+![环信 IM 后台](@static/images/privitization/framework.jpg?w=50)
+
+
+## 集成概述
+
+当私有化服务部署后,开发者主要需要了解服务器端集成和客户端集成内容。
+
+![img](@static/images/product/integration-overview.png)
+
+服务端集成请看:[环信即时通讯 REST API 概览](/document/v2/server-side/overview.html)。
+
+客户端 Demo 体验请查看:
+
+[Android Demo(EaseIM App)体验](/document/v2/android/demo.html)
+
+[iOS Demo(EaseIM App)体验](/document/v2/ios/demo.html)
+
+客户端集成请查看相应的环信 SDK 开发文档:
+
+[环信即时通讯 IM Android 快速开始](/document/v2/android/quickstart.html);
+
+[环信即时通讯 IM iOS 快速开始](/document/v2/ios/quickstart.html);
+
+[环信即时通讯 IM Web 快速开始](/document/v2/web/quickstart.html)。
+
+## 功能概述
+
+用环信即时通讯能实现以下功能:
+
+### 单聊
+
+环信单聊,支持丰富的消息类型,以及离线消息、漫游消息等功能。
+
+### 群聊
+
+环信群聊,支持丰富的消息类型,支持完整的群组管理能力,包含发布群公告、设置群角色等。
+
+### 用户管理
+
+提供用户体系管理能力,如:好友管理、黑名单管理等。支持用户资料存储,包括:头像、昵称、自定义用户信息等。
+
+### 丰富的消息类型
+
+支持单聊/群聊中,发送文本、表情、图片、语音、视频、地理位置、文件,以及红包和礼物等的自定义消息。
+
+### 第三方消息推送
+
+消息推送指当应用在后台运行,或进程被杀时,用户处于离线状态,新消息在发送至环信服务器后,会被转发至第三方推送服务器进行推送,以确保该消息依然可以送达客户端。推送消息在安卓端是使用 Firebase Cloud Message(FCM) 实现,在 iOS 端使用 Apple Push Notification service(APNs) 实现。
+
+### 多端消息同步
+
+环信支持一个账号同时登录多台设备,可实现终端用户的消息通过服务器保存和同步,保证各端均能收发消息同步。
+
+### 消息撤回
+
+消息发出后可以进行消息撤回,提供 SDK 和 REST API 端两种撤回方式。
+
+## 适用场景
+
+环信适用于端到端实时消息沟通的场景:
+
+- 应用内聊天(如:陌生人社交、相亲等)
+ - 支持丰富的消息类型、好友关系管理
+ - 支持群管理能力、群公告设置、群角色设置等
+- 应用内通知
+ - 支持广播消息、自定义通知消息等
+ - 支持用户管理,包括储存用户信息、用户封禁等
+- 视频/语音直播
+ - 支持聊天室管理能力
+ - 支持丰富类型的聊天室消息,包括弹幕、红包、礼物等
+- 企业协作
+ - 支持用户管理,设置企业组织架构、好友关系管理
+ - 支持群管理能力、群公告设置、群附件发送、群角色设置等
+- 买家卖家沟通
+ - 支持订单通知、问候语设置、自定义消息发送
+ - 支持卖家内部管理、公告设置、成员管理等
+- 线上问诊
+ - 支持丰富的消息类型,图文病情描述、语音消息等
+ - 支持用户信息存储、用户身份管理等
+
+## 产品优势
+
+环信主要有以下优势:
+
+### 部署多样化
+
+环信即时通讯系统支持 Linux 裸系统、容器化等多种部署方式。不仅可以提供更灵活、更便捷、更稳定的平台性能,同时容器化部署可实现自动部署,具备服务自动发现、服务自动负载均衡等特点。
+
+### 高可用
+
+环信即时通讯系统具备高可用特性,当系统内某一个节点或主机出现宕机后,该故障节点上的所有服务会自动转移到其他节点上而不会引发服务中断,保障系统可用性。
+
+### 易扩展
+
+环信即时通讯系统服务架构支持弹性扩展,系统内所有资源可在各节点之间实现灵活调度,当 CPU、内存等计算资源利用率较高时,可通过横向添加 node 实现平滑扩容。
+
+### 安全性
+
+环信即时通讯系统实现通讯全流程安全加密,支持客户端敏感信息加密存储、服务器密钥权限管理、消息传输过程私有协议加密以及用户信息隐私保护等措施。
+
+### 国产化
+
+环信即时通讯系统严格遵循国家法律法规和技术标准规范,积极响应国内自主可控、安全可控要求,从 IT 基础设置、操作系统、数据库等方面进行国产化升级,满足信创环境部署要求。
+
+### 多平台
+
+环信即时通讯 IM 支持 Android、iOS、Web 等平台,而且各平台之间可互通。下表为即时通讯支持的各平台版本:
+
+| 平台 | 支持的版本 |
+| ------------ | ------------------------------------------------------------ |
+| Android | Android 5.0 或以上版本(API 级别 21 或以上) |
+| iOS | iOS 10.0 或以上版本 |
+| Web |
- Internet Explorer 9 或以上
- FireFox 10 或以上
- Chrome 54 或以上 Safari 6 或以上
- Edge 12 或以上
- Opera 58 或以上
- iOS Safari 7 或以上
- Android Browser 4.4 (KitKat) 或以上 |
+| Unity | Unity 2017 或以上版本 |
+| Windows | Windows 10 或以上版本 |
+| React Native | React Native 0.63.4 或以上版本 |
+| Flutter | Flutter 2.10 |
\ No newline at end of file
diff --git a/docs/document/v2/privatization/uc_limitation.md b/docs/document/v2/privatization/uc_limitation.md
new file mode 100644
index 000000000..e09779593
--- /dev/null
+++ b/docs/document/v2/privatization/uc_limitation.md
@@ -0,0 +1,88 @@
+# 限制条件
+
+
+
+本文简要介绍环信即时通讯 IM 的使用限制条件,包括调用频率、字符串大小和编码格式等。
+
+## 用户注册
+
+- 用户 ID:长度不能超过 64 字节,支持以下字符集:
+ - 26 个小写英文字母 a-z;
+ - 26 个大写英文字母 A-Z;
+ - 10 个数字 0-9;
+ - “_”, “-”, “.”。
+
+:::notice
+- 该参数不区分大小写,因此 Aa 和 aa 为相同用户名;
+- 请确保同一个 app 下,用户 ID 唯一;
+- 用户 ID 是会公开的信息,请勿使用 UUID、邮箱地址、手机号等敏感信息。
+:::
+- 批量注册每次最多 60 个用户 ID。
+
+## 好友数限制
+
+私有部署用户好友数无上限
+
+## 消息存储时长限制
+
+私有部署消息存储时长支持自定义,默认配置14天,可在部署前约定存储时间:
+
+## 群组限制
+
+私有部署群组有如下限制:
+
+- 群组总数上限:100,000 个
+- 群成员数:2000人/群,可支持调整至8000人/群
+- 用户可加入群组数:无限制
+
+
+群组属性和群成员属性的限制如下:
+- 群组名称,字符串类型,最大长度为 128 字符。
+- 群组描述,字符串类型,最大长度为 512 字符。
+- 群组扩展信息,例如可以给群组添加业务相关的标记,最大长度为 1,024 字符。
+- 单个群成员的自定义属性(key-value)总长度不能超过 4 KB。对于单个自定义属性,属性 key 不能超过 16 字节,value 不能超过 512 个字节。
+
+## 聊天室限制
+
+私有部署聊天室有如下限制:
+- 聊天室总数:无限制。
+- 聊天室名称,用户自定义,字符串类型,最大长度为 128 字符。
+- 聊天室描述,用户自定义,字符串类型,最大长度为 512 字符。
+
+### 聊天室自定义属性(key-value)
+
+每个聊天室最多可有 100 个自定义属性,每个应用的聊天室自定义属性总大小不超过 10 GB。
+
+聊天室自定义属性为键值对(key-value)结构,单个 key 不能超过 128 个字符,支持以下字符集:
+- 26 个小写英文字母 a-z;
+- 26 个大写英文字母 A-Z;
+- 10 个数字 0-9;
+- “_”, “-”, “.”。
+
+每个聊天室属性 value 不能超过 4096 个字符。
+
+## 调用频率限制
+
+私有部署Rest API 调用频率支持设置无限制。
+
+## 消息大小限制
+
+对于不同的消息类型,消息长度限制如下:
+
+| 消息类型 | 消息长度限制 |
+| :------------- | :----------------------------------- |
+| 文本消息 | 3 KB |
+| 图片消息 | 图片不能超过 10 MB,图片消息大小限制为 3 KB。 |
+| 语音消息 | 音频文件不能超过 10 MB,语音消息大小限制为 3 KB。 |
+| 视频消息 | 视频文件不能超过 10 MB,视频消息大小限制为 3 KB。 |
+| 文件消息 | 附件大小不能超过 10 MB,文件消息大小限制为 3 KB。 |
+| 透传消息 | 3 KB |
+| 自定义消息 | 3 KB |
+
+## 用户属性大小限制
+
+默认单一用户的属性总长不得超过 2 KB。默认一个 app 下所有用户的属性总长度不得超过 10 GB。
+
+## 消息撤回
+
+默认撤回时限为 2 分钟,可根据 App Key 在环信即时通讯云管理后台单独设置。
diff --git a/docs/document/v2/privatization/uc_private.md b/docs/document/v2/privatization/uc_private.md
index 468bb6df4..5d5cbe6bc 100644
--- a/docs/document/v2/privatization/uc_private.md
+++ b/docs/document/v2/privatization/uc_private.md
@@ -1,46 +1,14 @@
-# 私有化即时通讯
+# 私有化 SDK 下载
-
-[下载私有化 SDK >>](#私有化-sdk-下载)。
-环信即时通讯私有化服务是基于 IM 核心技术实现的可私有化部署解决方案。本方案可适配内网物理服务器集群、公有云以及私有云等任意部署环境,提供功能完备、安全可靠、易于扩展的即时通讯平台。整体通讯平台架构主要由三部分组成,分别为客户端、服务端、Web 控制台。
-
-- **客户端**:采用 SDK 形式,对核心通信模块进行封装,提供场景功能接口,覆盖多种平台(包括:Android、iOS、Web、小程序、 Windows/Mac OS、Linux),支持快速集成终端用户应用。
-- **服务端**:采用 Java 和 Erlang 语言编写,可支持用户高并发连接和系统动态调配,高效处理用户长连接相关的服务和用户管理、推送等无状态服务。同时提供服务端 REST API 和 Java Server SDK 接口,便于完成即时通讯软件中服务的控制、数据的转发存储工作。
-- **Web 控制台**:是基于 B/S 模式的可视化操作平台,可支持开通与配置应用功能,查询各类 IM 服务情况,管理与维护用户体系(增、删、改、查),满足系统管理员、开发者等多种业务角色使用需求,提升业务集成与运营管理效率。
-
-## 私有化服务优势
-
-### 部署多样化
-
-环信即时通讯系统支持 Linux 裸系统、容器化等多种部署方式。不仅可以提供更灵活、更便捷、更稳定的平台性能,同时容器化部署可实现自动部署,具备服务自动发现、服务自动负载均衡等特点。
-
-### 高可用
-
-环信即时通讯系统具备高可用特性,当系统内某一个节点或主机出现宕机后,该故障节点上的所有服务会自动转移到其他节点上而不会引发服务中断,保障系统可用性。
-
-### 易扩展
-
-环信即时通讯系统服务架构支持弹性扩展,系统内所有资源可在各节点之间实现灵活调度,当 CPU、内存等计算资源利用率较高时,可通过横向添加 node 实现平滑扩容。
-
-### 安全性
-
-环信即时通讯系统实现通讯全流程安全加密,支持客户端敏感信息加密存储、服务器密钥权限管理、消息传输过程私有协议加密以及用户信息隐私保护等措施。
-
-### 国产化
-
-环信即时通讯系统严格遵循国家法律法规和技术标准规范,积极响应国内自主可控、安全可控要求,从 IT 基础设置、操作系统、数据库等方面进行国产化升级,满足信创环境部署要求。
-
-## 私有化 SDK 下载
环信客户端及服务端 SDK 已对 IM 核心服务完成封装,通过调用 SDK API 接口,即可快速获得消息收发、会话管理、群组、好友、聊天室等功能,目前客户端 SDK 已覆盖 Windows、Linux、MacOS、Android、iOS、Web、小程序等多种平台,服务器端 SDK 已覆盖 Java、PHP 等平台,各端 SDK 下载及开发指南如下所示。
:::tip
-1. 若要体验环信即时通讯 IM 的功能,可下载[公有云 Demo](https://www.easemob.com/download/demo)。
-2. 若要体验私有化 Demo,需下载下表中对应平台的 Demo,然后在登录页面的**服务器配置**区域完成配置。
-3. 若要集成,需选择下表中的 SDK 及 Demo 版本,按照下表中**开发指南**一列的文档配置私有化环境信息。
+1. 若要体验私有化 Demo,需下载下表中对应平台的 Demo,然后在登录页面的**服务器配置**区域完成配置。
+2. 若要集成,需选择下表中的 SDK 及 Demo 版本,按照下表中**开发指南**一列的文档配置私有化环境信息。
:::
@@ -73,41 +41,41 @@
Android
-
+
-
+
-
+
-Web
+iOS
-
+
-• React: 下载 SDK 及 Demo 体验 Demo
• Vue 2: 下载 SDK 及 Demo
• Vue 3: 下载 SDK 及 Demo
+
-
+
-iOS
+Web
-
+
-
+• React: 下载 SDK 及 Demo 体验 Demo
• Vue 2: 下载 SDK 及 Demo
• Vue 3: 下载 SDK 及 Demo
-
+
@@ -129,13 +97,13 @@
Windows(C#)
-
+
-
+
-
+
@@ -149,7 +117,7 @@
-
+
@@ -163,7 +131,7 @@
-
+
@@ -171,13 +139,13 @@
uni-app
-
+
-
+
-
+
@@ -185,13 +153,13 @@
小程序
-
+
-
+
-
+
@@ -199,25 +167,27 @@
Unity
-3.9.0
+
+
+
+
-
+
-
Flutter
-
+
-
+
-
+
@@ -229,13 +199,13 @@
Java
-
+
-
+
-
+
@@ -249,7 +219,7 @@
-
+
diff --git a/docs/document/v2/react-native/error.md b/docs/document/v2/react-native/error.md
index d5b27ef51..4d9526bf8 100644
--- a/docs/document/v2/react-native/error.md
+++ b/docs/document/v2/react-native/error.md
@@ -2,6 +2,6 @@
-[Android 平台](/document/android/error.html)
+[Android 平台](/document/v2/android/error.html)
-[iOS 平台](/document/ios/error.html)
\ No newline at end of file
+[iOS 平台](/document/v2/ios/error.html)
\ No newline at end of file
diff --git a/docs/document/v2/react-native/group_attributes.md b/docs/document/v2/react-native/group_attributes.md
index 0faf432de..4ad815e8f 100644
--- a/docs/document/v2/react-native/group_attributes.md
+++ b/docs/document/v2/react-native/group_attributes.md
@@ -18,8 +18,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/react-native/group_manage.md b/docs/document/v2/react-native/group_manage.md
index d72c6622f..09cb98036 100644
--- a/docs/document/v2/react-native/group_manage.md
+++ b/docs/document/v2/react-native/group_manage.md
@@ -21,8 +21,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/react-native/group_members.md b/docs/document/v2/react-native/group_members.md
index 04e17703a..a61ed3a86 100644
--- a/docs/document/v2/react-native/group_members.md
+++ b/docs/document/v2/react-native/group_members.md
@@ -22,9 +22,9 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
- 了解群成员角色,详见 [群组概述](group_overview.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+
## 实现方法
diff --git a/docs/document/v2/react-native/message_manage.md b/docs/document/v2/react-native/message_manage.md
index f92db62dd..d8fdab424 100644
--- a/docs/document/v2/react-native/message_manage.md
+++ b/docs/document/v2/react-native/message_manage.md
@@ -18,7 +18,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -120,7 +120,7 @@ ChatClient.getInstance()
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。
-你可以调用 `fetchHistoryMessages` 方法从服务器分页获取指定会话的历史消息。该功能需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
+你可以调用 `fetchHistoryMessages` 方法从服务器分页获取指定会话的历史消息。
为确保数据可靠,我们建议你多次调用该方法,且每次获取的消息数小于 50 条。获取到数据后,SDK 会自动将消息更新到本地数据库。
@@ -202,8 +202,7 @@ ChatClient.getInstance()
#### 单向删除服务端会话及其历史消息
-你可以调用 `removeConversationFromServer` 方法删除服务器端会话和历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息,对本地的会话无影响,但会删除本地消息,而其他用户不受影响。该功能需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-
+你可以调用 `removeConversationFromServer` 方法删除服务器端会话和历史消息。会话和消息删除后,当前用户无法从服务器获取该会话和消息,对本地的会话无影响,但会删除本地消息,而其他用户不受影响。
示例代码如下:
```typescript
diff --git a/docs/document/v2/react-native/message_modify.md b/docs/document/v2/react-native/message_modify.md
index f3e972259..b5fd7429f 100644
--- a/docs/document/v2/react-native/message_modify.md
+++ b/docs/document/v2/react-native/message_modify.md
@@ -9,7 +9,7 @@
若使用该功能,需将 SDK 升级至 1.2.0 或以上版本。
:::
-你可以调用 `modifyMessageBody` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。
+你可以调用 `modifyMessageBody` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次。
示例代码如下:
diff --git a/docs/document/v2/react-native/message_receipt.md b/docs/document/v2/react-native/message_receipt.md
index 24dbd0ea2..fffdf339c 100644
--- a/docs/document/v2/react-native/message_receipt.md
+++ b/docs/document/v2/react-native/message_receipt.md
@@ -3,7 +3,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -36,8 +36,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
@@ -230,7 +230,7 @@ ChatClient.getInstance()
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 消息发送方需要知道群组消息是否已读,需要监听 `onGroupMessageRead` 事件。
diff --git a/docs/document/v2/react-native/message_send_receive.md b/docs/document/v2/react-native/message_send_receive.md
index a947c2f99..9c82fa32b 100644
--- a/docs/document/v2/react-native/message_send_receive.md
+++ b/docs/document/v2/react-native/message_send_receive.md
@@ -39,7 +39,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -135,7 +135,7 @@ ChatClient.getInstance().chatManager.removeAllMessageListener();
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
```typescript
ChatClient.getInstance()
diff --git a/docs/document/v2/react-native/message_translation.md b/docs/document/v2/react-native/message_translation.md
index 1cc48d951..aabe0029e 100644
--- a/docs/document/v2/react-native/message_translation.md
+++ b/docs/document/v2/react-native/message_translation.md
@@ -12,7 +12,7 @@
开始前,请确保满足以下条件:
1. 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
3. 已在 [环信即时通讯云控制台](https://console.easemob.com/user/login) 开通翻译功能。
4. 该功能由 Microsoft Azure Translation API 提供,因此开始前请确保你了解该功能支持的目标语言。详见 [翻译语言支持](https://docs.microsoft.com/en-us/azure/cognitive-services/translator/language-support)。
diff --git a/docs/document/v2/react-native/multi_device.md b/docs/document/v2/react-native/multi_device.md
index 78baee4a0..f227112ef 100644
--- a/docs/document/v2/react-native/multi_device.md
+++ b/docs/document/v2/react-native/multi_device.md
@@ -11,7 +11,7 @@
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+你可以在环信控制台的**服务管理** > **服务概览**页面的下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
![img](@static/images/common/multidevice_device_count.png)
@@ -24,7 +24,7 @@
-
+
单端/多端登录
@@ -38,7 +38,7 @@
多端登录
- 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
+ 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。
即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
@@ -62,8 +62,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 的套餐包,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
@@ -151,7 +151,7 @@ ChatClient.getInstance()
你可以按照以下步骤设置登录设备所属的平台:
-1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+1. 在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
diff --git a/docs/document/v2/react-native/overview.md b/docs/document/v2/react-native/overview.md
index 413769d64..bbc0c2eed 100644
--- a/docs/document/v2/react-native/overview.md
+++ b/docs/document/v2/react-native/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -71,15 +71,15 @@ ChatClient.getInstance()
- 通过控制台注册。
- 通过 REST API 接口注册。
-- 调用 SDK 接口注册。该方法需在 [控制台](https://console.easemob.com/app/im-service/detail) 设置允许 **开放注册**。
+- 调用 SDK 接口注册。该方法需在 [控制台](/document/v2/privatization/uc_configure.html) 设置允许 **开放注册**。
### 控制台注册
-控制台的注册请到 [这里](https://console.easemob.com/app/im-service/operative-service/user)。
+控制台的注册请到 **运营服务->用户管理** 页面下进行注册。
### REST API 注册
-请参考 [注册用户](/document/server-side/account_system.html#注册用户)。
+请参考 [注册用户](/document/v2/server-side/account_system.html#注册用户)。
### SDK 注册
@@ -101,7 +101,7 @@ ChatClient.getInstance()
- 用户 ID + 密码
- 用户 ID + token
-手动登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+手动登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
调用登录接口后,收到 `onConnected` 回调表明 SDK 与环信服务器连接成功。
@@ -120,7 +120,7 @@ ChatClient.getInstance()
});
```
-**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取。 详见 [环信用户 token 的获取](/document/server-side/easemob_user_token.html)。
+**用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取。 详见 [环信用户 token 的获取](/document/v2/server-side/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。
diff --git a/docs/document/v2/react-native/presence.md b/docs/document/v2/react-native/presence.md
index 6bae9d171..ae84dda05 100644
--- a/docs/document/v2/react-native/presence.md
+++ b/docs/document/v2/react-native/presence.md
@@ -35,8 +35,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/react-native/quickstart.md b/docs/document/v2/react-native/quickstart.md
index b242004a2..7542e8107 100644
--- a/docs/document/v2/react-native/quickstart.md
+++ b/docs/document/v2/react-native/quickstart.md
@@ -41,7 +41,7 @@
### 其他要求
-有效的环信即时通讯 IM 开发者账号和 App key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+有效的环信即时通讯 IM 开发者账号和 App key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 项目设置
@@ -494,4 +494,4 @@ demo 的界面:
## 更多操作
-为了保证安全性,我们推荐使用 `username + password + token` 方式创建用户,token 在你的 app server 生成供客户端获取,当 token 过期时你需要重新获取。详见 [获取 user token](/product/easemob_user_token)。
+为了保证安全性,我们推荐使用 `username + password + token` 方式创建用户,token 在你的 app server 生成供客户端获取,当 token 过期时你需要重新获取。详见 [获取 user token](/document/v2/server-side/easemob_user_token.html)。
diff --git a/docs/document/v2/react-native/reaction.md b/docs/document/v2/react-native/reaction.md
index 17e7b40fe..7fa2a7210 100644
--- a/docs/document/v2/react-native/reaction.md
+++ b/docs/document/v2/react-native/reaction.md
@@ -24,8 +24,8 @@ Reaction 场景示例如下:
开始前,请确保满足以下条件:
1. 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/react-native/releasenote.md b/docs/document/v2/react-native/releasenote.md
index 2bf6c4f2a..92a76f9a7 100644
--- a/docs/document/v2/react-native/releasenote.md
+++ b/docs/document/v2/react-native/releasenote.md
@@ -240,11 +240,10 @@
- 消息表情回复;
- 管理子区等。
-关于详细功能概述请参见: [产品概述](/product/introduction.html).
具体集成请参考以下文档:
-- [开通配置环信即时通讯 IM 服务](/product/enable_and_configure_IM.html)
+- [开通配置环信即时通讯 IM 服务](/document/v2/privatization/uc_configure.html)
- [环信即时通讯 IM React-Native 快速开始](quickstart.html)
- [消息管理 React Native](message_overview.html)
- [群组](group_overview.html)
diff --git a/docs/document/v2/react-native/room_attributes.md b/docs/document/v2/react-native/room_attributes.md
index 0fb77c77d..3bbc574c9 100644
--- a/docs/document/v2/react-native/room_attributes.md
+++ b/docs/document/v2/react-native/room_attributes.md
@@ -20,8 +20,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/react-native/room_manage.md b/docs/document/v2/react-native/room_manage.md
index 43b101b8c..0a4466072 100644
--- a/docs/document/v2/react-native/room_manage.md
+++ b/docs/document/v2/react-native/room_manage.md
@@ -24,9 +24,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 不同版本的聊天室相关数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
-- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/server-side/chatroom.html#添加超级管理员)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/v2/server-side/chatroom.html#添加超级管理员)。
- 聊天室创建者和管理员的数量之和不能超过 100,即管理员最多可添加 99 个。
## 实现方法
@@ -35,9 +34,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/react-native/room_members.md b/docs/document/v2/react-native/room_members.md
index 7eedeec75..71daeb3c6 100644
--- a/docs/document/v2/react-native/room_members.md
+++ b/docs/document/v2/react-native/room_members.md
@@ -21,8 +21,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 聊天室相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+
## 实现方法
diff --git a/docs/document/v2/react-native/thread.md b/docs/document/v2/react-native/thread.md
index 857516fe8..772c3cbca 100644
--- a/docs/document/v2/react-native/thread.md
+++ b/docs/document/v2/react-native/thread.md
@@ -23,9 +23,8 @@
开始前,请确保满足以下条件:
- 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/react-native/thread_message.md b/docs/document/v2/react-native/thread_message.md
index 455dc7de6..b7754e0ae 100644
--- a/docs/document/v2/react-native/thread_message.md
+++ b/docs/document/v2/react-native/thread_message.md
@@ -30,7 +30,7 @@
开始前,请确保满足以下条件:
- 已集成 `1.0.5 或以上版本` SDK 的基本功能,完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
- 联系商务开通子区功能。
## 实现方法
diff --git a/docs/document/v2/react-native/user_relationship.md b/docs/document/v2/react-native/user_relationship.md
index f4300bc18..4ab823af2 100644
--- a/docs/document/v2/react-native/user_relationship.md
+++ b/docs/document/v2/react-native/user_relationship.md
@@ -30,7 +30,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/react-native/userprofile.md b/docs/document/v2/react-native/userprofile.md
index 7d955d214..bb87a3a0f 100644
--- a/docs/document/v2/react-native/userprofile.md
+++ b/docs/document/v2/react-native/userprofile.md
@@ -25,7 +25,7 @@
设置用户属性前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html) 及 [SDK 集成概述](overview.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -60,7 +60,7 @@ ChatClient.getInstance()
});
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 描述 |
| :---------- | :----- | :----------------------------------------------------------- |
diff --git a/docs/document/v2/server-side/account_system.md b/docs/document/v2/server-side/account_system.md
index 575c1979e..30ffb47a7 100644
--- a/docs/document/v2/server-side/account_system.md
+++ b/docs/document/v2/server-side/account_system.md
@@ -12,9 +12,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
### 响应参数
@@ -43,7 +43,7 @@
- 已在环信即时通讯云控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
- 已从服务端获取 app token,详见 [使用 App Token 鉴权](easemob_app_token.html)。
-- 了解环信 IM API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 认证方式
@@ -57,7 +57,7 @@
### 开放注册单个用户
-开放注册指用户可以在登录客户端 SDK 后自行通过账号密码注册账号。一般在体验 Demo 和测试开发环境时使用,使用前需先在[环信即时通讯云控制后台](https://console.easemob.com/user/login)打开相应应用的开放注册开关,即在控制台首页的 **应用列表** 下点击目标应用的 **操作** 一栏中的 **查看**,然后选择 **即时通讯** > **服务概览**,在页面的 **设置** 区域中将 **用户注册模式** 设置为 **开放注册**。
+开放注册指用户可以在登录客户端 SDK 后自行通过账号密码注册账号。一般在体验 Demo 和测试开发环境时使用,使用前需先在环信即时通讯云控制后台打开相应应用的开放注册开关,即在控制台首页的 **应用列表** 下点击目标应用的 **操作** 一栏中的 **管理**,然后选择 **应用概览** > **应用详情**,在页面的 **应用设置** 区域中将 **用户注册模式** 设置为 **开放注册**。
#### HTTP 请求
@@ -136,7 +136,7 @@ curl -X POST -i "https://XXXX.com/XXXX-demo/XXXX/users" -d '{"username":"user1",
要使用该注册方式,你需要在环信控制台进行如下配置:
-在控制台首页的 **应用列表** 下点击目标应用的 **操作** 一栏中的 **查看**,然后选择 **即时通讯** > **服务概览**,在页面的 **设置** 区域中将**用户注册模式**设置**授权注册**,然后单击**保存**。
+即在控制台首页的 **应用列表** 下点击目标应用的 **操作** 一栏中的 **管理**,然后选择 **应用概览** > **应用详情**,在页面的 **应用设置** 区域中将 **用户注册模式** 设置**授权注册**,然后单击**保存**。
推荐使用该模式,因为该模式较为安全,可防止已获取了注册 URL 和了解注册流程的某些人恶意向服务器大量注册垃圾用户。
@@ -1051,7 +1051,7 @@ curl --location 'http://XXXX/XXXX/XXXX/users/XXXX/resources' \
该功能可广泛用于实时互动 app 中,例如发现某用户频繁向多个聊天室发送违规广告,则可以对该用户开启全局聊天室禁言 15 天;发现某用户发表触犯红线的政治言论,则可以全局永久禁言,用户申诉通过后可以解禁。
-使用该功能前,你需先查看你的 IM 套餐版本是否开通了该功能。该功能与 IM 套餐包版本之间的开通关系,详见[产品计费](introduction.html#增值服务费用)。
+
### 设置用户全局禁言
diff --git a/docs/document/v2/server-side/callback.md b/docs/document/v2/server-side/callback.md
index 4805fa2ee..a245524e6 100644
--- a/docs/document/v2/server-side/callback.md
+++ b/docs/document/v2/server-side/callback.md
@@ -36,7 +36,7 @@
- 回调的方向是环信 IM 服务器向应用服务器发起 HTTP/HTTPS POST 请求。
- 若同时设置了消息发送前和发送后两种回调,且消息发送前回调返回拒绝,则消息发送后回调将不会被触发。
-- 对同一个 app,可以针对不同类型的消息(“TEXT”,“IMAGE”,“VIDEO”,“LOCATION”,“VOICE” 和 ”FILE”)做配置;规则支持选择两种以上消息类型同时回调至一个指定服务器地址,接收到消息后,你可以区分消息的类型以便进行分类处理(详见 [消息管理 REST API](message.html))。
+- 对同一个 app,可以针对不同类型的消息(“TEXT”,“IMAGE”,“VIDEO”,“LOCATION”,“VOICE” 和 ”FILE”)做配置;规则支持选择两种以上消息类型同时回调至一个指定服务器地址,接收到消息后,你可以区分消息的类型以便进行分类处理(详见 [消息管理 REST API](message_single.html))。
- 环信 IM 服务器执行发送前回调后,如果你的应用服务器没有返回 valid 状态或者返回其他错误码,该条消息会根据默认设置(console 后台发送前回调中 ”调用失败时默认策略”)处理,不会再重试;后续消息依然正常执行回调。
- 消息发送到你的应用服务器后,应用服务器需返回 HTTP 响应码 200 和 valid 属性,根据 valid 状态决定是否进行下发。
@@ -85,7 +85,7 @@
| `msg_id` | 消息的 ID。 |
| `payload` | 消息内容,与通过 REST API 发送过来的一致,查看 [消息格式文档](message_historical.html#历史消息记录的内容)。 |
| `securityVersion` | 安全校验版本,目前为 1.0.0。忽略此参数,以后会改成 Console 后台做设置。 |
-| `security` | 签名,格式如下: MD5(callId+Secret+timestamp)。Secret 见 [环信即时通讯云控制台](https://console.easemob.com/user/login)回调规则。 |
+| `security` | 签名,格式如下: MD5(callId+Secret+timestamp)。Secret 见 环信即时通讯云控制台 回调规则。 |
#### 响应 body
@@ -148,7 +148,7 @@
以下是需要了解的发送后回调功能说明,包括在高并发可用性的基础上的使用限制说明,请按照此限制正确使用回调。
-- 消息回调属于增值服务,需要开通相应版本后才能使用,具体见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 开通消息回调服务。
- 消息回调规则设置成功即可正常使用。最多支持 4 个回调规则(包含发送前回调和发送后回调),如果需要再增加回调规则,需要联系商务经理开通。
- 发送后回调范围,所有上行消息有效(包含 REST 发送的消息),包含单聊/群聊;如果 app 开通了反垃圾/敏感词过滤,被识别的消息会在服务器被拦截并禁止发送,将不会回调。
- 发送后回调接收延时,是指消息服务器接收到客户端上行消息、再将消息成功回调至客户指定服务器地址的时间间隔。消息接收延时保障是 99.95% 的消息在 30s 内。
@@ -165,7 +165,7 @@
具体如下:
-1. App Key 可以配置回调规则的数据格式,可以配置多个回调规则(默认最多开通 4 个规则),开通服务后才允许用户配置,前往 [环信即时通讯云控制台](https://console.easemob.com/) 配置:
+1. App Key 可以配置回调规则的数据格式,可以配置多个回调规则(默认最多开通 4 个规则),开通服务后才允许用户配置,前往 [环信即时通讯云控制台](enable_and_configure_IM.html#配置消息回调) 配置:
| 参数 | 说明 |
| :----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -265,8 +265,8 @@ app 的响应内容不能超过 1,000 个字符,否则环信服务器会认为
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
#### 请求 header
@@ -339,8 +339,8 @@ curl -X GET 'https://a1.easemob.com/easemob-demo/easeim/callbacks/storage/info'
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
#### 请求 header
diff --git a/docs/document/v2/server-side/chatroom.md b/docs/document/v2/server-side/chatroom.md
index 7db2119f0..17f377676 100644
--- a/docs/document/v2/server-side/chatroom.md
+++ b/docs/document/v2/server-side/chatroom.md
@@ -13,7 +13,7 @@
要调用环信即时通讯 RESTful API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见[接口频率限制](limitationapi.html)。
+
## 聊天室成员角色
@@ -29,9 +29,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :------------ | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `chatroom_id` | String | 是 | 聊天室 ID。 |
| `username` | String | 是 | 用户 ID。 |
| `name` | String | 是 | 聊天室名称,最大长度为 128 个字符。 |
diff --git a/docs/document/v2/server-side/easemob_app_token.md b/docs/document/v2/server-side/easemob_app_token.md
index d517b3cb1..9ffb2c42c 100644
--- a/docs/document/v2/server-side/easemob_app_token.md
+++ b/docs/document/v2/server-side/easemob_app_token.md
@@ -1,6 +1,6 @@
---
{
- pageUri: "/product/easemob_app_token.html",
+ pageUri: "/document/v2/privatization/easemob_app_token.html",
title: "使用环信 App Token 鉴权"
}
---
\ No newline at end of file
diff --git a/docs/document/v2/server-side/easemob_user_token.md b/docs/document/v2/server-side/easemob_user_token.md
index cb2a72c95..c5302333f 100644
--- a/docs/document/v2/server-side/easemob_user_token.md
+++ b/docs/document/v2/server-side/easemob_user_token.md
@@ -1,6 +1,6 @@
---
{
- pageUri: "/product/easemob_user_token.html",
+ pageUri: "/document/v2/privatization/easemob_user_token.html",
title: "使用环信用户 token 鉴权"
}
---
\ No newline at end of file
diff --git a/docs/document/v2/server-side/enable_and_configure_IM.md b/docs/document/v2/server-side/enable_and_configure_IM.md
index f94b58f39..3102c72b7 100644
--- a/docs/document/v2/server-side/enable_and_configure_IM.md
+++ b/docs/document/v2/server-side/enable_and_configure_IM.md
@@ -1,6 +1,6 @@
---
{
- pageUri: "/product/enable_and_configure_IM.html",
+ pageUri: "/document/v2/privatization/uc_configure.html",
title: "开通配置环信即时通讯 IM 服务"
}
---
\ No newline at end of file
diff --git a/docs/document/v2/server-side/error.md b/docs/document/v2/server-side/error.md
index c6e434831..99032da2d 100644
--- a/docs/document/v2/server-side/error.md
+++ b/docs/document/v2/server-side/error.md
@@ -53,7 +53,7 @@
| 400 | illegal_argument | “target_type can only be 'users' or 'chatgroups' or 'chatrooms'” | 发送消息时,对象类型(`target_type`)只能传入 `users`、`chatgroups` 或 `chatrooms`。若传入其他值,提示该错误。 |
| 400 | illegal_argument | “username is not legal” | 注册用户时传入的 username 不合法,详见 [用户体系集成](account_system.html#注册用户) |
| 400 | illegal_argument | “This chatmessage request is not supported” | 查询历史消息时传入的时间格式不正确,正确的格式为 YYYYMMDDHH。例如,要获取 2018 年 02 月 09 日 12 点到 13 点的历史消息,传入的时间为 `2018020912`。 |
-| 400 | illegal_argument | “illegal arguments: appkey: easemob-demo#chatdemoui, time: 2018020918, maybe chat message history is expired or unstored” | 查询的历史消息未生成或已过期。消息的保留时间取决于产品套餐,详见[消息存储时长限制](limitation.html#消息存储时长限制)。 |
+| 400 | illegal_argument | “illegal arguments: appkey: easemob-demo#chatdemoui, time: 2018020918, maybe chat message history is expired or unstored” | 查询的历史消息未生成或已过期。消息的保留时间取决于初始设置。 |
| 400 | invalid_parameter | “some of [groupid] are not valid fields” | 修改的群组信息时,传入的参数不支持,例如修改 `groupid`。修改群信息目前只支持修改“群名称”、“群描述” 和 “群最大人数”。 |
| 400 | required_property_not_found | “Entity user requires a property named username” | 修改用户密码请求未提供用户 ID(`username`)。 |
| 400 | duplicate_unique_property_exists | “Application null Entity user requires that property named username be unique, value of hxtest1 exists” | 注册用户时,用户 ID 已存在,请更换用户 ID 重新注册。 注:如果是批量注册,若一次调用返回一个 ID 已存在,则此次调用注册的其他不存在的 ID 不会注册,需将已存在的 ID 从数组中移除重新调用注册。 |
@@ -69,7 +69,7 @@
| 401 | unauthorized | “registration is not open, please contact the app admin” | 授权注册模式下,调用[注册单个用户](account_system.html#授权注册单个用户)和[批量注册用户](account_system.html#批量注册用户)的 RESTful 接口时,未传入 App Token 或传入了错误的 App Token 时提示该错误,例如 Token 已过期或格式不正确。 |
| 401 | unauthorized | “Unable to authenticate due to expired access token” | 调用 RESTful 接口发送请求时使用的 App Token 过期或未传入 App Token。
该错误码针对除[注册单个用户](account_system.html#授权注册单个用户)和[批量注册用户](account_system.html#批量注册用户)之外的 RESTful 接口有效。 |
| 401 | auth_bad_access_token | “Unable to authenticate due to corrupt access token” | 调用 RESTful 接口发送请求时使用的 App Token 格式错误。
该错误码针对除[注册单个用户](account_system.html#授权注册单个用户)和[批量注册用户](account_system.html#批量注册用户)之外的 RESTful 接口有效。 |
-| 401 | auth_bad_access_token | “Unable to authenticate” | 调用 RESTful 接口发送请求时使用的 App Token 无效。App Token 的格式正确,但不是由接收请求的服务器生成的,导致服务器无法识别该 Token。
该错误码针对除[注册单个用户](./agora_chat_restful_regiration#注册单个用户)和[批量注册用户](./agora_chat_restful_regiration#注册单个用户)两个 RESTful 接口之外的接口有效。 |
+| 401 | auth_bad_access_token | “Unable to authenticate” | 调用 RESTful 接口发送请求时使用的 App Token 无效。App Token 的格式正确,但不是由接收请求的服务器生成的,导致服务器无法识别该 Token。
该错误码针对除[注册单个用户](account_system.html#授权注册单个用户)和[批量注册用户](account_system.html#批量注册用户)两个 RESTful 接口之外的接口有效。 |
| 403 | forbidden_op | “can not join this group, reason:user: hxtest1 already in group: 40659491815425\n” | 添加群组或聊天室成员时,被添加用户已在群组或聊天室内。 |
| 403 | forbidden_op | “users [hxtest100] are not members of this group!” | 踢除群组或聊天室成员时,被踢除的用户不在群组或聊天室内。 |
| 403 | forbidden_op | “user: username1 doesn't exist in group: 40659491815425” | 转让群组时,被转让的用户不是群组内成员。 |
@@ -85,7 +85,7 @@
| 413 | Request Entity Too Large | “Request Entity Too Large” | 请求体过大,如上传文件时文件过大,需要拆成几个更小的请求体重试。 |
| 415 | web_application | “Unsupported Media Type” | 请求体的类型不支持,请检查请求头是否添加了 `Content-Type`: `application/json`,请求包体是否符合标准的 JSON 格式,以及请求头中是否有接口不需要的参数。 |
| 429 | resource_limited | “You have exceeded the limit of the Free edition. Please upgrade to higher edition.” | 超过免费版套餐包限制。如需开通其他版本套餐包,需联系环信商务。 |
-| 429 | reach_limit | “This request has reached api limit” | 超过即时通讯 RESTful API 的[调用频率限制](/product/limitation.html)。如果限制条件无法满足你的实际业务需求,需联系请联系环信商务。 |
+| 429 | reach_limit | “This request has reached api limit” | 超过即时通讯 RESTful API 的调用频率限制。 |
| 500 | no_full_text_index | “Entity ‘user’ with property named ‘username’ is not full text indexed. You cannot use the ‘contains’ operand on this field” | username 不支持全文索引,不可以对该字段进行 `contains` 操作。 |
| 500 | unsupported_service_operation | “Service operation not supported” | 请求 URL 不支持该请求方式。 |
| 500 | web_application | “javax.ws.rs.WebApplicationException” | 请求 URL 错误。 |
\ No newline at end of file
diff --git a/docs/document/v2/server-side/group.md b/docs/document/v2/server-side/group.md
index 1192f7902..3ed15bc66 100644
--- a/docs/document/v2/server-side/group.md
+++ b/docs/document/v2/server-side/group.md
@@ -4,14 +4,14 @@
环信即时通讯 IM 提供了 RESTful API 管理 App 中的群组。
-单个 App 创建群组数量有限制,而且单个用户可加入群组的数量视版本而定,详见 [使用限制](limitation.html#群组限制)。
+单个 App 创建群组数量有限制,而且单个用户可加入群组的数量视版本而定,详见 [使用限制](/document/v2/privatization/uc_limitation.html#群组限制)。
## 前提条件
要调用环信即时通讯 RESTful API,请确保满足以下要求:
- 已在环信即时通讯 IM 管理后台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM RESTful API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -19,9 +19,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :--------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `group_id` | String | 是 | 群组 ID。 |
| `username` | String | 是 | 用户 ID。 |
@@ -91,7 +91,7 @@ POST https://{host}/{org_name}/{app_name}/chatgroups
| `description` | String | 是 | 群组描述,最大长度为 512 字符。|
| `public` | Bool | 是 | 是否是公开群。公开群可以被搜索到,用户可以申请加入公开群;私有群无法被搜索到,因此需要群主或群管理员添加,用户才可以加入。
- `true`:公开群;
- `false`:私有群。 |
| `scale` | String | 否 | 群组规模,取决于群成员总数 `maxusers` 参数。
- (默认)`normal`:普通群,即群成员总数不超过 3000。
- `large`:大型群,群成员总数超过 3000。**创建大型群时,该参数必传。**大型群不支持离线推送。如需默认创建大型群,请联系环信商务。|
-| `maxusers` | Int | 否 | 群组最大成员数(包括群主),值为数值类型,默认值 200。不同套餐支持的人数上限不同,详见 [产品价格](https://www.easemob.com/pricing/im)。 |
+| `maxusers` | Int | 否 | 群组最大成员数(包括群主),值为数值类型,默认值 2000。不同套餐支持的人数上限不同,详见[使用限制](/document/v2/privatization/uc_limitation.html#群组限制)。 |
| `allowinvites` | Bool | 是 | 是否允许群成员邀请用户加入群组:
- `true`:群成员可拉人入群;
- (默认)`false`:只有群主或者管理员才可以拉人入群。
注:该参数仅对私有群有效,因为公开群不允许群成员邀请其他用户入群。 |
| `membersonly` | Bool | 否 | 用户申请入群是否需要群主或者群管理员审批。
- `true`:需要;
- (默认)`false`:不需要,用户直接进群。 |
| `invite_need_confirm` | Bool | 否 | 邀请用户入群时是否需要被邀用户同意。
- (默认)`true`:是;
- `false`:否。 |
diff --git a/docs/document/v2/server-side/java_server_sdk.md b/docs/document/v2/server-side/java_server_sdk.md
index 63aa05071..7b235f73e 100644
--- a/docs/document/v2/server-side/java_server_sdk.md
+++ b/docs/document/v2/server-side/java_server_sdk.md
@@ -12,7 +12,7 @@ Server SDK 提供了用户、消息、群组、聊天室等资源的操作管理
- Java 1.8
- [Reactor](https://projectreactor.io/)(io.projectreactor:reactor-bom:2020.0.4)
-- 有效的环信即时通讯 IM 开发者账号和 App Key、Client ID、ClientSecret,登录 [环信管理后台](https://console.easemob.com/user/login) 到“应用列表” → 点击“查看”即可获取到 App Key、Client ID、ClientSecret。
+- 有效的环信即时通讯 IM 开发者账号和 App Key、Client ID、ClientSecret,登录 [环信管理后台](enable_and_configure_IM.html) 到“应用列表” → 点击“管理”即可获取到 App Key、Client ID、ClientSecret。
## 实现方法
@@ -128,7 +128,7 @@ public class Config {
## 参考
- [Server SDK 的 API 文档](https://easemob.github.io/easemob-im-server-sdk/)。
-- [Server SDK 开源地址](https://github.com/easemob/easemob-im-server-sdk)。
+- [Server SDK 开源地址](https://github.com/easemob/easemob-im-server-sdk/tree/v0.7.5)。
## 常见问题
diff --git a/docs/document/v2/server-side/limitation.md b/docs/document/v2/server-side/limitation.md
index c65aa2812..d60f70cf7 100644
--- a/docs/document/v2/server-side/limitation.md
+++ b/docs/document/v2/server-side/limitation.md
@@ -1,6 +1,6 @@
---
{
- pageUri: "/product/limitation.html",
+ pageUri: "/document/v2/privatization/uc_limitation.html",
title: "限制条件"
}
---
\ No newline at end of file
diff --git a/docs/document/v2/server-side/message_chatroom.md b/docs/document/v2/server-side/message_chatroom.md
index 4eed22ad0..0492a75e1 100644
--- a/docs/document/v2/server-side/message_chatroom.md
+++ b/docs/document/v2/server-side/message_chatroom.md
@@ -18,7 +18,6 @@
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
## 公共参数
@@ -26,9 +25,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :----------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
### 响应参数
@@ -88,7 +87,7 @@ POST https://{host}/{org_name}/{app_name}/messages/chatrooms
| `body` | JSON | 是 | 消息内容。body 包含的字段见下表说明。 |
| `sync_device` | Bool | 否 | 消息发送成功后,是否将消息同步到发送方。
- `true`:是;
- (默认)`false`:否。 |
| `routetype` | String | 否 | 若传入该参数,其值为 `ROUTE_ONLINE`,表示接收方只有在线时才能收到消息,若接收方离线则无法收到消息。若不传入该参数,无论接收方在线还是离线都能收到消息。 |
-| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/android/push.html#自定义显示)。 |
+| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/v2/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/v2/android/push.html#自定义显示)。 |
请求体中的 `body` 字段说明详见下表。
@@ -823,7 +822,7 @@ POST https://{host}/{org_name}/{app_name}/messages/chatrooms/users
| `type` | String | 是 | 消息类型:
- `txt`:文本消息;
- `img`:图片消息;
- `audio`:语音消息;
- `video`:视频消息;
- `file`:文件消息;
- `loc`:位置消息;
- `cmd`:透传消息;
- `custom`:自定义消息。 |
| `body` | JSON | 是 | 消息内容。body 包含的字段见下表说明。 |
| `sync_device` | Bool | 否 | 消息发送成功后,是否将消息同步到发送方。
- `true`:是;
- (默认)`false`:否。 |
-| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/android/push.html#自定义显示)。 |
+| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/v2/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/v2/android/push.html#自定义显示)。 |
| `users` | Array | 是 |接收消息的聊天室成员的用户 ID 数组。每次最多可传 20 个用户 ID。|
请求体中的 `body` 字段说明详见下表。
diff --git a/docs/document/v2/server-side/message_download.md b/docs/document/v2/server-side/message_download.md
index a265c6706..cadd9e9ca 100644
--- a/docs/document/v2/server-side/message_download.md
+++ b/docs/document/v2/server-side/message_download.md
@@ -14,7 +14,7 @@
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -22,9 +22,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :----------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
### 响应参数
@@ -83,8 +83,8 @@ POST https://{host}/{org_name}/{app_name}/chatfiles
| 参数 | 类型 | 是否必需 | 描述 |
| :----------------- | :----- | :------- | :--------------- |
| `file` | String | 是 | 文件本地路径。 |
-| `thumbnail-height` | Int | 否 | 缩略图的高度,单位为像素。
- 若上传的原图或视频缩略图小于 10 KB,上传的图片即为缩略图。
- 若上传的图片超过 10 KB,缩略图的高度取决于该参数的设置。
- 若不传该参数,缩略图的高度默认为 170 像素。你也可以在 [环信即时通讯控制台](https://console.easemob.com/user/login)的 `服务概览` 页面的 `设置` 区域修改该默认值。 |
-| `thumbnail-width` | Int | 否 | 缩略图的宽度,单位为像素。
- 若上传的原图或视频缩略图小于 10 KB,图片原图即为缩略图。
- 若上传的图片超过 10 KB,缩略图的宽度取决于该参数的设置。
- 若不传该参数,缩略图的宽度默认为 170 像素。你也可以在 [环信即时通讯控制台](https://console.easemob.com/user/login)的 `服务概览` 页面的 `设置` 区域修改该默认值。 |
+| `thumbnail-height` | Int | 否 | 缩略图的高度,单位为像素。
- 若上传的原图或视频缩略图小于 10 KB,上传的图片即为缩略图。
- 若上传的图片超过 10 KB,缩略图的高度取决于该参数的设置。
- 若不传该参数,缩略图的高度默认为 170 像素。你也可以在 环信即时通讯控制台的 `应用概览>应用详情` 页面的 `应用设置` 区域修改该默认值。 |
+| `thumbnail-width` | Int | 否 | 缩略图的宽度,单位为像素。
- 若上传的原图或视频缩略图小于 10 KB,图片原图即为缩略图。
- 若上传的图片超过 10 KB,缩略图的宽度取决于该参数的设置。
- 若不传该参数,缩略图的宽度默认为 170 像素。你也可以在 环信即时通讯控制台的 `应用概览>应用详情` 页面的 `应用设置` 区域修改该默认值。 |
### HTTP 响应
diff --git a/docs/document/v2/server-side/message_group.md b/docs/document/v2/server-side/message_group.md
index 9a899112d..d29cd8c75 100644
--- a/docs/document/v2/server-side/message_group.md
+++ b/docs/document/v2/server-side/message_group.md
@@ -17,7 +17,7 @@
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -25,9 +25,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :----------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
### 响应参数
@@ -86,7 +86,7 @@ POST https://{host}/{org_name}/{app_name}/messages/chatgroups
| `body` | JSON | 是 | 消息内容。body 包含的字段见下表说明。 |
| `sync_device` | Bool | 否 | 消息发送成功后,是否将消息同步到发送方。
- `true`:是;
- (默认)`false`:否。 |
| `routetype` | String | 否 | 若传入该参数,其值为 `ROUTE_ONLINE`,表示接收方只有在线时才能收到消息,若接收方离线则无法收到消息。若不传入该参数,无论接收方在线还是离线都能收到消息。 |
-| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/android/push.html#自定义显示)。 |
+| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/v2/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/v2/android/push.html#自定义显示)。 |
| `ext.em_ignore_notification` | Bool | 否 | 是否发送静默消息:
- `true`:是;
- (默认)`false`:否。
发送静默消息指用户离线时,环信即时通讯 IM 服务不会通过第三方厂商的消息推送服务向该用户的设备推送消息通知。因此,用户不会收到消息推送通知。当用户再次上线时,会收到离线期间的所有消息。发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方设置不推送消息,而免打扰模式为接收方设置在指定时间段内不接收推送通知。|
请求体中的 `body` 字段说明详见下表。
@@ -829,7 +829,7 @@ POST https://{host}/{org_name}/{app_name}/messages/chatgroups/users
| `type` | String | 是 | 消息类型:
- `txt`:文本消息;
- `img`:图片消息;
- `audio`:语音消息;
- `video`:视频消息;
- `file`:文件消息;
- `loc`:位置消息;
- `cmd`:透传消息;
- `custom`:自定义消息。 |
| `body` | JSON | 是 | 消息内容。body 包含的字段见下表说明。 |
| `sync_device` | Bool | 否 | 消息发送成功后,是否将消息同步到发送方。
- `true`:是;
- (默认)`false`:否。 |
-| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/android/push.html#自定义显示)。 |
+| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/v2/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/v2/android/push.html#自定义显示)。 |
| `ext.em_ignore_notification` | Bool | 否 | 是否发送静默消息:
- `true`:是;
- (默认)`false`:否。
发送静默消息指用户离线时,环信即时通讯 IM 服务不会通过第三方厂商的消息推送服务向该用户的设备推送消息通知。因此,用户不会收到消息推送通知。当用户再次上线时,会收到离线期间的所有消息。发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方设置不推送消息,而免打扰模式为接收方设置在指定时间段内不接收推送通知。|
| `users` | Array | 是 |接收消息的群成员的用户 ID 数组。每次最多可传 20 个用户 ID。|
diff --git a/docs/document/v2/server-side/message_historical.md b/docs/document/v2/server-side/message_historical.md
index 4926b27d1..99d26ee40 100644
--- a/docs/document/v2/server-side/message_historical.md
+++ b/docs/document/v2/server-side/message_historical.md
@@ -6,14 +6,14 @@
- 单次请求获取从指定起始时间开始一小时内的发送的历史消息记录。
- 查询历史消息记录时存在一定延时,无法实时获取。
-- 过期的历史消息记录无法获取。对于不同的套餐版本,历史消息记录的默认存储时间不同,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 过期的历史消息记录无法获取。历史消息记录的默认存储时间14天,支持联系商务调整。
## 前提条件
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -21,9 +21,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。|
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
### 响应参数
diff --git a/docs/document/v2/server-side/message_import.md b/docs/document/v2/server-side/message_import.md
index 421792bea..a5341d84e 100644
--- a/docs/document/v2/server-side/message_import.md
+++ b/docs/document/v2/server-side/message_import.md
@@ -9,7 +9,7 @@
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -17,9 +17,10 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :----------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
+
### 响应参数
diff --git a/docs/document/v2/server-side/message_recall.md b/docs/document/v2/server-side/message_recall.md
index c15710421..2d32c0c9e 100644
--- a/docs/document/v2/server-side/message_recall.md
+++ b/docs/document/v2/server-side/message_recall.md
@@ -8,7 +8,7 @@
## 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
### HTTP 请求
@@ -36,7 +36,7 @@ POST https://{host}/{org_name}/{app_name}/messages/msg_recall
| `to` | String | 是 | 要撤回消息的接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
若不传入该参数,请求失败。 |
| `chat_type` | String | 是 | 要撤回消息的会话类型:
- `chat`:单聊;
- `groupchat`:群聊 ;
- `chatroom`:聊天室 。 |
| `from` | String | 否 | 消息撤回方的用户 ID。若不传该参数,默认为 `admin`。 |
-| `force` | Bool | 是 | 是否支持撤回超过服务器存储时长的消息。服务器存储时长详见[服务器消息保存时长](/product/limitation.html#消息存储时长限制)。
- `true`:是。这种情况下,你可以撤回在撤回时长内的消息,也可以撤回超过服务器存储时长的消息。对于后者,该接口会撤回接收方在本地保存的消息。若消息发送的时间介于你的撤回时长和服务器存储时长之间,则撤回失败。例如,如果消息的撤回时长为 2 分钟,在服务器上的存储时长为 7 天,你可以撤回 2 分钟以内发送的消息或发送时间超过 7 天的消息;若消息发送了 3 分钟,则撤回失败。
- `false`:否,不支持撤回超过服务器存储时长的消息。如果你采用默认的 2 分钟撤回时长或联系了商务设置了撤回时长,服务器只能撤回指定时长内发送的消息,超过该时长的消息无法撤回。例如,你设置的撤回时长为 3 分钟,若消息发送了 4 分钟,则撤回失败。 |
+| `force` | Bool | 是 | 是否支持撤回超过服务器存储时长的消息。
- `true`:是。这种情况下,你可以撤回在撤回时长内的消息,也可以撤回超过服务器存储时长的消息。对于后者,该接口会撤回接收方在本地保存的消息。若消息发送的时间介于你的撤回时长和服务器存储时长之间,则撤回失败。例如,如果消息的撤回时长为 2 分钟,在服务器上的存储时长为 7 天,你可以撤回 2 分钟以内发送的消息或发送时间超过 7 天的消息;若消息发送了 3 分钟,则撤回失败。
- `false`:否,不支持撤回超过服务器存储时长的消息。如果你采用默认的 2 分钟撤回时长或联系了商务设置了撤回时长,服务器只能撤回指定时长内发送的消息,超过该时长的消息无法撤回。例如,你设置的撤回时长为 3 分钟,若消息发送了 4 分钟,则撤回失败。 |
### HTTP 响应
diff --git a/docs/document/v2/server-side/message_single.md b/docs/document/v2/server-side/message_single.md
index 18bbd74db..e4ed0dffc 100644
--- a/docs/document/v2/server-side/message_single.md
+++ b/docs/document/v2/server-side/message_single.md
@@ -28,7 +28,7 @@
1.发送消息时,可选的 `from` 字段用于指定发送方。
-2. 消息支持扩展属性 `ext`,可添加自定义信息。同时,推送通知也支持自定义扩展字段,详见 APNs 自定义显示和 Android 推送字段说明。
+2. 消息支持扩展属性 `ext`,可添加自定义信息。同时,推送通知也支持自定义扩展字段,详见 APNs 自定义显示和 Android 推送字段说明。
@@ -36,7 +36,7 @@
图片/语音/视频/文件消息
-1. 调用文件上传方法上传图片、语音、视频或其他类型文件,并从响应 body 中获取文件 UUID。
+1. 调用文件上传方法上传图片、语音、视频或其他类型文件,并从响应 body 中获取文件 UUID。
2. 调用发送消息方法,在请求 body 中传入该 UUID。
@@ -57,7 +57,7 @@
要调用环信即时通讯 REST API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -65,9 +65,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :----------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 | 用户 ID。 |
### 响应参数
@@ -123,7 +123,7 @@ POST https://{host}/{org_name}/{app_name}/messages/users
| `body` | JSON | 是 | 消息内容。body 包含的字段见下表说明。 |
| `sync_device` | Bool | 否 | 消息发送成功后,是否将消息同步到发送方。
- `true`:是;
- (默认)`false`:否。 |
| `routetype` | String | 否 | 若传入该参数,其值为 `ROUTE_ONLINE`,表示接收方只有在线时才能收到消息,若接收方离线则无法收到消息。若不传入该参数,无论接收方在线还是离线都能收到消息。 |
-| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/android/push.html#自定义显示)。 |
+| `ext` | JSON | 否 | 消息支持扩展字段,可添加自定义信息。不能对该参数传入 `null`。同时,推送通知也支持自定义扩展字段,详见 [APNs 自定义显示](/document/v2/ios/push.html#自定义显示) 和 [Android 推送字段说明](/document/v2/android/push.html#自定义显示)。 |
| `ext.em_ignore_notification` | Bool | 否 | 是否发送静默消息:
- `true`:是;
- (默认)`false`:否。
发送静默消息指用户离线时,环信即时通讯 IM 服务不会通过第三方厂商的消息推送服务向该用户的设备推送消息通知。因此,用户不会收到消息推送通知。当用户再次上线时,会收到离线期间的所有消息。发送静默消息和免打扰模式下均为不推送消息,区别在于发送静默消息为发送方设置不推送消息,而免打扰模式为接收方设置在指定时间段内不接收推送通知。|
请求体中的 `body` 字段说明详见下表。
diff --git a/docs/document/v2/server-side/overview.md b/docs/document/v2/server-side/overview.md
index fe83cd8c7..f67713ad5 100644
--- a/docs/document/v2/server-side/overview.md
+++ b/docs/document/v2/server-side/overview.md
@@ -41,7 +41,8 @@
## 请求域名
-环信不同数据中心的 REST API 请求域名 {host}:
+请参照私有化部署文档 **5.2应用信息** 章节获取REST API请求信息。
+
### 通信协议
环信即时通讯 REST API 支持 HTTP 和 HTTPS 协议。
diff --git a/docs/document/v2/server-side/php_server_sdk.md b/docs/document/v2/server-side/php_server_sdk.md
index 3e64193d6..911179e49 100644
--- a/docs/document/v2/server-side/php_server_sdk.md
+++ b/docs/document/v2/server-side/php_server_sdk.md
@@ -33,9 +33,7 @@ composer require maniac/easemob-php
使用 PHP SDK 之前,需准备环信 App Key、Client ID 和 Client Secret。
-如果你有环信管理后台账号并创建过应用,请先登录环信管理后台,点击 [这里](https://console.easemob.com/user/login),然后在 “应用列表” 中点击 “查看” 即可获取 appkey、Client ID 和 ClientSecret。
-
-如果你没有环信管理后台账号,请先注册账号,点击 [这里](https://console.easemob.com/user/register),注册成功后请登录,然后点击 “添加应用”,添加成功后点击 “查看” 即可获取 appkey、Client ID 和 ClientSecret。
+- 有效的环信即时通讯 IM 开发者账号和 App Key、Client ID、ClientSecret,登录 [环信管理后台](enable_and_configure_IM.html) 到“应用列表” → 点击“管理”即可获取到 App Key、Client ID、ClientSecret。
## 使用
@@ -107,7 +105,7 @@ $user->create($data);
## 参考
- PHP SDK 的 API 文档在 [这里](https://easemob.github.io/im-php-server-sdk/annotated.html)
-- PHP SDK 开源地址在 [这里](https://github.com/easemob/im-php-server-sdk)
+- PHP SDK 开源地址在 [这里](https://github.com/easemob/im-php-server-sdk/tree/1.0.0)
## 常见问题
diff --git a/docs/document/v2/server-side/presence.md b/docs/document/v2/server-side/presence.md
index 687f85380..9b052fce4 100644
--- a/docs/document/v2/server-side/presence.md
+++ b/docs/document/v2/server-side/presence.md
@@ -4,9 +4,6 @@
在线状态(Presence)表示用户的当前状态信息。除了环信 IM 内置的在线和离线状态,你还可以添加自定义在线状态,例如忙碌、马上回来、离开、接听电话、外出就餐等。本文展示如何调用环信即时通讯 RESTful API 实现用户在线状态(Presence)订阅,包括设置用户在线状态信息、批量订阅和获取在线状态、取消订阅以及查询订阅列表。
-:::notice
-使用该特性前,你需要联系商务开通。
-:::
## 前提条件
@@ -14,7 +11,7 @@
- 已在环信即时通讯云控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
- 已从服务端获取 app token,详见 [使用 App Token 鉴权](easemob_app_token.html)。
-- 了解环信 IM API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -24,9 +21,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :------------ | :----- | :------ | :---------------- |
-| `host`| String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。|
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。|
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 |用户在即时通讯服务器上的唯一 ID。 |
## 认证方式
diff --git a/docs/document/v2/server-side/push.md b/docs/document/v2/server-side/push.md
index 1c95425c6..b85295230 100644
--- a/docs/document/v2/server-side/push.md
+++ b/docs/document/v2/server-side/push.md
@@ -2,10 +2,10 @@
-本文展示如何调用环信即时通讯 RESTful API 实现离线推送,包括设置离线推送通知显示的昵称、推送通知方式及免打扰模式。调用以下方法前,请先参考 [接口频率限制](limitationapi.html) 了解即时通讯 RESTful API 的调用频率限制。
+本文展示如何调用环信即时通讯 RESTful API 实现离线推送,包括设置离线推送通知显示的昵称、推送通知方式及免打扰模式。
:::tip
-若要使用离线推送的高级功能,即设置推送通知模式、免打扰模式和自定义推送模板,你需要在[环信即时通讯云控制后台](https://console.easemob.com/user/login)中点击你的应用后选择 **即时通讯** > **功能配置** > **功能配置总览** 开通离线推送高级功能。
+若要使用离线推送的高级功能,即设置推送通知模式、免打扰模式和自定义推送模板,你需要在环信即时通讯云控制后台中点击你的应用后选择 **服务管理** > **服务概览** 开通离线推送高级功能。
:::
## 公共参数
@@ -16,9 +16,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 | 环信用户 ID。 |
### 响应参数
@@ -258,7 +258,7 @@ PUT https://{host}/{org_name}/{app_name}/users/{username}
| `entities.created` | Number | 用户注册的 Unix 时间戳,单位为毫秒。 |
| `entities.modified` | Number | 最近一次修改用户信息的 Unix 时间戳,单位为毫秒。 |
| `entities.username` | String | 用户 ID。用户登录的唯一账号。 |
-| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](/document/server-side/account_system.html#账号封禁)解除封禁。
|
+| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](account_system.html#账号解禁)解除封禁。
|
| `entities.nickname` | String | 推送通知中显示的昵称。 |
其他参数及说明详见 [公共参数](#公共参数)。
@@ -340,7 +340,7 @@ PUT https://{host}/{org_name}/{app_name}/users/{username}
| `entities.created` | Long | 用户创建的 Unix 时间戳,单位为毫秒。 |
| `entities.modified` | Long | 最近一次修改用户信息的 Unix 时间戳,单位为毫秒。 |
| `entities.username` | String | 用户 ID。用户登录的唯一账号。 |
-| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](/document/server-side/account_system.html#账号封禁)解除封禁。
|
+| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](account_system.html#账号封禁)解除封禁。
|
| `entities.notification_no_disturbing` | Boolean | 是否设置为免打扰模式:- `true`:是;
- `false`:否。
|
| `entities.notification_no_disturbing_start` | Int | 免打扰时间段的开始时间。 |
| `entities.notification_no_disturbing_end` | Int | 免打扰时间段的结束时间。 |
@@ -446,7 +446,7 @@ PUT https://{host}/{org_name}/{app_name}/users/{username}
| `entities.created` | Long | 用户创建的 Unix 时间戳,单位为毫秒。 |
| `entities.modified` | Long | 最近一次修改用户信息的 Unix 时间戳,单位为毫秒。 |
| `entities.username` | String | 用户 ID。用户登录的唯一账号。 |
-| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](/document/server-side/account_system.html#账号封禁)解除封禁。
|
+| `entities.activated` | Boolean | 用户是否为活跃状态:- `true`:用户为活跃状态。
- `false`:用户为封禁状态。如要使用已被封禁的用户账户,你需要调用[解禁用户](account_system.html#账号封禁)解除封禁。
|
| `entities.notification_no_disturbing` | Boolean | 是否设置为免打扰模式:- `true`:是;
- `false`:否。
|
| `entities.notification_no_disturbing_start` | Int | 免打扰时间段的开始时间。 |
| `entities.notification_no_disturbing_end` | Int | 免打扰时间段的结束时间。 |
diff --git a/docs/document/v2/server-side/reaction.md b/docs/document/v2/server-side/reaction.md
index 47bb3b360..a03c7ac32 100644
--- a/docs/document/v2/server-side/reaction.md
+++ b/docs/document/v2/server-side/reaction.md
@@ -2,7 +2,7 @@
-消息表情回复(“Reaction”)指用户在单聊和群聊场景中对单条消息回复表情,可丰富用户聊天时的互动方式。对于单个消息,一个消息表情即为一个 Reaction,若不同用户重复添加同一消息表情,Reaction 数量计为 1。每条消息默认可添加 20 个 Reaction,若需提升该上限,需联系环信商务。
+消息表情回复(“Reaction”)指用户在单聊和群聊场景中对单条消息回复表情,可丰富用户聊天时的互动方式。对于单个消息,一个消息表情即为一个 Reaction,若不同用户重复添加同一消息表情,Reaction 数量计为 1。每条消息默认可添加 20 个 Reaction。
本页介绍如何使用即时通讯 IM RESTful API 实现 Reaction 功能。
@@ -12,7 +12,7 @@
- 已在环信即时通讯云控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
- 已从服务端获取 app token,详见 [使用 App Token 鉴权](easemob_app_token.html)。
-- 了解环信 IM RESTful API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -20,9 +20,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 | 用户 ID。 |
## 认证方式
diff --git a/docs/document/v2/server-side/user_relationship.md b/docs/document/v2/server-side/user_relationship.md
index 140504478..7effe8ec9 100644
--- a/docs/document/v2/server-side/user_relationship.md
+++ b/docs/document/v2/server-side/user_relationship.md
@@ -9,7 +9,7 @@
要调用环信即时通讯 RESTful API,请确保满足以下要求:
- 已在环信即时通讯控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 认证方式
@@ -25,9 +25,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 | 用户 ID。 |
### 响应参数
@@ -55,7 +55,7 @@
添加好友,好友必须是和当前用户在一个 App Key 下的用户。
-对于免费版即时通讯服务,单个 App Key 下的每个用户的好友数量上限为 1000,不同服务版本的 App Key 的该数量上限不同,具体可参考[版本功能介绍](https://www.easemob.com/pricing/im)。
+对于免费版即时通讯服务,单个 App Key 下的每个用户的好友数量上限为 1000,私有部署用户好友数无上限。
### HTTP 请求
diff --git a/docs/document/v2/server-side/user_status_callback.md b/docs/document/v2/server-side/user_status_callback.md
index 2f49b2df8..25f719a2f 100644
--- a/docs/document/v2/server-side/user_status_callback.md
+++ b/docs/document/v2/server-side/user_status_callback.md
@@ -17,13 +17,12 @@
## 前提条件
-- 该服务为增值服务,需要开通相应版本后才能使用,具体见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im);
- 服务开通后,若用户状态变更(在线、离线),环信即时通讯 IM 服务器会实时将状态同步到开发者设置的应用服务器地址,开发者接收到状态后自行进行业务处理。
- 某些情况下,例如进入隧道等特殊网络情况,依赖心跳超时,用户进入离线状态最长会有 5 分钟延时。
## 实现方法
-直接在发送后回调添加规则页配置,具体见 [环信即时通讯云控制台](https://console.easemob.com/user/login)。
+直接在发送后回调添加规则页配置,具体见 [环信即时通讯云控制台](uc_configure.html#配置消息回调)。
## 应答要求
diff --git a/docs/document/v2/server-side/userprofile.md b/docs/document/v2/server-side/userprofile.md
index 4cfbe3437..92478b743 100644
--- a/docs/document/v2/server-side/userprofile.md
+++ b/docs/document/v2/server-side/userprofile.md
@@ -27,7 +27,7 @@
要调用环信即时通讯 RESTful API,请确保满足以下条件:
- 已在环信即时通讯云控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)。
-- 了解环信 IM REST API 的调用频率限制,详见 [接口频率限制](limitationapi.html)。
+
## 公共参数
@@ -35,9 +35,9 @@
| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `host` | String | 是 | 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `org_name` | String | 是 | 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
-| `app_name` | String | 是 | 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)。 |
+| `host` | String | 是 | 访问 RESTful API 的域名或服务器信息。
-公有云集成为 环信即时通讯控制台的 `即时通讯->服务概览`页面下的 `域名配置- Rest Api`。
-私有化集成为部署后 `服务器地址:端口`。 |
+| `org_name` | String | 是 | 每个公司(组织)分配的唯一标识。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Orgname`。 |
+| `app_name` | String | 是 | 创建应用时填入的应用名称。详见 环信即时通讯控制台的 `应用概览->应用详情`页面下的 `应用信息-Appname`。 |
| `username` | String | 是 | 用户 ID。 |
### 响应参数
diff --git a/docs/document/v2/unity/group_attributes.md b/docs/document/v2/unity/group_attributes.md
index de194840a..af6412d3d 100644
--- a/docs/document/v2/unity/group_attributes.md
+++ b/docs/document/v2/unity/group_attributes.md
@@ -18,8 +18,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/unity/group_manage.md b/docs/document/v2/unity/group_manage.md
index e1fd8e8de..79cff515d 100644
--- a/docs/document/v2/unity/group_manage.md
+++ b/docs/document/v2/unity/group_manage.md
@@ -23,8 +23,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/unity/group_members.md b/docs/document/v2/unity/group_members.md
index 544edad31..4350830a0 100644
--- a/docs/document/v2/unity/group_members.md
+++ b/docs/document/v2/unity/group_members.md
@@ -21,9 +21,9 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
- 了解群成员角色,详见 [群组概述](group_overview.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+
## 实现方法
diff --git a/docs/document/v2/unity/message_manage.md b/docs/document/v2/unity/message_manage.md
index b016feda4..389a66a7d 100644
--- a/docs/document/v2/unity/message_manage.md
+++ b/docs/document/v2/unity/message_manage.md
@@ -31,7 +31,7 @@ SQLCipher 用于加密存储本地消息的数据库。即时通讯 IM SDK 使
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/unity/message_modify.md b/docs/document/v2/unity/message_modify.md
index a1a7433ec..7a7fcbe77 100644
--- a/docs/document/v2/unity/message_modify.md
+++ b/docs/document/v2/unity/message_modify.md
@@ -9,7 +9,7 @@
若使用该功能,需将 SDK 升级至 1.2.0 或以上版本。
:::
-你可以调用 `ChatManager#ModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。
+你可以调用 `ChatManager#ModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次。
示例代码如下:
diff --git a/docs/document/v2/unity/message_receipt.md b/docs/document/v2/unity/message_receipt.md
index ca640e32f..e32adcb5e 100644
--- a/docs/document/v2/unity/message_receipt.md
+++ b/docs/document/v2/unity/message_receipt.md
@@ -4,7 +4,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -40,8 +40,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
@@ -223,7 +223,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 群主或群管理员发送消息时若需已读回执,需设置 `Message` 的 `IsNeedGroupAck` 为 `true`。
diff --git a/docs/document/v2/unity/message_retrieve.md b/docs/document/v2/unity/message_retrieve.md
index 8b70ded09..85b0fb35c 100644
--- a/docs/document/v2/unity/message_retrieve.md
+++ b/docs/document/v2/unity/message_retrieve.md
@@ -4,9 +4,6 @@
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何从消息服务器获取和删除会话和消息。
-:::tip
-本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-:::
## 实现原理
@@ -24,7 +21,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -115,7 +112,7 @@ SDKClient.Instance.ChatManager.PinConversation(convId, isPinned, new CallBack(
### 分页获取指定会话的历史消息
-你可以调用 `FetchHistoryMessagesFromServer` 方法从服务器分页获取指定会话的历史消息,实现消息漫游。该功能需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
+你可以调用 `FetchHistoryMessagesFromServer` 方法从服务器分页获取指定会话的历史消息,实现消息漫游。
为确保数据可靠,我们建议你多次调用该方法,且每次获取的消息数小于 50 条。获取到数据后,SDK 会自动将消息更新到本地数据库。
@@ -137,7 +134,7 @@ SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, ty
你可以调用 `RemoveMessagesFromServer` 方法单向删除服务端的历史消息,每次最多可删除 50 条消息。消息删除后,该用户无法从服务端拉取到该消息。其他用户不受该操作影响。已删除的消息自动从设备本地移除。
:::tip
-若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本并联系商务。
+若使用该功能,需将 SDK 升级至 V1.1.0 或以上版本。
:::
```csharp
diff --git a/docs/document/v2/unity/message_send_receive.md b/docs/document/v2/unity/message_send_receive.md
index 2e888bc58..66c0b0d95 100644
--- a/docs/document/v2/unity/message_send_receive.md
+++ b/docs/document/v2/unity/message_send_receive.md
@@ -31,7 +31,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -98,7 +98,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
```csharp
SDKClient.Instance.ChatManager.RecallMessage("Message ID", new CallBack(
diff --git a/docs/document/v2/unity/multi_device.md b/docs/document/v2/unity/multi_device.md
index b39ab93b9..2f2ba508b 100644
--- a/docs/document/v2/unity/multi_device.md
+++ b/docs/document/v2/unity/multi_device.md
@@ -11,7 +11,7 @@
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+你可以在环信控制台的**服务管理** > **服务概览**页面的下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
![img](@static/images/common/multidevice_device_count.png)
@@ -24,7 +24,7 @@
-
+
单端/多端登录
@@ -38,7 +38,7 @@
多端登录
- 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
+ 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。
即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
@@ -177,7 +177,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
你可以按照以下步骤设置登录设备所属的平台:
-1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+1. 在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
diff --git a/docs/document/v2/unity/overview.md b/docs/document/v2/unity/overview.md
index c257f68d3..7989da077 100644
--- a/docs/document/v2/unity/overview.md
+++ b/docs/document/v2/unity/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号和获取 App key,参见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号和获取 App key,参见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -49,15 +49,15 @@ SDKClient.Instance.InitWithOptions(options);
目前注册的方式有以下几种:
- 通过控制台注册。
- 通过 REST API 接口注册。
-- 调用 SDK 接口注册。该方法需在 [控制台](https://console.easemob.com/app/im-service/detail) 设置允许 **开放注册**。
+- 调用 SDK 接口注册。该方法需在 [控制台](/document/v2/privatization/uc_configure.html) 设置允许 **开放注册**。
### 控制台注册
-控制台的注册请到 [这里](https://console.easemob.com/app/im-service/operative-service/user)。
+控制台的注册请到 **运营服务->用户管理** 页面下进行注册。
### REST API 注册
-请参考 [注册用户](/document/server-side/account_system.html#注册用户)。
+请参考 [注册用户](/document/v2/server-side/account_system.html#注册用户)。
### SDK 注册
@@ -83,7 +83,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录:
- 用户 ID + 密码
- 用户 ID + token
-登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
调用登录接口后,收到 `OnConnected` 回调表明 SDK 与环信服务器连接成功。
@@ -113,7 +113,7 @@ SDKClient.Instance.Login(username, password,
);
```
-2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/server-side/easemob_user_token.html)。
+2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/v2/server-side/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。
diff --git a/docs/document/v2/unity/presence.md b/docs/document/v2/unity/presence.md
index d1c776212..f40d19bce 100644
--- a/docs/document/v2/unity/presence.md
+++ b/docs/document/v2/unity/presence.md
@@ -6,9 +6,6 @@
本文介绍如何在即时通讯应用中发布、订阅和查询用户的在线状态。
-:::notice
-私有化版本不支持在线状态订阅。
-:::
## 技术原理
@@ -41,8 +38,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/unity/quickstart.md b/docs/document/v2/unity/quickstart.md
index ff2b1e652..3d51d6a4e 100644
--- a/docs/document/v2/unity/quickstart.md
+++ b/docs/document/v2/unity/quickstart.md
@@ -33,14 +33,14 @@
| macOS | macOS 10.0 或以上 | Xcode 9.0 或以上,Visual Studio for Mac 2019 或以上 |
| Windows | Windows 10 或以上 | Microsoft Visual Studio 2019 或以上 |
-- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
- 如果你的网络环境部署了防火墙,请联系环信技术支持设置白名单。
## 项目设置
实现发送和接收单聊文本消息之前,参考以下步骤设置你的项目。
-### 1. 下载并设置 Unity Demo 项目
+
+1. [下载 Unity SDK](https://downloadsdk.easemob.com/downloads/SDK/Unity/agora_chat_unity_sdk1.2.0.unitypackage)。
2. 在 Unity Editor 中,选择 **Assets > Import Package > Custom Package...**,然后选择刚下载的 unitypackage 导入。
3. 在弹出的 **Import Unity Package** 页面,点击右下角的 **Import**。
@@ -119,7 +119,7 @@ SDKClient.Instance.CreateAccount(username: Username.text, Password.text, callbac
```
:::notice
-该注册模式在客户端实现,简单方便,主要用于测试,但不推荐在正式环境中使用。正式环境中应使用服务器端调用 Restful API 进行注册,详见 [注册单个用户](/document/server-side/account_system.html#注册单个用户)。
+该注册模式在客户端实现,简单方便,主要用于测试,但不推荐在正式环境中使用。正式环境中应使用服务器端调用 Restful API 进行注册,详见 [注册单个用户](/document/v2/server-side/account_system.html#注册单个用户)。
:::
### 5. 登录账号
diff --git a/docs/document/v2/unity/reaction.md b/docs/document/v2/unity/reaction.md
index 0040d9157..fc1af1e6d 100644
--- a/docs/document/v2/unity/reaction.md
+++ b/docs/document/v2/unity/reaction.md
@@ -7,7 +7,6 @@
:::notice
1. 目前 Reaction 仅适用于单聊和群组。聊天室暂不支持 Reaction 功能。
-2. 私有化版本不支持 Reaction 功能。
:::
## 技术原理
@@ -31,8 +30,8 @@ Reaction 场景示例如下:
开始前,请确保满足以下条件:
1. 完成 `1.0.5 或 以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/unity/releasenote.md b/docs/document/v2/unity/releasenote.md
index 5f9040a0b..fd2c53dba 100644
--- a/docs/document/v2/unity/releasenote.md
+++ b/docs/document/v2/unity/releasenote.md
@@ -212,11 +212,9 @@
- 消息表情回复;
- 管理子区等。
-关于详细功能概述,请参见[产品概述](https://docs-im-beta.easemob.com/product/introduction.html)。
-
具体集成请参考以下文档:
-- [开通配置环信即时通讯 IM 服务](/product/enable_and_configure_IM.html)
+- [开通配置环信即时通讯 IM 服务](/document/v2/privatization/uc_configure.html)
- [环信即时通讯 IM Unity 快速入门](quickstart.html)
- [消息管理 Unity](message_overview.html)
- [群组 Unity](group_overview.html)
diff --git a/docs/document/v2/unity/room_attributes.md b/docs/document/v2/unity/room_attributes.md
index 5f883c454..3dbbce75b 100644
--- a/docs/document/v2/unity/room_attributes.md
+++ b/docs/document/v2/unity/room_attributes.md
@@ -20,8 +20,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html);
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/unity/room_manage.md b/docs/document/v2/unity/room_manage.md
index de8dd6e1b..63bc44afa 100644
--- a/docs/document/v2/unity/room_manage.md
+++ b/docs/document/v2/unity/room_manage.md
@@ -25,9 +25,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 不同版本的聊天室相关数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
-- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/server-side/chatroom.html#添加超级管理员)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/v2/server-side/chatroom.html#添加超级管理员)。
- 聊天室创建者和管理员的数量之和不能超过 100,即管理员最多可添加 99 个。
## 实现方法
@@ -36,9 +35,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `CreateRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `CreateRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/unity/room_members.md b/docs/document/v2/unity/room_members.md
index 221968878..3fb02759f 100644
--- a/docs/document/v2/unity/room_members.md
+++ b/docs/document/v2/unity/room_members.md
@@ -21,8 +21,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html);
-- 了解环信即时通讯 IM 聊天室相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/unity/thread.md b/docs/document/v2/unity/thread.md
index 8f1682ef9..178c45f40 100644
--- a/docs/document/v2/unity/thread.md
+++ b/docs/document/v2/unity/thread.md
@@ -6,9 +6,6 @@
如需查看消息相关内容,参见 [子区消息管理](thread_message.html)。
-:::notice
-私有化版本不支持子区功能。
-:::
## 技术原理
@@ -29,9 +26,8 @@
开始前,请确保满足以下条件:
- 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/unity/thread_message.md b/docs/document/v2/unity/thread_message.md
index fd0fc4341..1c9777ba8 100644
--- a/docs/document/v2/unity/thread_message.md
+++ b/docs/document/v2/unity/thread_message.md
@@ -31,8 +31,8 @@
- 已集成环信 IM `(1.0.5 或以上版本)` 的基本功能,账户登录成功。
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/unity/user_relationship.md b/docs/document/v2/unity/user_relationship.md
index e3e8cc7f5..91cd1bc06 100644
--- a/docs/document/v2/unity/user_relationship.md
+++ b/docs/document/v2/unity/user_relationship.md
@@ -29,7 +29,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/unity/userprofile.md b/docs/document/v2/unity/userprofile.md
index 747acc08f..a9f9247f7 100644
--- a/docs/document/v2/unity/userprofile.md
+++ b/docs/document/v2/unity/userprofile.md
@@ -24,7 +24,7 @@
设置用户属性前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -56,7 +56,7 @@ SDKClient.Instance.UserInfoManager.UpdateOwnInfo(userInfo, new CallBack(
));
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 描述 |
| :---------- | :----- | :------------------------------------------------------------------------------------------------ |
diff --git a/docs/document/v2/web/demo_react.md b/docs/document/v2/web/demo_react.md
index d0c6aff9a..d8d873ef4 100644
--- a/docs/document/v2/web/demo_react.md
+++ b/docs/document/v2/web/demo_react.md
@@ -4,23 +4,23 @@
环信即时通讯 Web 端提供示例应用可供体验。你可以按以下步骤体验:
-1. [登录 Demo](https://webim-h5.easemob.com/#/login)。
+1. [登录 Demo](https://zq-im-management-hsb.easemob.com/)。
-![img](@static/images/demo/web_react_login.png)
+
-2. 输入你的手机号,获取验证码,然后输入。
+2. 输入你的登录账号和密码,然后输入。
3. 点击 **登录** 登录 Demo。
## 代码下载
-下载源代码:[github 源码地址](https://github.com/easemob/webim)
+下载源代码:[源码地址](https://downloadsdk.easemob.com/mp/downloads/sdk/private-react-20230918.zip)
欢迎大家提交 PR 改进和修复 Web IM 中的问题。
## 运行 Web IM 项目
-从 [IM SDK 及 Demo 下载](https://www.easemob.com/download/im) 下载 Web SDK 压缩包,然后解压。解压后在 `demo` 文件夹即为 Web IM 的项目目录。
+下载 Web SDK 压缩包,然后解压。解压后在 `demo` 文件夹即为 Web IM 的项目目录。
1. 安装 Demo 所需的依赖:在终端中运行 `cd demo` 和 `npm install` 命令。
diff --git a/docs/document/v2/web/demo_vue.md b/docs/document/v2/web/demo_vue.md
index a63796147..f627af04d 100644
--- a/docs/document/v2/web/demo_vue.md
+++ b/docs/document/v2/web/demo_vue.md
@@ -2,7 +2,7 @@
-环信即时通讯 Web 端提供示例应用可供体验。你可以按以下步骤体验:
+
## 代码下载
-- Vue 2 下载源代码:[github 源码地址](https://github.com/easemob/webim-vue-demo/tree/dev-4.0)
-- Vue 3 下载源代码:[github 源码地址](https://github.com/easemob/webim-vue-demo/tree/demo-vue3)
+- Vue 2 下载源代码:[github 源码地址](https://downloadsdk.easemob.com/mp/downloads/sdk/private-vue2-20230918.zip)
+- Vue 3 下载源代码:[github 源码地址]()
欢迎大家提交 PR 改进和修复 Web IM 中的问题。
## 运行 Web IM 项目
-从 [github 下载](https://github.com/easemob/webim-vue-demo/tree/dev-4.0) 下载项目代码压缩包,然后解压。解压后,`webim-vue-demo` 文件夹即为 Web IM 的项目目录。
+下载项目代码压缩包,然后解压。解压后,`webim-vue-demo` 文件夹即为 Web IM 的项目目录。
1. 安装 Demo 所需的依赖:在终端中运行 `cd demo` 和 `npm install` 命令。
diff --git a/docs/document/v2/web/group_attributes.md b/docs/document/v2/web/group_attributes.md
index 0bde21297..bcf561123 100644
--- a/docs/document/v2/web/group_attributes.md
+++ b/docs/document/v2/web/group_attributes.md
@@ -15,7 +15,7 @@
## 前提条件
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的接口调用频率限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/web/group_manage.md b/docs/document/v2/web/group_manage.md
index a402d071d..5fa105009 100644
--- a/docs/document/v2/web/group_manage.md
+++ b/docs/document/v2/web/group_manage.md
@@ -22,8 +22,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的接口调用频率限制,详见 [使用限制](/product/limitation.html)。
-- 了解群组和群成员数量限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/web/group_members.md b/docs/document/v2/web/group_members.md
index e9c6a123e..46a4dd90b 100644
--- a/docs/document/v2/web/group_members.md
+++ b/docs/document/v2/web/group_members.md
@@ -20,7 +20,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
- 了解群成员角色,详见 [群组概述](group_overview.html)。
## 实现方法
diff --git a/docs/document/v2/web/message_receipt.md b/docs/document/v2/web/message_receipt.md
index 3f0694747..03fa7ba54 100644
--- a/docs/document/v2/web/message_receipt.md
+++ b/docs/document/v2/web/message_receipt.md
@@ -4,7 +4,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -35,9 +35,8 @@
开始前,请确保满足以下要求:
-- 已经集成和初始化环信 IM SDK,并实现了注册账号和登录功能。详情请参见 [快速开始](quickstart.html)。
-- 了解 [使用限制](/product/limitation.html) 中的 API 调用频率限制。
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -147,7 +146,7 @@ conn.addEventHandler("customEvent", {
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 群主或群管理员发送消息时若需已读回执,需设置 `allowGroupAck` 为 `true`:
diff --git a/docs/document/v2/web/message_retrieve.md b/docs/document/v2/web/message_retrieve.md
index e1fc11af0..b3ece5808 100644
--- a/docs/document/v2/web/message_retrieve.md
+++ b/docs/document/v2/web/message_retrieve.md
@@ -4,10 +4,6 @@
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍如何实现用户从消息服务器获取会话和消息。
-:::tip
-本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-
-:::
## 技术原理
@@ -134,7 +130,7 @@ WebIM.conn
你可以调用 `removeHistoryMessages` 方法按照时间或消息 ID 单向删除服务端的历史消息。每次最多可删除 50 条消息。消息删除后,该账号无法从服务端拉取到该消息。其他用户不受该操作影响。多端多设备登录时,删除成功后会触发 `onMultiDeviceEvent#deleteRoaming` 回调。
:::tip
-若使用该功能,需将 SDK 升级至 V4.1.2 或以上版本并联系商务开通。
+若使用该功能,需将 SDK 升级至 V4.1.2 或以上版本。
:::
示例代码如下:
diff --git a/docs/document/v2/web/message_send_receive.md b/docs/document/v2/web/message_send_receive.md
index 6b38471a7..77e617d9c 100644
--- a/docs/document/v2/web/message_send_receive.md
+++ b/docs/document/v2/web/message_send_receive.md
@@ -42,7 +42,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -162,7 +162,7 @@ conn.addEventHandler("eventName", {
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
```javascript
let option = {
@@ -267,7 +267,7 @@ function sendPrivateAudio() {
#### 发送图片消息
-对于图片消息,服务器会根据用户设置的 `thumbnailHeight` 和 `thumbnailWidth` 参数自动生成图片的缩略图。若这两个参数未传,则图片的高度和宽度均默认为 170 像素。你也可以在 [环信即时通讯控制台](https://console.easemob.com/user/login)的 `服务概览` 页面的 `设置` 区域修改该默认值。
+对于图片消息,服务器会根据用户设置的 `thumbnailHeight` 和 `thumbnailWidth` 参数自动生成图片的缩略图。若这两个参数未传,则图片的高度和宽度均默认为 170 像素。你也可以在 环信即时通讯控制台的 **应用概览>应用详情** 页面的 `应用设置` 区域修改该默认值。
请参考以下代码示例创建和发送图片消息:
diff --git a/docs/document/v2/web/multi_device.md b/docs/document/v2/web/multi_device.md
index 6c1399035..6779a73c6 100644
--- a/docs/document/v2/web/multi_device.md
+++ b/docs/document/v2/web/multi_device.md
@@ -9,11 +9,11 @@
- 子区相关操作;
- 会话相关操作。
-环信服务器提供 RESTful 接口[查询每个账号已登录设备列表](account_system.html#获取指定账号的在线登录设备列表)以及[将账号从已登录设备强制下线](account_system.html#强制下线)。
+环信服务器提供 RESTful 接口[查询每个账号已登录设备列表](/document/v2/server-side/account_system.html#获取指定账号的在线登录设备列表)以及[将账号从已登录设备强制下线](/document/v2/server-side/account_system.html#强制下线)。
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
![img](@static/images/common/multidevice_device_count.png)
@@ -26,7 +26,7 @@
-
+
单端/多端登录
@@ -40,7 +40,7 @@
多端登录
- 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
+ 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。
即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
diff --git a/docs/document/v2/web/overview.md b/docs/document/v2/web/overview.md
index cd422d54c..d35986d41 100644
--- a/docs/document/v2/web/overview.md
+++ b/docs/document/v2/web/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号且获得 App key,见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号且获得 App key,见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -94,15 +94,15 @@ const conn = new EC.connection({
### 控制台注册
-登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择**即时通讯** > **运营服务** > **用户管理**,创建 IM 用户。
+登录[环信即时通讯云控制台](/document/v2/privatization/uc_configure.html),选择 **运营服务** > **用户管理**,创建 IM 用户。
### REST API 注册
-请参考 [注册用户](/document/server-side/account_system.html#注册用户)。
+请参考 [注册用户](/document/v2/server-side/account_system.html#注册用户)。
### SDK 注册
-若支持 SDK 注册,需登录[环信即时通讯云控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。
+若支持 SDK 注册,需登录[环信即时通讯云控制台](/document/v2/privatization/uc_configure.html),选择 **应用概览** > **应用详情**,将 **设置**下的 **用户注册模式** 设置为 **开放注册**。
```javascript
conn
@@ -126,7 +126,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录:
- 用户 ID + 密码
- 用户 ID + token
-登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
调用登录接口后,收到 `onConnected` 回调表明 SDK 与环信服务器连接成功。
@@ -146,7 +146,7 @@ conn
});
```
-2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/product/easemob_user_token.html)。
+2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/v2/privatization/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。
diff --git a/docs/document/v2/web/presence.md b/docs/document/v2/web/presence.md
index 195aa7a7f..59f1c386c 100644
--- a/docs/document/v2/web/presence.md
+++ b/docs/document/v2/web/presence.md
@@ -35,8 +35,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `4.0.4 及以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/web/privatecloud.md b/docs/document/v2/web/privatecloud.md
index e8fbdf50f..f019cbf12 100644
--- a/docs/document/v2/web/privatecloud.md
+++ b/docs/document/v2/web/privatecloud.md
@@ -2,7 +2,7 @@
## Web Vue 2 Demo
-对于 Web Vue Demo,进行私有化配置需在 [Vue 2 Demo 源代码](https://download-sdk.oss-cn-beijing.aliyuncs.com/zq/private-vue2-20230104.zip)中进行修改。
+对于 Web Vue Demo,进行私有化配置需在 [Vue 2 Demo 源代码](https://downloadsdk.easemob.com/mp/downloads/sdk/private-vue2-20230918.zip)中进行修改。
### 修改环境配置
@@ -43,7 +43,7 @@ const DEFAULT_APIURL = "https://xxx.xxxxx.com"; // 私有化的 RESTful 服务
## Web React Demo
-对于 Web React Demo,进行私有化配置需在 [React Demo 源代码](https://download-sdk.oss-cn-beijing.aliyuncs.com/zq/private-demo-20230104.zip)中进行修改。
+对于 Web React Demo,进行私有化配置需在 [React Demo 源代码](https://downloadsdk.easemob.com/mp/downloads/sdk/private-react-20230918.zip)中进行修改。
修改配置如下:
diff --git a/docs/document/v2/web/push.md b/docs/document/v2/web/push.md
index 87e41fc3d..a0f5c2a0a 100644
--- a/docs/document/v2/web/push.md
+++ b/docs/document/v2/web/push.md
@@ -15,7 +15,6 @@
环信 IM Web SDK 本身不支持离线推送,只支持对移动端离线推送进行如下配置:
- 设置推送通知,包含设置推送通知方式和免打扰模式。设置推送通知为推送的高级功能,使用前需要在环信控制台开启该功能。
-- 设置推送翻译。
## 技术原理
@@ -33,7 +32,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
- 你已在环信即时通讯云管理后台中激活推送高级功能。推送高级功能包括设置推送通知模式和免打扰模式。
![image](@static/images/web/push_web_enable_push.png)
@@ -258,7 +257,7 @@ WebIM.conn.clearRemindTypeForConversation(params)
### 设置推送翻译
-如果用户启用[自动翻译](message_translation.html) 功能并发送消息,SDK 会同时发送原始消息和翻译后的消息。
+如果用户启用自动翻译功能并发送消息,SDK 会同时发送原始消息和翻译后的消息。
推送通知与翻译功能协同工作。作为接收方,你可以设置你在离线时希望接收的推送通知的首选语言。如果翻译消息的语言符合你的设置,则翻译消息显示在推送通知中;否则,将显示原始消息。
diff --git a/docs/document/v2/web/quickstart.md b/docs/document/v2/web/quickstart.md
index 97337a0f2..e46ce13bc 100644
--- a/docs/document/v2/web/quickstart.md
+++ b/docs/document/v2/web/quickstart.md
@@ -13,7 +13,7 @@
## 前提条件
- 有效的环信即时通讯 IM 开发者账号;
-- [创建环信即时通讯 IM 项目并获取 App Key](/product/enable_and_configure_IM.html);
+- [创建环信即时通讯 IM 项目并获取 App Key](/document/v2/privatization/uc_configure.html);
- [npm](https://www.npmjs.com/get-npm);
- SDK 支持 IE 9+、Firefox 10+、Chrome 54+ 和 Safari 6+。
@@ -324,9 +324,9 @@ $ npm run start:dev
import WebIM from 'easemob-websdk'
```
-#### 方法二:从官网获取并导入 SDK
+#### 方法二:下载Demo并导入 SDK
-1. 下载 [Easemob Chat SDK for Web](https://www.easemob.com/download/im)。将 `demo/src/config` 中的 Easemob-chat 文件保存到你的项目下。
+1. 下载 [Easemob Chat SDK for Web](https://downloadsdk.easemob.com/mp/downloads/sdk/private-react-20230918.zip)。将 `demo/src/config` 中的 Easemob-chat 文件保存到你的项目下。
2. 在 `index.html` 文件中,对 `index.js` 文件进行引用。
diff --git a/docs/document/v2/web/reaction.md b/docs/document/v2/web/reaction.md
index b37978ccb..c2136e4b1 100644
--- a/docs/document/v2/web/reaction.md
+++ b/docs/document/v2/web/reaction.md
@@ -6,7 +6,6 @@
:::notice
1. 目前 Reaction 仅适用于单聊和群组。聊天室暂不支持 Reaction 功能。
-2. 私有化版本不支持 Reaction 功能。
:::
## 技术原理
@@ -32,8 +31,8 @@
开始前,请确保满足以下条件:
1. 完成 `4.0.5 及以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/web/releasenote.md b/docs/document/v2/web/releasenote.md
index e677d3db4..415c6bff8 100644
--- a/docs/document/v2/web/releasenote.md
+++ b/docs/document/v2/web/releasenote.md
@@ -168,7 +168,6 @@
### 新增特性:
- [IM SDK] 新增 [消息 Reaction](reaction.html) 功能,可以对消息进行不同的响应;
-- [IM SDK] 新增 [举报 API](moderation.html) 用于内容审核;
- [IM SDK] 新增推送设置 API,支持不同的推送配置;
- [IM SDK] 增加数据上报功能;
@@ -184,14 +183,10 @@
## 版本 V4.0.4 2022-4-19
-:::tip
-仅 V4.0.4 及以下版本支持私有化部署。
-:::
### 新增特性:
- [IM SDK] 增加 [用户在线状态(Presence)](presence.html) 订阅功能。
-- [IM SDK] [翻译功能](message_translation.html):增加自动翻译接口。实现用户按需翻译和发消息自动翻译。
### 优化:
diff --git a/docs/document/v2/web/room_attributes.md b/docs/document/v2/web/room_attributes.md
index 043e38b15..3643d78a6 100644
--- a/docs/document/v2/web/room_attributes.md
+++ b/docs/document/v2/web/room_attributes.md
@@ -20,8 +20,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/web/room_manage.md b/docs/document/v2/web/room_manage.md
index d987e4db2..4df2ad74f 100644
--- a/docs/document/v2/web/room_manage.md
+++ b/docs/document/v2/web/room_manage.md
@@ -24,9 +24,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 API 使用限制,详见 [使用限制](/product/limitation);
-- 了解环信即时通讯 IM 聊天室不同版本的数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im);
-- 仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以创建聊天室;
+- 了解环信即时通讯 IM 的 API 使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+- 仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以创建聊天室;
- 聊天室创建者和管理员的数量之和不能超过 100 ,即管理员最多可添加 99 个。
## 实现方法
@@ -35,9 +34,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `createChatRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/web/room_members.md b/docs/document/v2/web/room_members.md
index 052410c33..11ae5cec1 100644
--- a/docs/document/v2/web/room_members.md
+++ b/docs/document/v2/web/room_members.md
@@ -20,8 +20,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation);
-- 了解环信即时通讯 IM 聊天室不同套餐相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
## 实现方法
diff --git a/docs/document/v2/web/room_overview.md b/docs/document/v2/web/room_overview.md
index 89a425e04..2d90f2aeb 100644
--- a/docs/document/v2/web/room_overview.md
+++ b/docs/document/v2/web/room_overview.md
@@ -6,9 +6,9 @@
聊天室是支持多人加入的类似 Twitch 的组织。聊天室中的成员没有固定关系,用户离线后,超过 2 分钟会自动退出聊天室。聊天室成员在离线后,不会收到推送消息。聊天室可以应用于直播、消息广播等。若需调整该时间,需联系环信商务经理。
-聊天室的使用限制视不同套餐版本而定,请参见 使用限制。
+聊天室的使用限制请参见 [使用限制](/document/v2/privatization/uc_limitation.html)。
-本文以及接下来几篇主要介绍聊天室管理功能,如需查看消息相关内容,参见 消息管理。
+本文以及接下来几篇主要介绍聊天室管理功能,如需查看消息相关内容,参见 。
### 群组与聊天室的区别
@@ -32,7 +32,7 @@
| 功能 | 描述 |
| :------------- | :----------------------------------------------------------- |
-| 创建聊天室 | 只有被赋予 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 权限的用户有权限创建聊天室。聊天室成员数会受到版本指定聊天室最大成员数的限制。 |
+| 创建聊天室 | 只有被赋予 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 权限的用户有权限创建聊天室。聊天室成员数会受到版本指定聊天室最大成员数的限制。 |
| 加入聊天室 | 没有被加入黑名单的所有 app 用户可自由加入聊天室。 |
| 离开聊天室 | 所有聊天室成员都可以自由退出聊天室;也可能被动离开聊天室,原因分为:被管理员移出聊天室、聊天室解散和用户账号离线。 |
| 销毁聊天室 | 需要聊天室所有者权限。 |
diff --git a/docs/document/v2/web/thread.md b/docs/document/v2/web/thread.md
index ad3e45ecb..362531ff1 100644
--- a/docs/document/v2/web/thread.md
+++ b/docs/document/v2/web/thread.md
@@ -4,9 +4,6 @@
子区是群组成员的子集,是支持多人沟通的即时通讯系统,本文介绍如何使用环信即时通讯 IM SDK 在实时互动 app 中创建和管理子区,并实现子区相关功能。
-:::notice
-私有化版本不支持子区功能。
-:::
## 技术原理
@@ -25,9 +22,8 @@
开始前,请确保满足以下条件:
- 完成 4.0.7 或以上版本 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/web/thread_message.md b/docs/document/v2/web/thread_message.md
index ecf271a27..ccf9c1027 100644
--- a/docs/document/v2/web/thread_message.md
+++ b/docs/document/v2/web/thread_message.md
@@ -32,9 +32,8 @@
开始前,请确保满足以下条件:
- 完成 4.0.7 及以上版本 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/web/user_relationship.md b/docs/document/v2/web/user_relationship.md
index c9512245c..8cb4ac4a6 100644
--- a/docs/document/v2/web/user_relationship.md
+++ b/docs/document/v2/web/user_relationship.md
@@ -20,8 +20,8 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
## 前提条件
开始前,请确保满足以下条件:
-- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/web/userprofile.md b/docs/document/v2/web/userprofile.md
index ae33c3add..1534a2a5e 100644
--- a/docs/document/v2/web/userprofile.md
+++ b/docs/document/v2/web/userprofile.md
@@ -27,7 +27,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -68,7 +68,7 @@ conn.updateUserInfo("nickname", "Your nickname").then((res) => {
});
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 备注 |
| :---------- | :----- | :------------------------------------------------------------------------------------------------- |
@@ -177,4 +177,4 @@ conn
如果需要在名片中展示更丰富的信息,可以在 `ext` 中添加更多字段。
-可参考 [示例项目](https://github.com/easemob/webim/tree/dev_3.0/demo) 中 src/components/contact/ 下 UserInfoModal 组件。
+可参考 Demo 中 src/components/contact/ 下 UserInfoModal 组件。
diff --git a/docs/document/v2/windows/group_attributes.md b/docs/document/v2/windows/group_attributes.md
index de194840a..af6412d3d 100644
--- a/docs/document/v2/windows/group_attributes.md
+++ b/docs/document/v2/windows/group_attributes.md
@@ -18,8 +18,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/windows/group_manage.md b/docs/document/v2/windows/group_manage.md
index e1fd8e8de..669df3295 100644
--- a/docs/document/v2/windows/group_manage.md
+++ b/docs/document/v2/windows/group_manage.md
@@ -23,8 +23,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
## 实现方法
@@ -129,7 +128,7 @@ SDKClient.Instance.GroupManager.DestroyGroup(groupId, new CallBack(
### 退出群组
-群成员可以调用 `LeaveGroup` 方法退出群组,其他成员收到 `IGroupManagerDelegate#OnMemberExitedFromGroup` 回调。退出群组后,该用户将不再收到群消息。群主不能调用该接口退出群组,只能调用 [DestroyGroup](https://docs-im.easemob.com/ccim/unity/group2#解散群组) 方法解散群组。
+群成员可以调用 `LeaveGroup` 方法退出群组,其他成员收到 `IGroupManagerDelegate#OnMemberExitedFromGroup` 回调。退出群组后,该用户将不再收到群消息。群主不能调用该接口退出群组,只能调用 [DestroyGroup](group_manage#解散群组) 方法解散群组。
示例代码如下:
diff --git a/docs/document/v2/windows/group_members.md b/docs/document/v2/windows/group_members.md
index 544edad31..4350830a0 100644
--- a/docs/document/v2/windows/group_members.md
+++ b/docs/document/v2/windows/group_members.md
@@ -21,9 +21,9 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
- 了解群成员角色,详见 [群组概述](group_overview.html);
-- 了解群组和群成员的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+
## 实现方法
diff --git a/docs/document/v2/windows/message_manage.md b/docs/document/v2/windows/message_manage.md
index b016feda4..389a66a7d 100644
--- a/docs/document/v2/windows/message_manage.md
+++ b/docs/document/v2/windows/message_manage.md
@@ -31,7 +31,7 @@ SQLCipher 用于加密存储本地消息的数据库。即时通讯 IM SDK 使
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/windows/message_modify.md b/docs/document/v2/windows/message_modify.md
index a1a7433ec..7a7fcbe77 100644
--- a/docs/document/v2/windows/message_modify.md
+++ b/docs/document/v2/windows/message_modify.md
@@ -9,7 +9,7 @@
若使用该功能,需将 SDK 升级至 1.2.0 或以上版本。
:::
-你可以调用 `ChatManager#ModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次,若要提升修改次数,需联系商务。
+你可以调用 `ChatManager#ModifyMessage` 方法修改已经发送成功的消息。一条消息默认最多可修改 10 次。
示例代码如下:
diff --git a/docs/document/v2/windows/message_receipt.md b/docs/document/v2/windows/message_receipt.md
index b13109547..77687bbb4 100644
--- a/docs/document/v2/windows/message_receipt.md
+++ b/docs/document/v2/windows/message_receipt.md
@@ -4,7 +4,7 @@
单聊会话支持消息送达回执、会话已读回执和消息已读回执,发送方发送消息后可及时了解接收方是否及时收到并阅读了信息,也可以了解整个会话是否已读。
-群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执。仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+群聊会话只支持消息已读回执。群主和群管理员在发送消息时,可以设置该消息是否需要已读回执,私有部署即时通讯服务默认支持并开通该功能。
本文介绍如何使用环信即时通讯 IM Android SDK 实现单聊和群聊的消息回执功能。
@@ -40,8 +40,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html);
-- 群消息已读回执功能仅在环信 IM 旗舰版及以上版本支持该功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
@@ -223,7 +223,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
对于群聊,群主和群管理员发送消息时,可以设置该消息是否需要已读回执。若需要,每个群成员在阅读消息后,SDK 均会发送已读回执,即阅读该消息的群成员数量即为已读回执的数量。
-仅旗舰版及以上版本支持群消息已读回执功能。若要使用该功能,需在[环信即时通讯云控制台](https://console.easemob.com/user/login)开通。
+私有部署即时通讯服务默认支持并开通群消息已读回执功能。
1. 群主或群管理员发送消息时若需已读回执,需设置 `Message` 的 `IsNeedGroupAck` 为 `true`。
diff --git a/docs/document/v2/windows/message_retrieve.md b/docs/document/v2/windows/message_retrieve.md
index 8b70ded09..e3d434adf 100644
--- a/docs/document/v2/windows/message_retrieve.md
+++ b/docs/document/v2/windows/message_retrieve.md
@@ -4,9 +4,6 @@
环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何从消息服务器获取和删除会话和消息。
-:::tip
-本文介绍的功能均为增值服务,需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
-:::
## 实现原理
@@ -24,7 +21,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM API 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -115,10 +112,11 @@ SDKClient.Instance.ChatManager.PinConversation(convId, isPinned, new CallBack(
### 分页获取指定会话的历史消息
-你可以调用 `FetchHistoryMessagesFromServer` 方法从服务器分页获取指定会话的历史消息,实现消息漫游。该功能需在[环信即时通讯 IM 管理后台](https://console.easemob.com/user/login)开通。
+你可以调用 `FetchHistoryMessagesFromServer` 方法从服务器分页获取指定会话的历史消息,实现消息漫游。
为确保数据可靠,我们建议你多次调用该方法,且每次获取的消息数小于 50 条。获取到数据后,SDK 会自动将消息更新到本地数据库。
+
```csharp
SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServer(conversationId, type, startId, pageSize, new ValueCallBack>(
// 获取历史消息成功。
diff --git a/docs/document/v2/windows/message_send_receive.md b/docs/document/v2/windows/message_send_receive.md
index 91a9f94ed..f07581809 100644
--- a/docs/document/v2/windows/message_send_receive.md
+++ b/docs/document/v2/windows/message_send_receive.md
@@ -31,7 +31,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -98,7 +98,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
### 撤回消息
-发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)的**功能配置** > **功能配置总览** > **基础功能** 页面设置消息撤回时长,该时长不超过 7 天。
+发送方可以撤回一条发送成功的消息。默认情况下,发送方可撤回发出 2 分钟内的消息。你可以在 环信即时通讯云控制台的**服务管理** > **服务概览** 页面设置消息撤回时长,该时长不超过 7 天。
```csharp
SDKClient.Instance.ChatManager.RecallMessage("Message ID", new CallBack(
diff --git a/docs/document/v2/windows/multi_device.md b/docs/document/v2/windows/multi_device.md
index d1dd57849..6f8b5d398 100644
--- a/docs/document/v2/windows/multi_device.md
+++ b/docs/document/v2/windows/multi_device.md
@@ -11,7 +11,7 @@
多端登录时,即时通讯 IM 每端默认最多支持 4 个设备同时在线。如需增加支持的设备数量,可以联系环信即时通讯 IM 的商务经理。
-你可以在环信控制台的**功能配置** > **功能配置总览**页面的**基础功能**页签下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
+你可以在环信控制台的**服务管理** > **服务概览**页面的下点击**多端多设备在线**操作栏中的**设置**,在弹出的对话框中设置设置各端设备的数量:
![img](@static/images/common/multidevice_device_count.png)
@@ -24,7 +24,7 @@
-
+
单端/多端登录
@@ -38,7 +38,7 @@
多端登录
- 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。<br/>即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
+ 若一端的登录设备数量达到了上限,最新登录的设备会将该端最早登录的设备踢下线。
即时通讯 IM 仅支持同端互踢,不支持各端之间互踢。
@@ -176,7 +176,7 @@ SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(adelegate);
你可以按照以下步骤设置登录设备所属的平台:
-1. 在环信控制台的**功能配置** > **功能配置总览**页面,点击**基础功能**页签,然后点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
+1. 在环信控制台的**服务管理** > **服务概览**页面,点击**多端多设备在线**对应的**设置**。在弹出的对话框中点击 **新增自定义平台**,在**添加自定义平台**对话框中设置**设备平台**和**设备数量**。
**设备平台**的取值范围为 [1,100],**设备数量**的取值范围为 [0,4]。
diff --git a/docs/document/v2/windows/overview.md b/docs/document/v2/windows/overview.md
index ad8605484..13a4f6b3d 100644
--- a/docs/document/v2/windows/overview.md
+++ b/docs/document/v2/windows/overview.md
@@ -6,7 +6,7 @@
## 前提条件
-开始前,请注册有效的环信即时通讯 IM 开发者账号和获取 App key,参见 [环信即时通讯云管理后台](https://console.easemob.com/user/login)。
+开始前,请注册有效的环信即时通讯 IM 开发者账号和获取 App key,参见 [环信即时通讯云管理后台](/document/v2/privatization/uc_configure.html)。
## 集成环境
@@ -49,15 +49,15 @@ SDKClient.Instance.InitWithOptions(options);
目前注册的方式有以下几种:
- 通过控制台注册。
- 通过 REST API 接口注册。
-- 调用 SDK 接口注册。该方法需在 [控制台](https://console.easemob.com/app/im-service/detail) 设置允许 **开放注册**。
+- 调用 SDK 接口注册。该方法需在 [控制台](/document/v2/privatization/uc_configure.html) 设置允许 **开放注册**。
### 控制台注册
-控制台的注册请到 [这里](https://console.easemob.com/app/im-service/operative-service/user)。
+控制台的注册请到 **运营服务->用户管理** 页面下进行注册。
### REST API 注册
-请参考 [注册用户](/document/server-side/account_system.html#注册用户)。
+请参考 [注册用户](/document/v2/server-side/account_system.html#注册用户)。
### SDK 注册
@@ -83,7 +83,7 @@ SDK 不支持自动登录,只支持通过以下方式手动登录:
- 用户 ID + 密码
- 用户 ID + token
-登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/server-side/account_system.html#注册用户)。
+登录时传入的用户 ID 必须为 String 类型,支持的字符集详见[用户注册的 RESTful 接口](/document/v2/server-side/account_system.html#注册用户)。
调用登录接口后,收到 `OnConnected` 回调表明 SDK 与环信服务器连接成功。
@@ -113,7 +113,7 @@ SDKClient.Instance.Login(username, password,
);
```
-2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/server-side/easemob_user_token.html)。
+2. **用户 ID + token** 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 [环信用户 token 的获取](/document/v2/server-side/easemob_user_token.html)。
:::notice
使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。
diff --git a/docs/document/v2/windows/presence.md b/docs/document/v2/windows/presence.md
index 24535c2cb..01dd28002 100644
--- a/docs/document/v2/windows/presence.md
+++ b/docs/document/v2/windows/presence.md
@@ -6,9 +6,6 @@
本文介绍如何在即时通讯应用中发布、订阅和查询用户的在线状态。
-:::notice
-私有化版本不支持在线状态订阅。
-:::
## 技术原理
@@ -41,8 +38,8 @@
使用在线状态功能前,请确保满足以下条件:
1. 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通在线状态订阅功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通在线状态订阅功能。
## 实现方法
diff --git a/docs/document/v2/windows/quickstart.md b/docs/document/v2/windows/quickstart.md
index 0456a8735..eb7bacf87 100644
--- a/docs/document/v2/windows/quickstart.md
+++ b/docs/document/v2/windows/quickstart.md
@@ -25,12 +25,12 @@
- Visual Studio IDE 2019 或以上;
- .Net Framework 4.5.2 或以上;
- 目前 Windows SDK 仅支持 64 位运行模式;
-- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云控制台](https://console.easemob.com/user/login)。
+- 有效的环信即时通讯 IM 开发者账号和 App Key,见 [环信即时通讯云控制台](/document/v2/privatization/uc_configure.html)。
## 项目设置
实现发送和接收单聊文本消息之前,参考以下步骤设置你的项目。
-
+
+1. 下载:点击 [Windows SDK](https://downloadsdk.easemob.com/downloads/SDK/WinSDK/agora_chat_sdk.1.2.0.nupkg) 进行下载,下载的 `NuGet` 包一般存放在 `C:\Users\XXX\Downloads` (`XXX` 为本机用户名);
2. 将下载的 `NuGet` 包拷贝到自己的工作目录,比如 `D:\workspace\WinSDK` 下,以下说明以此目录举例;
3. 在 Visual Studio 开发环境里,右键点击 `windows-example` 项目,选择 **管理 NuGet 程序包 (N)...**;
4. 在弹出的 `NuGet:windows-example` tab 页面里,点击右上角的小齿轮会弹出 NuGet 程序包源的设置窗体,点击窗体右上角的 **+** 按钮,在 **包源** 的文本框内会出现 **Package source** 这一栏,点击选中,并修改文本框下的 **名称** 和 **源**。例如 **名称** 可以设置为 `Local Package source`,**源** 则设置为第 2 步中的目录, `D:\workspace\WinSDK`,点击确定;
@@ -99,7 +99,7 @@ SDKClient.Instance.CreateAccount(username, password, callback: new CallBack(
```
:::notice
-该注册模式为在客户端注册,主要用于测试,简单方便,但不推荐在正式环境中使用;正式环境中应使用服务器端调用 Restful API 注册,具体见:[注册单个用户](https://docs-im.easemob.com/ccim/rest/accountsystem#注册单个用户)。
+该注册模式为在客户端注册,主要用于测试,简单方便,但不推荐在正式环境中使用;正式环境中应使用服务器端调用 Restful API 注册,具体见:[注册单个用户](/document/v2/server-side/account_system.html#注册用户)。
:::
### 5. 登录账号
diff --git a/docs/document/v2/windows/reaction.md b/docs/document/v2/windows/reaction.md
index 5321aa96d..ee88e9ad5 100644
--- a/docs/document/v2/windows/reaction.md
+++ b/docs/document/v2/windows/reaction.md
@@ -7,7 +7,6 @@
:::notice
1. 目前 Reaction 仅适用于单聊和群组。聊天室暂不支持 Reaction 功能。
-2. 私有化版本不支持 Reaction 功能。
:::
## 技术原理
@@ -31,8 +30,8 @@ Reaction 场景示例如下:
开始前,请确保满足以下条件:
1. 完成 `1.0.5 或 以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-2. 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-3. 已联系商务开通 Reaction 功能。
+2. 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+3. 私有部署已开通 Reaction 功能。
## 实现方法
diff --git a/docs/document/v2/windows/releasenote.md b/docs/document/v2/windows/releasenote.md
index d8e2c66ff..9a6367530 100644
--- a/docs/document/v2/windows/releasenote.md
+++ b/docs/document/v2/windows/releasenote.md
@@ -181,7 +181,6 @@
- [在线状态订阅](presence.html)
- [消息表情回复](reaction.html)
- [管理子区](thread.html)
-- [内容举报](moderation.html)
## 版本 V1.0.2.1 2022-06-22
@@ -190,11 +189,10 @@
- 在单聊、群聊、聊天室中发送和接收消息;
- 管理会话和消息;
- 管理群组和聊天室;
-- 关于详细功能概述请参见:[产品概述](/product/introduction.html)
具体集成请参考以下文档:
-- [开通配置环信即时通讯 IM 服务](/product/enable_and_configure_IM.html)
+- [开通配置环信即时通讯 IM 服务](/document/v2/privatization/uc_configure.html)
- [环信即时通讯 IM Windows 快速入门](quickstart.html)
- [消息管理 Windows](message_overview.html)
- [群组 Windows](group_overview.html)
diff --git a/docs/document/v2/windows/room_attributes.md b/docs/document/v2/windows/room_attributes.md
index 5f883c454..3dbbce75b 100644
--- a/docs/document/v2/windows/room_attributes.md
+++ b/docs/document/v2/windows/room_attributes.md
@@ -20,8 +20,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html);
-- 了解聊天室的数量限制,详见 [套餐包详情](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html);
+
## 实现方法
diff --git a/docs/document/v2/windows/room_manage.md b/docs/document/v2/windows/room_manage.md
index de8dd6e1b..63bc44afa 100644
--- a/docs/document/v2/windows/room_manage.md
+++ b/docs/document/v2/windows/room_manage.md
@@ -25,9 +25,8 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html)。
-- 了解环信即时通讯 IM 不同版本的聊天室相关数量限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
-- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/server-side/chatroom.html#添加超级管理员)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 只有超级管理员才有创建聊天室的权限,因此你还需要确保已调用 RESTful API 添加了超级管理员,详见 [添加聊天室超级管理员](/document/v2/server-side/chatroom.html#添加超级管理员)。
- 聊天室创建者和管理员的数量之和不能超过 100,即管理员最多可添加 99 个。
## 实现方法
@@ -36,9 +35,9 @@
### 创建聊天室
-仅 [超级管理员](/document/server-side/chatroom.html#管理超级管理员) 可以调用 `CreateRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
+仅 [超级管理员](/document/v2/server-side/chatroom.html#管理超级管理员) 可以调用 `CreateRoom` 方法创建聊天室,并设置聊天室的名称、描述、最大成员数等信息。成功创建聊天室后,该超级管理员为该聊天室的所有者。
-你也可以直接调用 REST API [从服务端创建聊天室](/document/server-side/chatroom.html#创建聊天室)。
+你也可以直接调用 REST API [从服务端创建聊天室](/document/v2/server-side/chatroom.html#创建聊天室)。
示例代码如下:
diff --git a/docs/document/v2/windows/room_members.md b/docs/document/v2/windows/room_members.md
index 221968878..8cfc9ed9c 100644
--- a/docs/document/v2/windows/room_members.md
+++ b/docs/document/v2/windows/room_members.md
@@ -21,8 +21,7 @@
开始前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html);
-- 了解环信即时通讯 IM 的 [使用限制](/product/limitation.html);
-- 了解环信即时通讯 IM 聊天室相关限制,详见 [环信即时通讯 IM 价格](https://www.easemob.com/pricing/im)。
+- 了解环信即时通讯 IM 的 [使用限制](/document/v2/privatization/uc_limitation.html);
## 实现方法
diff --git a/docs/document/v2/windows/thread.md b/docs/document/v2/windows/thread.md
index 0d4813c3e..9b424912e 100644
--- a/docs/document/v2/windows/thread.md
+++ b/docs/document/v2/windows/thread.md
@@ -6,9 +6,6 @@
如需查看消息相关内容,参见 [子区消息管理](thread_message.html)。
-:::notice
-私有化版本不支持子区功能。
-:::
## 技术原理
@@ -29,9 +26,8 @@
开始前,请确保满足以下条件:
- 完成 `1.0.5 或以上版本` SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM API 的 [使用限制](/product/limitation.html)。
-- 了解子区和子区成员数量限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM API 的 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/windows/thread_message.md b/docs/document/v2/windows/thread_message.md
index c0dc074a8..9517d47e8 100644
--- a/docs/document/v2/windows/thread_message.md
+++ b/docs/document/v2/windows/thread_message.md
@@ -30,8 +30,8 @@
开始前,请确保满足以下条件:
- 完成 1.0.6 以上版本 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
-- 联系商务开通子区功能。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
+- 私有部署已开通子区功能。
## 实现方法
diff --git a/docs/document/v2/windows/user_relationship.md b/docs/document/v2/windows/user_relationship.md
index 00ab02db7..31326c2ff 100644
--- a/docs/document/v2/windows/user_relationship.md
+++ b/docs/document/v2/windows/user_relationship.md
@@ -29,7 +29,7 @@ SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理
开始前,请确保满足以下条件:
- 完成 SDK 初始化,并连接到服务器,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
diff --git a/docs/document/v2/windows/userprofile.md b/docs/document/v2/windows/userprofile.md
index 28cbd8cc6..e29fa15b2 100644
--- a/docs/document/v2/windows/userprofile.md
+++ b/docs/document/v2/windows/userprofile.md
@@ -24,7 +24,7 @@
设置用户属性前,请确保满足以下条件:
- 完成 SDK 初始化,详见 [快速开始](quickstart.html)。
-- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/product/limitation.html)。
+- 了解环信即时通讯 IM 的使用限制,详见 [使用限制](/document/v2/privatization/uc_limitation.html)。
## 实现方法
@@ -56,7 +56,7 @@ SDKClient.Instance.UserInfoManager.UpdateOwnInfo(userInfo, new CallBack(
));
```
-若[调用 RESTful 的接口设置](/document/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
+若[调用 RESTful 的接口设置](/document/v2/server-side/userprofile.html#设置用户属性)或[删除用户属性](/document/v2/server-side/userprofile.html#删除用户属性),请求中必须传以下字段各客户端才能获取到。
| 字段 | 类型 | 描述 |
| :---------- | :----- | :------------------------------------------------------------------------------------------------ |
diff --git a/docs/private/media/conference_android.md b/docs/private/media/conference_android.md
index 316262041..aebc7b2b6 100644
--- a/docs/private/media/conference_android.md
+++ b/docs/private/media/conference_android.md
@@ -70,7 +70,7 @@ dependencies {
环信为管理者与开发者提供了方便易用的App工作台– **环信管理后台**。
通过环信管理后台可以完成应用创建、服务配置、企业信息修改基础功能;同时,管理后台也提供了发送消息、用户管理、群组管理、聊天室管理和数据统计等管理监控功能。
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -255,8 +255,8 @@ EMConferenceListener listener = new EMConferenceListener() {
### 8. 加入会议
-在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](http://docs-im-beta.easemob.com/document/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
-若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](http://docs-im-beta.easemob.com/document/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
+在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](/document/v2/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
+若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](/document/v2/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
登录环信ID以后,可以加入会议了,通过 [EMConferenceManager#joinRoom](http://sdkdocs.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_conference_manager.html#a8940f54febf2086ccd978d75980c7763) API加入房间。
- 创建会议成功以后,默认超时时间为三分钟,超过三分钟没有人加入,会议会自动销毁;
- 另外当会议中所有人离开2分钟后,会议也会被销毁;
@@ -1175,7 +1175,7 @@ public void onAttributesUpdated(EMConferenceAttribute[] attributes) {}
#### **私有部署**
-私有部署设置方法参见[私有云 Android SDK集成配置](../im/uc_android_private.md)。
+私有部署设置方法参见[私有云 Android SDK集成配置](/document/v2/android/privatecloud.html)。
### 音视频管理
diff --git a/docs/private/media/conference_ios.md b/docs/private/media/conference_ios.md
index 4bf4035f8..1c8f3cbc5 100644
--- a/docs/private/media/conference_ios.md
+++ b/docs/private/media/conference_ios.md
@@ -112,7 +112,7 @@ EMConferenceManagerDelegate.h
### 1. 环信后台注册appkey
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -185,8 +185,8 @@ retOpt.enableConsoleLog = YES;
### 7. 环信ID注册、登录
-在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](http://docs-im-beta.easemob.com/document/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
-若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](http://docs-im-beta.easemob.com/document/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
+在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](/document/v2/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
+若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](/document/v2/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
### 8. 音视频功能初始化
@@ -834,7 +834,7 @@ region.z = 9;
#### 私有部署
-私有部署设置方法参见[私有云sdk集成配置](../im/uc_iOS_private.md)
+私有部署设置方法参见[私有云sdk集成配置](/document/v2/ios/privatecloud.html)
### 音视频管理
diff --git a/docs/private/media/conference_web.md b/docs/private/media/conference_web.md
index 56f54527d..ebdb7527b 100644
--- a/docs/private/media/conference_web.md
+++ b/docs/private/media/conference_web.md
@@ -35,7 +35,7 @@ HTTPS=true npm start
### 1. 环信后台注册 appkey
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -86,8 +86,8 @@ emedia.config({
### 5. 环信ID注册、登录
-在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](http://docs-im-beta.easemob.com/document/web/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
-若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](http://docs-im-beta.easemob.com/document/web/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
+在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](/document/v2/web/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
+若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](/document/v2/web/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)。
### 6. 进入会议
@@ -604,7 +604,7 @@ emedia.fileReport() //无参数
#### **11. 私有部署**
-私有部署设置方法参见[私有云sdk集成配置](../im/uc_Web_private.md)。
+私有部署设置方法参见[私有云sdk集成配置](/document/v2/web/privatecloud.html)。
### 音视频管理
diff --git a/docs/private/media/one2one_android.md b/docs/private/media/one2one_android.md
index d69970715..c4355c8d4 100644
--- a/docs/private/media/one2one_android.md
+++ b/docs/private/media/one2one_android.md
@@ -70,7 +70,7 @@ dependencies {
环信为管理者与开发者提供了方便易用的App工作台– **环信管理后台**。
通过环信管理后台可以完成应用创建、服务配置、企业信息修改基础功能;同时,管理后台也提供了发送消息、用户管理、群组管理、聊天室管理和数据统计等管理监控功能。
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -192,9 +192,9 @@ public void init(Context context) {
### 8. 环信ID注册登录
-在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](http://docs-im-beta.easemob.com/document/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
+在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](/document/v2/android/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
-若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](http://docs-im-beta.easemob.com/document/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)
+若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](/document/v2/android/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)
### 9. 音视频功能初始化
@@ -555,7 +555,7 @@ EMClient.getInstance().callManager().setWaterMark(watermark);
### 私有部署
-私有部署设置方法参见[私有云 Android SDK集成配置](../im/uc_android_private.md)。
+私有部署设置方法参见[私有云 Android SDK集成配置](/document/v2/android/privatecloud.html)。
## 客户端API
diff --git a/docs/private/media/one2one_ios.md b/docs/private/media/one2one_ios.md
index 4b2bcf299..a83dd55c1 100644
--- a/docs/private/media/one2one_ios.md
+++ b/docs/private/media/one2one_ios.md
@@ -49,7 +49,7 @@
### 1. 环信后台注册appkey
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -133,9 +133,9 @@ retOpt.enableConsoleLog = YES;
### 7. 环信ID注册、登录
-在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](http://docs-im-beta.easemob.com/document/ios/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
+在进行音视频通话前,需要首先登录IM账户,登录过程参见[账号登录](/document/v2/ios/overview.html#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95)。
-若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](http://docs-im-beta.easemob.com/document/ios/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)
+若您还没有IM账户,需要先注册账户,注册过程参见[账号注册](/document/v2/ios/overview.html#%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7)
### 8. 音视频功能初始化
@@ -591,7 +591,7 @@ options.enableCustomizeVideoData = YES;
### 私有部署
-私有部署设置方法参见[私有云sdk集成配置](../im/uc_iOS_private.md)
+私有部署设置方法参见[私有云sdk集成配置](/document/v2/ios/privatecloud.html)
## 客户端API
diff --git a/docs/private/media/one2one_web.md b/docs/private/media/one2one_web.md
index f4771f439..128bafb08 100644
--- a/docs/private/media/one2one_web.md
+++ b/docs/private/media/one2one_web.md
@@ -36,7 +36,7 @@ HTTPS=true npm start
### 1. 环信后台注册 appkey
-在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](../im/uc_configure.html#创建应用) 。
+在开始集成前,你需要注册环信开发者账号并在后台创建应用,参见[创建应用](/document/v2/privatization/uc_configure.html#创建应用) 。
### 2. 创建项目
@@ -348,7 +348,7 @@ var rtcCall = new webrtc.Call({
### 私有部署
-私有部署设置方法参见[私有云sdk集成配置](../im/uc_Web_private.md)。
+私有部署设置方法参见[私有云sdk集成配置](/document/v2/web/privatecloud.html)。
## 客户端API
diff --git a/docs/private/media/rest_introduction.md b/docs/private/media/rest_introduction.md
index 6d980baee..8ea04a915 100644
--- a/docs/private/media/rest_introduction.md
+++ b/docs/private/media/rest_introduction.md
@@ -1,6 +1,6 @@
# REST接口简介
-音视频云的REST接口规则与即时通讯的REST规则是一致的,参考[服务端集成](../../document/server-side/overview.md)
+音视频云的REST接口规则与即时通讯的REST规则是一致的,参考[服务端集成](/document/v2/server-side/overview.md)
-在调用音视频云的REST接口前,需获取token,参考 [获取管理员权限](../../document/server-side/easemob_app_token.html#获取管理员权限-token)
\ No newline at end of file
+在调用音视频云的REST接口前,需获取token,参考 [获取管理员权限](/document/v2/server-side/easemob_app_token.html#获取管理员权限-token)
\ No newline at end of file
diff --git a/docs/private/media/scenario_live.md b/docs/private/media/scenario_live.md
index 03b9c034b..907439311 100644
--- a/docs/private/media/scenario_live.md
+++ b/docs/private/media/scenario_live.md
@@ -56,17 +56,17 @@
多人视频会议如果需要环信即时通讯云的文字聊天室实现IM沟通功能,请详见文档:
-服务器端: [聊天室管理](http://docs-im-beta.easemob.com/document/server-side/chatroom.html)
+服务器端:[服务端集成](/document/v2/server-side/overview.html)
-Android: [聊天室管理](http://docs-im-beta.easemob.com/document/android/room_overview.html)
+Android:[Android SDK 介绍及导入](/document/v2/android/quickstart.html)
-iOS: [聊天室管理](http://docs-im-beta.easemob.com/document/ios/room_overview.html)
+iOS:[iOS SDK 快速集成](/document/v2/ios/quickstart.html)
-web端: [聊天室管理](http://docs-im-beta.easemob.com/document/web/room_overview.html)
+web端: [Web IM 介绍](/document/v2/web/quickstart.html)
-微信小程序: [聊天室管理](http://docs-im-beta.easemob.com/document/applet/room_overview.html)
+微信小程序: [微信小程序SDK简介](/document/v2/applet/wechat.html)
-PC端: [聊天室管理](https://docs-im.easemob.com/im/pc/basics/chatroom)
+PC端: [桌面端集成说明](https://docs-im.easemob.com/im/pc/intro/integration)
QAZ9>Dl3Kywd?5S=W|GH8h&7R$lGgk01(gX4k~;=J5Zus5zN<&>
zH;%0{COc*wxGnQ13z|GJ_pQxR0y3pvv4BoI!4}QP637W?+i8>4*zY!dmf7v0LJDO}
zWC`B*`Jrpvg44Hl>ac}ZsqJMj|NZ;VYn`XrE|{e&@~7{6ESgNuOsdsCJiQt3R9a_>
zIbQNWI#?FOZ00JP?l;A7?nuj?O8PokUzBmaK9{|gszEhV#-
zZrY;&XSnLa9frIL=k(jm?9$9ST9XlY%8oCm7Tf7Bs-Ib!bgnQhIfj{rr%4IS$!2_dJbLApyOY4i9wnu^^y%W1o7}n`rb8StQ$FE=TR6&G
zJvas{1@UdMnEC=OF@nFSt~_|9(`)j@(dNjn^(LyuuI#{)4;%Zsk9?w5Sx09Xp-J(C
zX?t1k?TLSZRN!dKwI8_s=m7|Y)gm9&)$7+2fX$pLA%w(zZyIMW#w?_XEBicbr6s>`
zg6vAcDtCc6deJ9-c%hPy$I`p~g1(S@$9yKUfXI3pu!sb@zsQoyNVMS{
zqnebuT{vroyR*4BrS@J#=Gqb>P?!S_&bfb`SG4&*K
z^0~e>jr1Josy#DMR{ods{ND`Gm#0vxdaXLwJCQzj)B%&T7V!b?lQHEjH<{^uXg%%c
zCQEW?bYHjpHNfWagnx;7rrslD;?~&v&h-<=T_s*iuK*^U7xj)){_=KqkoYSQX`hV>
zHkY?jV)@ovR~>?bcxfgJuBVxHTwk2XF>}%hVdSUP;MlxY)^bn9ylqn-YWkv?`M@bv
z(tmZNlx?v)sqdKF?MVT#XV5DU$XK+30Q{_+J42`?0Olx1Lk_k(Z|v{0Okbvur25xr
zhIk0CNpbx9EC55+A16X4fq^HI5>u}MvAePpL9uVb;9*!_`O=MiHE!?L8c@f!5?7frok?vcqb(OFnMrHJkY
zNMU-qXo9chmraA}72Usx8Yuk&-Mo_N>YvPC+So|azPSL*v+&Ud{e{SmosUnqD~&Dn
z+^qbEK8hj;2ckb~trDI))lv>O+8+~l#@r1!V2VvEt?wcVyXKr
z?tbx@l+rj@7Mj>iFR5-VnA_Xj+SJD;f(+rcvJhB`JTNd~*`VizNlURmFfgSpSCwba
zs=t?pH6HWmRld6^!B$*Vy7BV^?N<6|<+7jf>S5qlDT|eu77c3H_UZD03N;ng%(52L
z#ihQq5ZknSOO$VP=eEC~Y|c=X+2zUQs`Es%fc=SN0qLCe<@&pbyT2_E{}X0oJqS?(
z(Ebk-bm3XI8H`*yQ|3qU`=Z}Qj=%`OYM3mHyKhCVd&l*UB^pqtjrzSOq}Q)k)54@S
zN+?oF+IUunM)DSKB2NMh
zY!Fcnx|RaSC7GI0fSQ&V(GKhi?NYXVzgTIb3RKrkSzpFI8;C?pPLJ^xng$2Ek^gDw
zZ~O7hfu=)$5vD(6YjfM0NmUXG%cOVr+Zn~}S6fw7Y@ZccsJt$!9RWedK(V8}X&pe2
z8T2&C*Y-nso-~O{523R4zDt#r`iSThs6GWe0&4KnAQW#i2q>*nT$KqnpzPI=yknyQ=PJ8PvPZ8EEB
z;V;%FiV*52PN~>Cx3&wueQ$gE!{!Vb6$uLet5(sPCHSV@S7)rOiyWKJZ%Lg044Eq@
zQ6(*A<)foLbQWj8a$SBIGVSZr63;vjQScJ6E4lJzYir9LQpTLCc)t*gr@WH@PWIk)
zUYGZLHw;L$_SevYY8p$cQ*$)b>;iIqVE^OUfV@D|U|f1SUsg2pD&(`BQMg&qtC?#=#-~6ZbznyTvx4xuxgm;0hXPYZELcEb)y_w*8CX$Pr`_8_s>jWW_7pRa1s5JCXeOz!M*w_?j
z4VLH83jfn}|H=aw$bo91X-m>A`JWQTSR^sP937GL%>Ndm_#ehrz)%6rWXz)RiTJ1A
zKQaYM`K;h?GR(iJ-2S(l|9?aOzeWEaoTILs#I_*!?gq&Eb(h()8n9&2OhCtH<<7W-
zEeAO+zKPjekc<+JG{qp(UwzusT&p65`y`9HPj@e>|KAe8|5>Mbw+?MBE31p<;utv0
zihNLe!K00fq1>Iq%cTlOK2Q^5U3JOzl}ckb@~=q2VBTxK`k<&tqrR7Z!CCUYP-!o7PZ
zn7y0PAT@S0ivHxUYU}0aQyf0kn)C{XXDsp7CJFD+y4|DqxrOIGD3Gd()s}~~vGjO%
zkDCy3d|Qk&X;z6tJT-O4ZpmrW1UkP#2hkOHx|>TT2L^j&-}&gHcAyo%5F`DTeSB@A
ze41bJd>c|Qe3~BZWuRdFF@B69E1GwRi_lN^A^^ChumtY>Y$hQhdcOl_^ltPMz@F+d
zZ$(S5#{%jIQL{zQ3fARESIvJoq
z{r7FWX90^10(@M+M^YNjj-C{e#l10$14)G6&aZuX{Sw33Dl-Go1O#wMfh_vss0cvI
zunoYMXoWg}64^hyI4B9ANvRnbd6}d^(J)@gXLpG52x^Xr6+q72~6S2rH7&~
z9G|2XPf`moVpjS)gG)7%3>rzgKvr?qT~i_2`E{MvJ$@b<&nB~@)W|~fWGse-J|&;2
zCoMKkZZGbIXwUghjm;W_k-}eloT8Wtxfkk+e}WVrzk5Hv&@yul{dQA(xI{nyg~q$t6!o{A)aQp1g9QOHwFmirSoOXP$A$a-9^-amK001!u-yo0E8U@HP
z_U>fCWI|%Haa9yR5OC`iCqS-DWj53}4E<#{ROdEty@5fv<8g5G=BQnv(a~%;i?b^f
z4Q$bKw7|6Q0(`VNWKVBH23
z3Pl67xYObiT#JO_?hXwuMSI_#d(U~!-uvu*_W%12coLHJuDRBlbBr;^V*MB5B*5Ov
z@-?|Jmy(}VZ_)nDeS=i|kOgb;DHby9-lwPfdF^jU^!g4MgAJ
znhp7$E~fPg$2Wg@70**D
zu5k=Fs$5XiyJK{ibZbfgE@{f5u`+8DkZee!_Vvq)JG3n
z*sa;w&*>w8IO*%>Xkm47a&q@HDMb(3j=E5JF5MZHTL7qQMCeq@^-&~XR3fL_!&rH9
zA%wQO-)C5D{b{UBUw2F|Epz~=Biswj^(ReEv|S6f#*Q)8OE5q^q@spnQ;k_{F?5Yt
z08GfH+yV@7DPV7dZTAn{0mie!Wm9R$aa0iHDrE=wnT&ij>WISqe%1_ZeBXh+QOUbm
z)CJ&yg?qNolW_;rQ#2~g6#-R8gorC(yTpgE2Ta6DrzQkGsqx=XxWW!2IhwV0#*34@
z`FH>61Y3M*6(vX{5);k&7FtU-15B)LbG}`m@C5Dp`7t+t!+M8+dA1ct8f}zY^X#+A
zqVXy==3MnuJlYTMf<=IfRy>?v(c1NDI$DTR2
z=HB2PKEjFPSqyPpv?8?hcrc(bpD#!0_>~C3f0V(T7zo(j)Bv(mNrMjXXi(s
z4%2S=w#c?`{Y+Jn#$@`A4&{Oti%oi-1g%YL@p;aj5)A^2T&t%=XQgcg8jIF-MYNf?
zQ$OY;}p5+X9E5r+6|Uz
z3zPdTzuD>KQ>RB1Mt-5=076|x$6mRX;8dJPyz_{0pN--Q+}EK1*A{`fk5m2pCH
zla0mLc?>>qK
zQhlbSWh;)p(+s^B$RHSar+Lc~K4ZZUX=*Z163?L|n}~NyOyk6`Q}DK3zqEb)2h7bz
zbDaJ>WjWEM60)$7$2TcX6Nx1lTcS~&QG!D)swWjqX2ybls#W^hjakM`KUfV%KsuJn
zuJ|qQ+iO6`W7hkDmXCGxt*V4XspZ%Q*G>e)x$PeDR-u0y+Nf9p%VT#!(UoKs$P1>H
zRPiQ^d{5VTaBQo$d3o1L)$(I1`#1H21vf7jgm`QxEJo#&DCM+f|Md3<&jBZ&A+UB$
zqbtZB`4~zhHM(vaEAlJ>Mg&zu_NC$zeR?>Nl#>Ssj^st%-KkDQsMI}WeeIG@1%lTV
z3)uuE90sT<0!QmQDoRQ_pJ5Li(`x2g?MidLD369oIm`U*&C}iTmKlHEXA{=*d-IL6
zty2QsSNdXMfVJ6-PYmJ(ce_Q_Hn%l^4Uy+ho)}d3O*L*;3U(;k{3>}>an9?OrXi4j
zJ8%+vpT}{+X6I-mR~|#nw)J(CY^z8uoqy~(MY3;S$dnZ43KJo!3L0h%vX4Z>DHva^*{%|
z5?yvkApM|T>_MkI2F|@&@}A3Xc{VNJVt6B@ean43BkHdbShBF1*pRC~GNXPbXctqz
z|HjxWcupmT~-Sjy>xQkCR$s7Qnh5U;_V!DR4=wws|6O=>yunX79-wg
zCF+GADXFwNWb@yYXsH17t9b`^Q%z|7ZK}pkYa!oXUny~?1vdUzZxoj|&kzXOfC?4w
z!b+)>D5nHAtvrhr?+TUHjMw{CSEvUY`?1?CJZ&Pg4hsoE;4UK#GS6}pe1|tDnKi4`
zEH-n;yS&9_0Ot>89kZh4V$sOvT`#iFf*sFo-hbU|Tn;5S1$+R{nt7_mtW|NuPbuuk
zLU+8B+=?{HcE0w{oVW~s7%8lqD0+({*p!wUOD(pb@$7tSxMMF>*sEgeMF*Mq)$wZ<
zoKMx>yp@V!B^g2<_Myvm=2wE#PGnLx;1V`2u94=UOtD1`@#4bJwM#wgFR!X`?<#rP
zr2JD{=Z_G4xM3!wZ1=n|_cSfs{8lR|szu}nnzs09iBhDzv%J=iaJPAbiqG;p33Ag!
zNn3o&r7l&yi@Widx!R;;qfflpO8V7}?bwZ{17`y~I1aU`sg=irKYA&x>(*`zm~I9a
z5)z!FXBaO9tTQ$_xKYmkeFit{|0tA1OaRS9mJ7qvkPu%Ff^RuftBb~7a=_syw2P%){|z90^BkQ7IqF=
z1*OY0;MSvkYK*qyZu8}|CxLhFx{l*2Uk`8(A<%9+4qE1v4cd2S2dZq!nh
z1*Ig+a2%S_M8oc9EX|Z4mhs{E@xsURLIqLf9$kg=M$MM6=?XJ>o3dG+
z7apQw=|h?l-WKx$(u=%5#^3q@+Orx5$_?#FUeih1Ft=OXQq_qeg)0y7*CLvC&2cU&
zX8?FPV*W&Dr$|@CAlN3~3S7FFzhF)lVdGZAZCXKQ-CI7sL>8!7s49tktrJ!`(W-sE
zdtMQW((#i2r?v$!A8ejA6sGZ+mBBDQo&lI9Y0O!69h79t--5oeldMo^*@r(PHQDie
z6#8r7YCzF`+CEfcBJWcbeN&O8v>s%Ol+SBNu$G5?|04p65p7sEuYQ(VG(AxD!iBtL
z-rd;O3@7b8qrjnGfjIvrnLt$=r9Q92TjAQ>$GcnM>Z?Sd*KBLWM5(Px#QI$itX}Sp
zqb5sCr(3gsQ16@V?Pgj|O60m}U!J_U3DN+=xUm3RQ$oKB8?qDY=Xv8998D)5hfq0W
zsaESn_f5&9tf%tse7>I_aC?z|eSJJsv!Yr|$?G|qbiWm_)2K=s0jq`GxTT(d7!<^=
zyzi+rdZ2Mvpp1V`I|{d{WI6AC`=!8^Xj29{lbndiyu-0{
zYy3u#`T(#Mv$^}0(*06B&EJ2UxAeJtsLX`PiBGqX@1)z!?T8q*W2$JTf2dM#d53xu
zi>A_E7K3m1tV?3Ep4G9V3jI;r~n@0pMj&rNrkqW=X8xJTejQ)9W%#L@`NJl1YPF(&}e@Jkm*d
zE=;1i=qP`w?GJ2-B4@LHo1RX+#fNT?^*7a%i=HeCSD(FDl@d>%k5uf{_q%ic`fg#p
zfb(E{`Pp$-6=kRZkAaYFSbZr3z
z)q4K5%Jno5j=>3kM9Ky)CbntAC{!OspF&kf`Fwx>v=C#tXWsppeuOaS!&n!ILW3%b
z?J;JJx(s3!%L(OarbLXMVODy~kfq(mB&_nsRMRL#Bq+NC>>H2$Tx%q9L
zs50-nT_CuM5-lfdIw!>Dxw&pd>X3q($aP+3C?I?=vJc!+Yc6*Lgr$Z2iU-0eN|g1{0r~%}=7R
z-}dTWHl+>5oH46w7kQj+kT-R+XSz}*wcT3+7lhv?m{}$ghj>;`I5&U#t*lj|?PwSF
zsxTXzu2bZPinLmG6}K}^^MiLI?V7^}`E)o!pHLEI;`|n_xm?CuDcW^lpQMd=;a5ueR`RiMz_
zX(b^HA>b*-PK-k-$OGVheX6X@fG)KkAp>Oy|0;6WNf4~wO>SRjBn$+`w*jvH&hzH;
zCe^VyK|{FiXq6WULfKZdoNdUfhbn$Bj{&An#UhCg*w*Igg=
z%X4yB#JrRh+y?ZJJ-~^oOcNUz!5~5XdQ)#NG@UW
z;h|m?W#N}H`O?VFrQ7dhLyAXCOQidSB(lb^JXGsja+rR#O|9qheBSdFw(Ji##zDr~
zwHuP_Q?;A6(^{H!>6J3mzH_02aVWD_i?=Br-Jvj($_bSQUA7652PH&pN2VOaakb^q
z5qA|UdoDckyJnsIO@Dq~ipP$u5`&hBvSE*!au32JP-osQW8}v~d$lirHjmbr<*-8c
z^1DdFCl_3GA%)}WhzgshCag-NVN}Ogo;QQFY7kCIi1yjVreWv3$wk#imGC*y~(8LswlG-4wUe-1^@G=UrQYuoWu@wZm&;Lay3zhXF_c!$jTw2QKC2p
zo6;KNftf~41+n?6^%Dv|^J2_Uco}`*=js(Md7_nz$JM(Z&t7z#j7t87s$OS2pe~H&
zNKI56ScJ1e=kU$yCJlT(g~^Rszwun33;#%ue-_1!Mnv;3)KPG_0iMof(TZv4c#up;
zb4`@%ci)|9>*7)k0tX1mcHPSyjup1<<4}AfVNj;ZOadkb^0lor6>?>^j9}m1X
zQY;dO>(=`)zv8oWAiH4y@OBDfsToUE+*tI^;VYOKQioNUcwR%mk>-Z$iY}E;auMGt
z@`F+W%W$PgWUv2-e5DdscQ`#h*%3&C!Z`2b7m?j!BVG*RHJvog3_JJwZ
zW^BBBY5*vI{38kb;EI4P^iPv&7Pu8U7-65~xGZIHuls!bpKVq^RJ~oH|KYQf*i$n`
zksUJZ`_S0FqU$Ou)!g7*Jb?bPhRw!idQ9?q$l0a3NxvHPCPHSeh;|JvWa740_j{gx
z1+yXP%B+%q6Dc$LzM1mzd5XA9<8>-|&(0I@8qtM83s>sysW^5oCXBoU*mP>mpRkNj
z8@j)#wCp@0HXy~9PWRMdT5$vV!`v6#BVmUH5`BuYLB8$V7R2o%2votZEQE}%UG93;
zzOPHtHcT6Kj!YYyn65|kDb}3eM|S?K93*Sp53o!f-$|2cFe-0(BlQg0$~j*t!x@=e
z;wExu=ex5!hry$DM3t%Wsz(}Kx+G^dEV{HZhXy6H_rKvsxa0A=-acEJzo3Hm`OqHccKzmg@XHh
zybt8un|9Uysoy&B;CpRHy?PK8GX*$$>zDZh@4GkL2^b!_OY=FLH{={p
zs*x>v4`+ZPqYNVvXr--TDJcC$}Y$^B%F^er^NYlN8@h^9Hg0D*O;`
zPN~ki8VtFYY#S;bsGSqgax~gvxCnjobCdHkOmu>_>u8#hnm}3X%2@btpz^SDbm-HH
z!_3*QQFIJ_^I{9)mtARDz8jU__4i+^hti+K^3%6~yt|vpHNAXr=aM
zqbb5s3;#&U<0pJ`4@gU$1~_{Xh7pKxz!u%CSg{C7wqg)rVCp-)QdL6vV4f`ngD
zd9B6SMSMjxF{Zn!l3GP3e?I|$Bm=2ED8AUQrQr2%v}7Cr)@a7Or19Vi6D71)M+bJ0
zJ?{Ti4%gF&_DSPGgFczy8y3&zEh63no|LaHr#JZDnU3c%3!1$MeGy8M)~VZ_u4ok^
z%Y=;TofJ+@yg=+6OaYXPjWBpmU=e83`xa%pLBbS}9nHra$*fjIEY1jNU@7@3F2M0{
z9x)eivukLQ`$>a2Dd};f80AxY(#d2?V^!l=`zYg>c<;7vZ;>25gI+cHxJl$s17vg+
zpK-Ze0w8PjQ%${Z3?Po0DPwx&9q?$jP=e%ZUkxH|Xv_nQb*i@+N3;f_r?u~n>LgzkfR%HT}z
z8n8bIlJv$iq@U!f4hb*b|5>*yLYbct9Op
zrIdtmr65kgMi=!?PS}T|egamh+F|+ZJCrKPvad_*gTJ~1eS7z}BO!DUk==*2poko%
zyt$&+p~*VYF$yXzz+zOYmydZ!%N?!O2-wkL4_A^5*8+#T3x&_mZ{NCzbQ6w8s3)Xf
zzz2l)>Q?()C!@R~3&La&5IY4|&J}3;%9k)IvVeCwSX_`zPGuc>CNm~y2oN{e&nHLrvKS{8k{|%G+XdK>fFEn
z`je(%WajnC57iGvcCQsm>iZr!DbmiZ97u1i2cK>&h&12wLH9nglre1{ZnngVy?NA8
zO}eOL`}NFvJ-N!Pxk|U`!MZsQ4c3R*NFmY)bxPwZ~#-`OcwXy`4A_m
z$&vA6)~_!q99!?SY2^aX&xTYW^7D6+dRY{}d|KACLmj!W=Yb8shERp0e(j^qBg-r~
zj~T0c=P1nyGhxjTs}NyqQ#3Vsnv>pUibci}H$$);yD44o$1D=MXr3$+Dl54VAa`RW
ziLJ4YT9!L;0_eVM13B}u2a|xiq|#Lu#fS>s#zx8m1Xk$dZdXl`6}HS6lC0yctk2<8
zWmME|M!Ti8>^;?HhEcoyVcv(+7MY(GW$P4sxElO&+^!Sl^{3EjJj4e$ZGju3!O0Q8!|c%Ei>&+TDs04tr8
z+B2t!6AaJ>sl6u#{0WAs8tprD8;y}k@8@(jK=c5O`qqEQb|(NZPspq?xHNE|HXB`o
zT`BdXxwrDlG35#vh}P#mpYt^kRWxO_3Y4~xtt+iXPf1NouvD^aM9Zp|IxAek2g=AM
zn==md^@slTe*OC%mOgX=-zzQ4fq&Mr>0>|l`(z&>C&%AT)1RunMv0iB@TMJNXZCkG
z@5Vl1&qfs;Ux@7MxpeoJ^GV}u^lzp%DgOlEghO@C3AUd15MF-Z+K8@c#+#b!n?uIT
z?pM;8ua&MW=D;so&5R6_7a3%kBIgzy?5@d^J9y8P33EkKyWPRf}Ql6JQ5cgjo(F
z7K=(G3G}&2B_I@t0g{y#WKYGcLrW9kONa!-u6Vc#F3*L2-p*E-6mB~IHW(R805Bbnw
z98E{orE|XTcv6WCyd^2zTZdMWErv)A<}ONXswmFanp)oBu)VR$l@8;mIa7Fr-{thd
zN#*!?`wbBy&JAj7k(R6ZZQepsXKll^qH>5&-nLGO_VwvLu|!ytO5PSd^RMvyOqPDV
zx6NJ=>%~1*0nMMU^~(n|ggipAA7LSi5t$^=O@Q^*jwqFNl$l
z@!cf2S~J$jq4{Z=1InM&@9O7cj@&NJ(J1atZ<{jwV%8P~3ZFjh!*1REu|!TzAkI2}
zOd2?Fa{O-dhaie;PF5lb3%{h%k!p7fa-dG+^n5SI**f2ol$9m%DDVwd=q``~!Tr3tc~q
zEPoO`ioUh+EjL`8+RPW~Cfzh3kqE_&Z1R{D-AMOA*I{COR+pfXoP`nJ#x-@=FWFug
zp0H-!Bi<1*L^>_JA6y^5@cALyIGIAuIi4W0T5tSh!4%Q{#^~2OZY71t$o)_#lna{a
zF>I#U#TLAWo^VqAUn2HDP^p(+*!j+OX2(dui@IMO!uWQ#e$_Uar*bZM?cZz(?au`z
z_rq#)C=I+1_j`^dt619YE4Cv!ZN=ESx34$SAZDh(bm4^qCnEzJdy56q=#mC=h=9&+^V>?XDhY(8uZs6CFn8)xF*b7o{I`
z_%fW7I6|DiFPrqyg8gq6*Z%;Z{h-3?2*oKj)5BDG&Sp^7$6((QKYYG$%VF?lNcMjj
zxdI7Rz2_{<2)C_C?tg&h{_&$tqtah4
z&6oaLLqrCy*eP{b{i|B>zrG;>B5(zRjkRz8Zw+w`o6y09OiBLVnU>_2z>68do*pd!
z&JbxBKYON)I_mr{vGE^IuN52m*;6Q}wNdxq8lu3Ru32R0=)X1J3}E2J53v{K|EYLz7eS!s3raKxdm8`F5dVJ)>2CTUU56%KQJ`3#VV8=bApLzY6p&R|
zSjgw#tB3;n`wzFWV{2yS36zB)0JGo`c|mc`zvxQ<+;bKI-0Fww;_`n&Es7dP0ni<4
zj)Bb+U`*Ako#|XfDm3(;18)*)>W%He;cGdBAlqL=3+M*3Eb~aaK$pOQX#9h+V
zempZ-mRI%EVNXc$0TD(({T?t>J^z-o8JlXa(??(YJOQ9`hm8y)ymPdkWVoD
z>R@LtEn-tVUk7}7T1U!2hmySV{K
zmV4(mK2f{3lP$N^<5%}5?E#699Z_2oaG&4Ucw6v;$%)PB6TnDj%zu;M&;PO+n)1E<
zm25wBlN6I}F#j8H)>sApi(+xrWvE}1#iLn$;E9z^P|uQ@9E-;7r`4o;VDG7wVd`qm
z^uo@n9#C-XOQw7A{gI-!S-5uprekmXSutF?!u9uSnKu!DfdAhrj%
zMiJ?v1vZg~SBt-!yHF=472g>m0hbDn8`gUzhBrH!fa8*8=M(OM*JuY@+o*u+Rcg-F
zDDG}KmQr%&rbyW4~|Bd*BF57^oV2_0DfX0l04>TAuX0~7il^U3ZrR%+kY
z`D0Lkl0pzIxLZPW4AFA>khl8kh2Ytgi3w1cKS8D;9{=GYBJE;CFSjbL4S!!wwh0*h
zfg61HeHJ4D&Y}3)516CwtVnh;dA4fxi!`x-Umeslm=C(ZS6pqqi&tWo#^Cr916;c4
z)W?*cqpg2?159N%Ff+OayMJd!AUl&23Vjf5vS@ylj`bxa6aMV$3cO
zU_!XS8Y1Dd)uMr314P?nY;BkWP!NCn13gZZ^9RKP9xWZXLRDH(br)l5%3VdpWjblG
zYUwuTH~RrC$l9M3{Zc@6YSW+63h^3$qbUhko#+gREr$@i+pRokf1Kp@v7s8U%1PRF
z40uhPmtvkuGiJ_1)bpo2aL0x%1>Utb1H=i!>+S%uYQa=S
zBfNZ&bK7p&a&s10S~F9m7ht;=HiJ7W5af6=WfEJhljef~FpLQ5n=R?mL^go%83xSa
zX08Eq7Y;xST~`MLe74WIO8MP^RZ%^F{IlN8dl(Y)t(2p%WY{lu@WQPoed-SZ)X>FS
zO13$8q-~y(+fXpt0>JHye@fSx>Kj5e1qeWedfVw|5ZEfGXAc%wIG_%tB5TslknV8}
z-+(L8lH8JR@^K+vq<`Q5%*CrPvYF^Jl5=!7xx?H>5rVDCr4du3o3{JIfTN-pYL=eE
zemu8A)x7lXu^cTp$PyqeiyLp)YUflZ4&M{$Jiq^h1pFuRcFXwJ6VwtmGRIJko4)M+4%{-dvxfX~9
zrNgzbKZ@OKD-ZwiX>f_YVFkeIZ@@=yG_v-S84fAJC*zd_3u}JUC+Tt3HJ|Q~4?WBv
zuXjqXPpV5q<*P?q%-L2BYNU%yv@D}qu^v|yBSS+&D{e>c+XMJlwOtu-!PwHRw%_Tv
z&GAto4KMktyp>R=9+!9|3krffzDah{g$pLINk1#jMANo-$iJXod&98a1T`1Hh*GDy_pEwSTZDF{>U=!!qg-52`{sZ^RPXD4$cQ&^R@a2E@LmLaG>G*l+Gegk>MjmvM
z-s?+@Lx8Sen`6X^??Chx?S|Mv>)qT+A;ZwS0{*1F~`UZ00G4H>kmLu?DLwVHg#K9K{3l=rbx>J;w}~
zw3F}cALb&x4;JF|;`St8EE=f7>j_5@WABvhVR!)t!PIM&eV|bQb`o&55Mgm-f74Ol
z4B(obe<=G$zE%S5eCr#=mO2wD`vB8{A{>C2ftekV%Ri{&ov0$&YP9Ofuo!U#Ht0>L
zqQI|;#F>5NGI9ELW$7-LEY(|JA5L7cb+(4K(o#6?%@Kflzk?HNXYCu0HVto&l12o=
zN69SM6@EFQ#xwOBF}oI&7OzT(`~T@%@YAup>`%TA9tzE%B>V!RNz#hd-6wfxEF1u1X_nt-LO&
zl7ANAN@!ef+AqmGx7KTZvBLYLA3E%*8kE2DMdnaEI8&|jf140#1XuX_s9Q29>f
zsx8~#j;mfEe=?ZQ8FyH?ur&EN2*B88erxByP`~SH3nE>8Wu$sODe}+r+}KX?uRE6i
z$Qx0?rVa2VnRHXwCjjpM^_fE3X^U`%rE;F7UKKjN}{}${SbfyQ01*u!#*s*0}ESpc_jvWg;l}I5bO#Liidns
zA|yQ*l*&)7fpU%VnOrJqKN#^I)7*h69TETt~SU+1NN#zAi$Hd=pOL(Vi9YGv{zxU_@iAkRkplv1j~5CN_<
zui!5gXc}Tc@-gH=pZGv+?`op1{(^*^-LyTRE-@<&ykm!#NX?@1-qnA3#<|5MbCfS`
zFwiDpk2)s$$TFXE#sVF^`DFIMSAx(BP(1Y=FOk%-BRIz0Lorr{BVNZswI_2*$92j*
z=PvPnYK(=_RrKF2=>!%{^&+n?@o8ly?w8?U9`527es|AV&-bIPYzM6Ek|MTF_$LqZ
z((IXQH?_PB#T7Ph3fQv!K2!Z@i+0c8i>ZmW4CwSnC&eh3hAoNGrl$J%^|RHoc5$GI
z$F6qA@rDXRESVPU)tgZ?=vX04SG<{w3&bQ#|_e@&8EqqkV+Oc)e
zd(2wxGR78lDWzZhsP<3H?JG0cJlJ<|)q$^dd-klP$OuI`QCt0ess6(Lp(}N5mu>@a
z9*<)?B58!7%}dYw)0JQvj=z?wGJun)uc`=+HO}2xEi6dzjU$(=TO~4iQbpofX`V;-
zMfk7ep&qXg@H>fA^$a)ylKXD;Dd*FC0b^C?R2K@Eu+x?aZ1x4bkC0O)1r`o@w@W%)
zi-<)`je`V{5itDY8@P?UElQ3QtEtnTXvu+Va+$YV`1AbCaIVQQ6?me+^^<|-kGNq@f
zT|})kfI>+8ZM6Y`HZm*H2@OT%SJlC#pu%hCHiC)hv7{=@l&{CywcxDMkNY${Mq{+d
zg|BUOc-ti(1RuR9_l|wxU>nVsqVx=rf_xzUjH$g?YV+O<<(_;LVn$C-es^=&9!dU=
zG@aDa2Qr12vo3cM_A(Vgfw7L9Si^r7O@`m2Z7%f*xnT?nvZ{k#(}ITgMqWJ_4!nxx
z3q9!`v*5!1!A>)lYss_2iXpYbOMkxQ`0iI~2t(h?U%6$YiJRSA*w6QDGPL0h!`&My
zjc{s4m2|$CUHGGAR}NYY+Mh=Qt>C{n_aw^h4Sk+N{2b^i@zp-P4PFfKw8!s~QRkWz
za?lmf*kMVp2ESWMdh!kLFb>z$_5tw@nH@(u0ztShx6C+BUDuIm;YLM@jENNd
zW|ijot7IM#j*ZFhS!IX`?>mzlo>O1tNQhf6diIo>RM>xhQO57e_oEAe^!EXA=ZC@+Tnl
z>9d)(K$&c$HZ%8chG+|_>K-m^F=&w^GMuTpcEHi;uHx!-^V&ywogBEi$j)nLgAuR44xdSu|G2obDKM<1=YqVUFgf*Q3UjNw
zpU~A5Z)>|BrmiI29Da}m)R5y&!Nt2Y%+;DQ+X{Y#d*$3MLe75>95}pR_MuWx^
zJ$02q-Ljck)zc5mh6_WsN=#il3oTr2W#fEL6G#1@t=3EXDCdxzM&oi-MS{K+4rZ}s
z8;nlmj-jotP86@O$g#PgtehD(AooI%m6RV7XR?27G~{0eTd3o&YN1_HVpyvTnFQ0-
z^T+vkh_yxz4+pu^&YCiYUp)^GJ57u&-(;XH-l}SEl=N)sxXI?fh)~BnS6!hDw}G&ap=hH
zc>B=px0C*)j!miaB+4dtlO4++XxAO({3uH=X~`9zHP24@q2?eF$WDsB4>ND$1zBr#34tSOpTc*{34RF31)2^skZ?nWr
zp2_3QS3*5PPcf{U-2xl?sVMp5-}gyWC)K(i?st6l_>)7NoJWJaQL&bex;QQIl3(>L8niSH%2pSJh{=x09{-|ByQ1aD
z7a5()ccd6ij))>2XnIeg!Mmee&8|LKc;47_n!8YgNuNwP-nA79di$6WE+rVZ7W!3A
zsL_S9jBh(a?Ph3l`zH_Dbw(aempr0!hc1hpGn@~xUda7~(ge|}K=~T60bd%}KX+xV
zier^XR_Z=6OVZbnx5(Hyjs^{gL~ET%PFcEu(**)NUo#32FDNdd
zj}wm9$soKk7A(+aNESHmK9LEdOLW1mDQw9rLonve`FO^n@UfT0iXa{SWU&qCrk+-u
zb^xC#a+o&a91KNxC4DxzyN<7-8x2GE8>OC?3qR#JF7VK5aOkJ*qMn%@^9uA4D_6Ek
zFT38`0x~_bU%?4hfgX5!4`v`4UZ4P!^1*HRA$waRxk{?ual&^jNcyH_(`JBX2DO>n
zn%_J3kGmOB$IB$6yvu$e9+AH3-gY)K%}tAxO}GjD)k|I-SL)vUvRBzIq*2G{R4Y>L
zrv;NJI%fktF~L%&Cu2Sp`3D*8LgZ2cB>VH>cUuG;_7+ddB(IVt%`g<5F2EZ9Vv1|)ak{_
z614pxqbC056p<52nEkk8-zrkP7r-@)BKVfHoHk<6by6_C#t|^Yu?7N(av_wS`-7eC
zy}N+zzaYtzp$l<=TOxnd(*}O9t`^*|(|Hg^73U9Qg&0FFUr>C5Tdo!A7DmEHoT9-E
z2zAB6kZC^BI3w7tDwz$`pnw=Iv;3qd1>qtbUQ2P;ET7Yv>4Ak2Zv;+{SQayrECfOl
zK-9scq)u%7#7#8(@D0!n!L5c3xiY;GzKr$``xW>+7#y#aAY|2(36x)$=M{r*NU}+X
z%h@0-b|9ZlQ79Qi6Tv6n?I&^KA}7*!;WAGkHX*^PFqynaS;$ecsJ%OI0Yuk=dsc(~
zW%TDr+C0d;$geVTTB^Y@r7DZ{M6l8NuwttpR+0{K!l@7UeV
zV#?Cn@f6oZc7kStP^F)no;7@Q`;Hs9g(H-;sdi$R!6zUll?QRO{9VT&8<>^-0E36Q
zi^XmCW``%f#zLqrujVNPtWiHsK%gCin492^adu}HeEf`jaY*qjvQFlNbvO&*^4-#5
z>*vc8R^KhX4>L3wPlY*-Endv3EP4_-ia}5E&@yng{2Inji*XJa_j0;6X5tr!?-XUw
zC~b1><(tkCBaY#o@wcfqGU_7lNYA0CL{6DXwmCCY>E8_SZHjl_^bqCJN$imH_>EH;
zIr=UHfZSX^f2N}z{kk?Ew3^5Mp_@PV1HR&gMOplJ9klBgdIOVdv8)X=Zb?
z>DB0Fm`%~{AVRUar44INMh07_n8Abce
z)j3Dk{myp@iLri;C`38zo)ZyNYss=G=4moD9-1%91N<3GD9at)!7Qn?q+Yf;K#yTG
zW9;!aFn5M?$2u`WoL!8B42hddM#mGg>;$Bc`7i~@b~qxK9CxB8Q2tWLWP*l
zo~OyEA(Ie8O)u0jr5
z%y(~b9|LxXI_RMuov5t3%w*i+fmQ6Xma>Ycl^=2&^c5aVdmT^YVr%Dm-Z7OJtw!X8
z_v&ewt^L8qtsEAA|5C=@17tM?c{+`%E6&POlcqeksXS(8_nhXhH&a^DL*=D@(S_*+
zwUp_!OA_gw^+P;v?{FE%raMa(YD`k4d+v6=%90324yA8g)Bt;3?vLppg-7FPY+3@}S=qDJY+>kG~gRHUzX0}_7-+|9c{70Jj}QO#Cs
z)|q7r2Ur?{tE~Dzdde^cC*Wsp5@O`3Fo>myz(JRf2(CT5n6T}!S79a$amo{}I{!B&i(Vo8?fe*H_Ko#-*T4Mj
zol#ZyCnbn)Sci8v^VPGqys(fXXg{yZS
zjrm0X!iS``697D%qNeoS`m3#})lXbE=!MK|d~9Y!YyXvnu9T1jwn(>2+R6I12i5ZQ
z#94OQ;?sSCD*Z9cv$+`i09NwF$sj*yjGFXzLHiZ;WT1OcOv?8qIeogScUU~e3wxBx(SRPY{E;bLN)UaSB
zPJ&RXmCxm5N{k_WH55iLJSQ2=_gctO7{x9rE;+>nTs?1Vw2CSwt!VjVt;790_yqiD
zhjf_J*YWGhS2UZXMGoizGVSy%rRJ3k?aupzJfIENeVat8lV*h=j4p94Q?l0eXp4*cLs$Ss}5PH$_kO=R4>G-hTUOU;aj0hG1Jx|RN_>_%p~FhVG4g(5_Xq3D7W+~EBlmw@q9|5
z_WXJWlP!XQy9xcGMLCM)diS1gz-kt}cU4h?YGazU)T0g|ID!g4$~NEWH(@M&ELV%$
z*>*q9|J5T(skh}Bgm{mL{Y!bxJfbYCbal${hL`)Wr
zuEm8h2-;+4Dv+Nm^JgWxmzyPC832gz@Hr{wF?H6k0c|bU|LSWTfuG`xwRF$
znY>FyAsLa+gJzjb@^GElO)Y<%3q{>ja*T5ZU&<OC~
z$VcsOGV~}*lkDJOVDAjr7mgIN7F6@=y6aymrz@=Hsp1Y9tA6J0w&e;rt;vcR6~tU@
zkQ5w$uX9i{wM^~dpA1CfzgcZK5dKn$I~0gICZJ@td|ZsB!F)F^GDc|(Z!g{zGjinp
zjx+sz9mhBC(?Y%17u=%zVi|^ocZn(0!8K|^S^_1Uw;|MVgCr{=80kxq?&zMc;+iOB
zng#bYKPz8@FxSf}oC_a949PxQeVkk~Tee-6y|F9&vq-Mu>V*V(e69RkydJlpo3k?Q
z-pF3wlLw}Eq56EM67l~f{rSHrThO5dAc(qlbmzdgK{4Z^kp9`NZez(s`Vg^|0W+o{VL{2s(<0QrT#L2(=#iRlfAQVvie-
zd&=Lq%IGI3s8}zkgdzw(&D~D(eRj9OhMuO~asM>OkTRAgld4}ifPt%bo%=`bB-I0K
zGC##QSLwuRaGUSkl~@ie!g5PUl#JAc;;D7m(B$$Q@Y)GtH+8t+evc;2&pr)v$Gw`^
zX4KN}zERv>QN@iEA?y?_=1@6zd}g%X^^WT@+cYFPK_D<>kuY4~
z_-8~ae`cLo;c#${)TC|rfQ`4ABUQE!D!$B9`u@=4TO9=`f!jV3AQXmY?nZ^
zEmeK)q(ET}my$tbgOpL2G~X?*8wFQW?j7>COKUW;&sW7wvtmz6-jUIoJ?WG5!F+@M
znvdEx^-ky0;G#QQPOJ4IkGcmxEl(~D!Vu@wcjJ1fRx4NX8jo!~VVyjKo+G@`VYTwu
zqQOT=;tit=Pm?(X3a=pzH*B6@g=}&s-Ph3=9MVt1Df6~>Y{u@VJM_`Z3f}Xj^=N
zwP;6~(3;ShE;PY)8DTwVCc{|G`zrY#g=mdOl#eBYAeWW6KiJ)pD-XYlYrFu}k)nDh
zs~Mph*P&YR4c|}9+V>%tA>}F>+?$ol=SSww(l`2s6lIB$JvnMC1aP|;i;YhY12Zvf
zvbm*-b!J>rRVc4dIa~-cjUfC{*Kit-B@A$=3^q6NAeL@RlwnF}GzqX{Rr9oMgWKu}
zv0SUlENv1GEey#`e2t~wNwK3uv6+h;&I`%OeL1bPemPp|+VhGk+*%dqYO_<&%7e9A
zICq|TchHj_rj@kph&*^UEI}Plx;bo^cpU0W)~?Ji-E-(pBxjW(Ve^(8q#ch_`sH8`
zgk?l2C`8RH>E>_Upb9JFOQ-qvFq=1!N)ko3-lERr2v@CX{~dmR?zYIbn7hyyktux{
z>4bs2m|)dxnWJUQHMaYi`uxrPvSi}u>E`bUsnP@XT3*MBdyh;exdc!?mJ1VGqSU5L
zcp|5fl=0D!(1gS$dhn)q06!`k@b~Tq*!p?c*2D5>=>6GZ)AVUv(F#JiHN&4F$m1>?
zmpp}5gq)idr2GSWxWrAK=7g=_*~oVepH43%iDXf9=1o@)9UrHy7H6}-kbgv*UwcbD
ze>xz=?A7vg+U?jufqu#N6*wfxz1_&on!*i=R!>}&4Au#3p3gQ+
z&TDWleyRHuo7L?p|Y%?7exVP4ij-
znnUnDPHrUuw&iM{@C_86hdAA#+c7)`+tc3=xf5!Py&a9`mGx6bs~#bk*Id~6^|&l<
zQaP#{xzBjjB5}@=Go!G<4KVp(Sc`
zn)C*#r}^oAIBkn51H1T#qHhes+QICc7Gb-S?y!CRYLm=t3#Zm{&ej|ED@boxzc-8y
zfme(@;DFlnPPoeCl})`YZgfWsfd#-=EbAEWJJ5p2=JHJ6og
z8V-vQCspC`P<7s}7Yr7^@AV{%e=*M%+KhSR!neJm9|U3QI8J3k;d<6ib5fwrEGLn2
z+qRiCIpL72!shx;e55&-E)FC1jO`rCT!kr@=f}nbaRQvg=MQel36eG*bD3-ePhW_L
zu`*j)rrF5iymrrgg2QGbP%Q9`SWai8wK%jCznwmXxV_7&Cou9Impo!+*jSe!y33g;AvMUDc<98)Bh3~urVgY
z8~RA}vM7pfpIaeFWc}k;N(Y%QVb(gff)w{ClruRf$q1;_Om9{8u41E7w>%C(7vSN0
z^^`pgK6#Sy^fr7vue3*ajEojFAf_PK}uH)pa_^cn@uJ{o;yhTPj<}szFqW5yI-KE0tBkUO4FEfj5
zDjpnvkj^Wctk
zP~Rq_awdR{i>z6eDE1Z8)$uMOVeX$EM=v2PKTwUVx_{v5pgcjyP?icOLEkxk?zuYD
z#CGrTw{39gddV-d{J{$m_KjEQNz%?xzpI~+I=rRPwMw;ff0pdpx-pWQV++?la-Muc
z;zk3gw$lCPhTj`IRXLhNcKtZ9MPuTDpTO*S3gVU?qXjn6gUawhL{dc(G92@$}TwsD*PO-lcX0K;eg66!na#{-2E!C=2MqY~bCF0VbKBc{UqXgH|A#JIOGPfr=|tHs2_i=gL}k+G#lx
zxJmT|-sslzCAX=u$>SVHijyvOft=Keq<+l&_75`0yl}gZu&%C_;=sNj>N+OsZ&!Ah
zIH{32g{K9GbxBrV#%{W>_SY>HCLia((i9oypOny}w(I_fH0n`=#2nT$SaQsSD0
z8*6;1KANvOVyHW20YEH9e7y)W!ax&Nu|}qMM{a>{k#@4_Ruh^y107lJXrRO65#h?L
zjJ^kYSg#qlG2=%q&x7@ey=hrK?Mp^U)-^W;2z{ms8mtH);5y6}7Qv>$i9dP9{|*a9
zuADp#t`;4mW8+1dpw!N&IO%yqI;^+Y5AvrgKFnZ0w8RtF44&5dTq+ZKFZ&tNc80>*mnsygiJ4~|llE&|
z?QO@~nhRCWtCwq;@-xWA?4O$#&@vD6a!lY&NK91K-bvS9Fj;&p>lQm=+Yjc+ggQLv#=j~-fq2u4w|mL2@7AA$!X6vU&HN9t=&vF
zOyEU!v>zK19nvgIAf=5SBn`?aUc_cVoT7P8m^iaFbiDHet7qcRhd@!m1b7)0zK1Z^n_aX0QsVn@I
zr}}sFbtMXYR@NE`uX0}$uTMX$z
z?7CUqe(;Wxw(iW_C(z`h&~`fuoprx#+9J|I_N9im2YT^kVr$)qRDg(V_HfEmPXFK*
zr@TF*5$!Om(B9sj?5@t>)Jhe12xucWsk}yYO1bYYBWKoCxE$SD^yT@qc*F{840W+@
z=6OJF${6n))W}*5aGg{PM9C2wZK?gA<`EvT#^pEd&Q%rvrEBNH4b^t1!c#(>x0fj5
zo=rs(&ik&CXQFtP$6Dy=E+Uq77CDF{x1Fd;_#VdQOre!S6ze(p!AX2EOuNCf
zSUae;d)caC`Dz4}m1MX3Oz5@wc$^vVMwiqD^ZnHOE#Vxhyq*VL3NRJNt?B%by!356
zsN1oZCAz@a7N%g4%yW--T?Sj6;dXVJwUg4{~?smOIhkV=C5gbLV=UZ><=Fg~hD?n3zdu^+G
zTct-n_PcOF_=c)uVC(#vSAt?jXtiOVR>{V7LY6Or`Q^No#DC$d!vqLLJWWOWZ}=
zo*OB)P-Wf1)L<%QoZfo!1_4GT>`IB~FPnNoa8a~qrVA?OOBRnHqz?x{6L@^;`LVoX
z!2Nsu1!Lx=2Vn#{-FV!$L&g$pUIvrmru|2doI;%QUW}6p2Fj3+nLUk#W0GxYW)*
zQk2c|k|oo=<$-`Z%_lTyz0}C$`J;pL9W`c{a5#51DZ`;ZNdYd274nlaXjaY5J*l~c
z{$S2=U6zx+<@|=(et2>8XMeg`$E(J{e}3x!tPudQ3c^fO;+mYjR4*^r2>N61mt6Wh
zL@+4TN?2$_*wMlaIWc;c()x6M`T11oGF~eoL{UT^mNi&o*ax*)OYSMO)ILAo!j*5|
zI^WKu65S=qk3Iy%1)BAK>T0L0d!cti7wyA0`PK7d-Y`yCc~@R!FzC%f4_lQ+XGm!i
z&X+6CdffE;yqE*Ijgp!2mz)Uh#-{e>vAXR@euG<}Sqa!v>5_M;ivMSX@UQKAjV&@?
z%6G?mQbj+=ngp&}JOMtNe!eUuT;tYGw3VmRNXBQ^9Ot3{KmMI8U;Sna$6S274o^4K
z)j*x>G(}JIzVg<}5(SKc@~Ggzr@b|gFUAX22YZh-m@Ia~gLa&-csC=JC%d)M#FIeh
zF6ilTZHXc{Lmq}0$1}=O
zpJzG@JZbplx_a=q7-uEYIT%~|6}5>80`I%;rU_jiO%sQQ)55~?##4<|LV@=n^a+}3+&e0{-;@Oh-Uo_H$>Kz*2?{o)PsWZab
zK}>1fl>BMN#(3%Q>0-1t-9*%2LHPrHuu
zouSg+b{%;^))A;XI6A0kN}E_|lZlKHCT(^qhp%#{GJ99Fj6awifp&cU&oarsc1Fhr
zpxXnK+>xT`!d`c+E0qOg`c_evFua_%@La^<`LrB#a
zZh@9hDba<
zg_aDfXbU8H?JN==v}wQvtX~rUVNp-+rU6
zFJMt@d7cVFeK2qg_85tVlSB2RwV&RAEmDbms^A=F5Y`DUY_KG|lMs#M-@zpm*b7`T
zQ`b}}VA5yEWJoA*I7vF{ZKIC->y!OCKpFc16-eve1MGBqtT|q~X*mh!O%2dBJo3wz
z^e&+K5DW>`Qp#HVpN`VMPWR9DM`#%|r#dDjYW(uhyZn1APry@X`3?B|7o+v_U;W=N
zXb;LWESATs(*MUr_@|ZV%}o8pdD8F^lf-W|zWzV-*nM?fQY92OWvEaEj*bS6ADxQ|
z??8^&I5>85**x`EYfk6x|LOp~db7;;Z3G1Vc7gt%#^_(u-^LF5k8Nbfc7JWV!1RN^
zJ#WEFQ5E!C^I#(j5|@ZvxX^AK=rR@`-i2Ws|mW<$wuEX>HO9l
z^MY3BifbQpe`_TZj-pm`dK`lQr2pb?HJ*QHBt$24;k_=z{Ckbr0^n)FusSz|f9Ki3
z-v*z)`XTtYCMX081!{y`EZQl)e@N+lL5Xtz3@b4>^Os}#xETBKuA^SnU2^~5nA*pZ
zVDuBySQ=26y7l~htyzan*?I!W$FbM8Na#*cak&19$sjhI%>w?Kb$~Orm
z&|HYRO}Yz--q-2W0|@kEC@T~%U)j#@Hx?F!w=yctM2CjR=!J$`WX0)hUk2CtNQBKI
zGgLjXB|V(I_5K#|xZe3f>*q6<;5O%t{eVKTGR?N2-iATELa!;kPh&ROZO&(@5&bpj
z?tEVBZAY#mEe4|8UX`hI2O5TvkC6QYI3%a(s;Xne9wd6LF2wU=8e(m2XC(81oYYA!
zHFWp32C>^OzOWJpb=RL}WLKmzkXr>=so$5gsKWilxLh8+jcJm)Dfm{IiG1^$G4b<<
z*Tlsx)QIPo8Q8@j&$|{&=c>BD(Z$?ua#+)YPQ6(nviT+kO>ryUeDz7xTt}plCf=hu
zU<-c{?*2XCc`ez)oQy^H!$*5_nKMCS@BthfxO{c1Y;RZyNm5{}#e^T1L3i8OS&0HN
z^K@D<{I26T`P@-}0|_iHGfppwh$>ERXxGp01Zlu4`x~Yv*8XP5OLp4l*G2Lj83aO8
z%X$gbjFazs3at4OB1dRbF_VT`IX9>IwOtFd6E5ZmWOr&N#oAa!4K~DE_qGeEMvf5y
zgnRRka2z&?i09KnNnprQ_LlQp4zZcfR3~_gmh}?C6sXjM7j`w4tfJwMIw?Ln4V|ya
zl9h?+^KF|dZnzu=5bi!}`JsqEDLC*-Z24|??tkW6|Es@~bvM?S+KRjHzDEPAa$+GR
z4Fld3!8F;!iW2h~C1U+Te3GtX+9?4k9FM*7jIpCrE2+6?^a&V;dB`(22Zj`#)R1@3
zgZtE-_8pNC<{dX=Z5Bdh7tbXc_)=7fB96MOf)hmUifj}H+qV)b6op83JrPhP@8;=ZyHh-I+M0>&p~9GAEl8hYFHgi)qG{xxP67+O
zR?}Wr$kv+3f}i}{*`t6Ed2dqptKW*6$jD~3rvB+-eZym9ynutK*D;>xP~O@jQexJOCn?PiD$pJivFSSg4S3
z%dV^S{NsOJJ^$g1ya0=-Rimxuq0hmgA|8rqufqItA6ESQG!;K8RK|qInD=*LoGu2^NyLMKcDEc`C&cxiCg5v
zM3YSYgo^U_-mehbKnG=afO#9+E2N%J@~CMoxFA*w(bo_>+nF5=ei8)Zb**cwT>GBk
zoQD102oS7VC!<4`Olo@Ia#SvZoQ$DJ=fw2|*-&oW4w>5}X@j+dJ_TnoiI;cUZ~XN$`I
zBpKrl(B%3JdNNQ!yqN~ZmN}M&K-I4SUlwD-pkG)kE|#;-(sy^aT7w^HzGM#nn1D$C
zOCa{YPJprOrNxv~;oEM_I2!eeAEbObZC>)M^;D-2f5*#=v#o1O-2GHk{jSY1jJk`h
z)1-%-f$chMmfU0TQIo?`Hu3yCJh*7m3O){rpZ`uZynFo?d#|)jd9piEe}hB>-&V+-
z;(fhP8xtEw4{Azn`^9hFvN~?cl+82EuasJG-ly-+t70XGZ+3CE
zA+|W8zO4Z^Gu}(1gFRfUw^
z`vzFJVT^l|`$+bd=0f&cHLC`$^0LH$=hu-YG0~gU1jn~$sWZm2H
zfyzIwd5um{ps?0yztd&vcRqcA2d)?w*qS~lkEf63@(9|y}~76rQ9&t>)d6^rk!jDsA9DPwmSJA5GFN;`P6WM
zoF00J8$j!7{4lz>6toC-u{b-rWETOjFM3!_og>s?w3Rm5ePDW6Oa2$$S{YSe-7u*U
zc;rv0-laV}41oC3x2CxaGS9DpALU%~>q#6k#h07XMdhP4&X1~9S2fvlob|Ir6w
z%)s{q+LesCqLfkh(IKFC$;tp>Mfg7~fGNjG3)Zu}!5GFdOM4FI?b%DB4$Mdpsdfp;
zy@V5?>RD=V0478W095yn=q>;At^9G|U2vDZTeqE5fhquqSx<5tn(uIi?0t4!%Z33=
z|D!qV{u4k-XrT&byxYZCD)R%-CKjz)WH$gtNrg_CN;RW*h035SbmDj!d@N+T&aK_H
zi-`b`Kh-EYfc9U}@JPIQi6oH9r1k`uopvx@%FN<V?WP-py}QU+Uo7TS
zL%@<4a6X#z*I-;9FEyeFDS?K2?xori^%o8Abx5A_A$~m7ZzD2dq}IUEumZ#y0PUdd
zg!cfRg(_gu>VJP2!_+b*YJ
z3BN*3njwv;(cGet&=i*QSf(5}rb0C>nni#ZsaMNT6_XIN7K=Rt$X!)WU0>|8V4YJcWk5u;Jp))N#?5-