融云,安全、可靠的全球互联网通信云服务商,向开发者和企业提供即时通讯和实时音视频通信服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
针对开发者所需的不同场景,融云平台提供了一系列产品、技术解决方案,包括:客户端 IM 界面组件、客户端 IM 基础通讯能力库、Web IM 基础通讯能力库、服务端 REST API 等,支持单聊、群聊、聊天室、客服等即时通信场景。
消息类型上支持文字、表情、图片、语音、视频、地理位置、红包、实时音视频、通知消息等消息类型。如果这些类型都不能满足,您还可以通过自定义消息来实现个性化需求。
融云提供的即时消息传输服务,不在 App 之外建立并行的用户体系,不需要同步用户帐户,不影响 App 现有的系统架构与帐号体系,与现有业务体系能够实现完美融合。
融云的架构设计上具有如下特点:
图解:
SDK 体系架构
本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品。
IMKit
IMKit 的功能主要是封装各种界面对象,服务于开发者快速实现自己的产品,主要特点是是支持快速集成,支持丰富的界面定制功能。
IMLib
IMLib 的功能是提供基本通信能力库,封装了通信能力和 Conversation,Message 等各种对象,服务于需要根据自己的产品去自己实现界面的开发者。主要特点是封装清晰,轻量,便于使用。
Protocol
Protocol 是融云的核心协议栈,使用融云自定义的私有二进制协议。主要特点是是轻量化,有序可靠,不丢消息。Protocol 部分使用 Native 语言开发,在 Android 和 iOS 平台上保证业务一致性,便于开发者商用化自己的产品。
融云 IM SDK 主要包括:IMKit SDK 和 IMLib SDK,为方便开发者接入,融云 SDK 还将各部分功能以插件化的形式独立提供,开发者可以根据自己的需要,自由组合下载,详细介绍如下:
IM 界面组件(IMKit) 是融云 SDK 的核心特色之一。融云将即时通信产品中最复杂的会话列表、聊天窗口、消息内容展现、会话设置等功能封装为组件,通过简短的代码,您就可以直接将以上界面集成到您的 App 产品中,省去大量的开发调试时间。融云同时支持业内最丰富的自定义界面组件功能,您可以针对自己界面需求自由设计开发。
IM 通讯能力库(IMLib) 是不含界面的基础 IM 通讯能力库,封装了通信能力和会话、消息等对象。引用到 App 工程中后,需要开发者自己实现 UI 界面,相对较轻量,适用于对 UI 有较高订制需求的开发者。
融云实时音视频 SDK 分为会议模式和通话模式两种,详细请查看实时音视频服务介绍
通过集成小视频 SDK ,使应用具备拍摄生成 10 秒小视频消息功能,支持单聊、群组、聊天室会话场景,丰富应用内聊天内容。
融云 Android 平台中发送位置功能的 SDK。
Android 平台支持第三方推送(小米、华为、魅族、OPPO、vivo),集成第三方推送 SDK 可极大提高推送消息的到达率。
融云红包相关组件,通过集成该组件,即可快速实现红包功能。
App Key / Secret 相当于您的 App 在融云的帐号和密码。是融云 SDK 连接服务器所必需的标识,每一个 App 对应一套 App Key / Secret。
融云提供了两套环境,开发环境和生产环境,前者是方便您集成开发和测试的,后者是 App 上线之后真正运营的商业环境。两者间数据隔离,避免开发环境数据和线上生产环境数据互相冲突。针对开发者的生产环境和开发环境,我们提供两套 App Key / Secret ,在正式上线前请务必切换到生产环境。
如您的 App 存在多种角色,每个角色为一个 App,每种角色的 App 间又需要进行通讯时(如教育类应用包括教师端和学生端),可在 App Key 下创建多个应用标识的方式实现,每个应用标识为一个角色,同一 App Key 下多个应用标识间的消息可以互通,但需要注意多个应用标识下用户 ID 不能重复,建议能够通过用户 ID 区分出所属应用标识,如:教师端用户 ID 以 T_
开头,学生端用户 ID 以 S_
开头。
Token 即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。每个用户连接服务器都需要一个 Token,用户更换即需要更换 Token。每次初始化连接服务器时,都需要向服务器提交 Token。
指两个用户一对一进行聊天,两个用户间可以是好友也可以是陌生人,融云不对用户的关系进行维护管理,会话关系由融云负责建立并保持,当 App 在后台运行或者 App 进程被杀死后,有新消息时会收到推送通知。
群组指两个以上用户一起进行聊天,群组成员信息由 App 提供并进行维系,融云只负责将消息传达给群组中的所有用户, App 在后台运行或者 App 进程被杀死后可以收到推送通知。每个群最大人数上限为 3000 人,App 内的群组数量没有限制。
聊天室成员不设用户上限,海量消息并发即时到达,用户退出聊天界面后即视为离开聊天室,不会再接收到任何聊天室中消息,没有推送通知功能。会话关系由融云负责建立并保持连接,通过 SDK 相关接口,可以让用户加入或者退出聊天室。
用户与您的 App 后台客服进行消息通讯,支持文字、图片、位置、语音、表情、图文等消息类型,支持单客服和多客服服务,提供“机器人”和“人工”配合使用,可设置“机器人”或者“人工”优先接待功能。
为 App 开发者提供 App 内建公众服务能力,通过在融云开发者站点创建 App 公众号,帮助 App 快速覆盖用户需求。
是在应用开发者和公众帐号运营者之间建立的对接平台,应用开发者可以通过平台引入公众服务资源,帮助 App 快速覆盖用户需求。
指各种会话依照顺序先后排列的界面,其中会话列表中的每一个列表项称之为一条会话。排列的先后顺序会依赖于置顶、最新会话、未读会话和时间等因素,聊天室类型的会话不会进入到会话列表中。
指聊天的具体界面,显示聊天的标题、成员头像、聊天内容、输入框等。
通知(Notification)是一种用户界面展现概念,是指在设备端以某种形式弹出一条提示。
在 iOS 平台,表现为如图:
在 Android 平台,表现为如图:
通知分为本地通知(Local Notification)和远程通知(Remote Notification)。尽管您看到的是一样的界面展现,但是他们分别来自本地发起和远程发起。
本地通知指的是您的应用程序在前台、或者在后台但仍然在生命周期存活,此时收到消息,会直接通过前台的应用程序弹出提示窗口。
远程通知指的是您的应用程序已经完全退出,应用进程已经不存在,此时通过 iOS 上的 APNS 系统服务或者 Android 上的服务进程收到消息,并弹出提示栏。大家开发和调试过程中,务必要清楚本地通知和远程通知的区别。
推送(Push)是一种技术概念,是指从服务端实时发送远程通知到客户端。
大家概念中的典型推送服务是类似 APNS(Apple Push Notification Service)
、GCM(Google Cloud Messaging)
等服务。在国内,由于谷歌服务不能使用,因此您的应用必须使用第三方或者自己研发的服务来推送。
因为融云是使用长连接技术来实现 IM 服务的,和典型的 Push 服务具有相同的长连接机制,所以,很多开发者也会直接使用融云来实现推送功能。
在某些场合,iOS 平台的推送(通过 APNS 的 Push)和远程通知(Remote Notification)表示相同的意思,可以互相替换使用。
融云现在已推出 Push 服务产品,详情请参见融云推送服务开发指南。
广播(Broadcast)是一种业务概念,是通过后台管理界面或者调用服务端接口,向 App 中的所有用户发送一条消息。通常“广播”和“推送”是开发者容易产生混淆的地方。
系统消息(System Message)是一种业务概念,是指利用系统帐号(非用户帐号,用户不可登录)向用户发送的消息,既可以是通过调用广播接口发送给所有人的消息,也可以是加好友等单条通知消息。
在融云平台中,其实并不存在系统消息的概念,一般系统消息特指会话类型(ConversationType)为“系统(SYSTEM)”的会话中的消息。
当对端用户不在线的时候,融云服务器会将收到的消息保留 7 天,7 天内对端客户端如果上线,融云会直接将消息发送到对端,如果 7 天内对端客户端都没有上线,融云服务器将抛弃掉过期的消息。单聊、群组都支持离线消息,聊天室因为特殊的使用场景,不支持离线消息。
App 调用融云 SDK 需要实现的功能:
功能 | 开发文档 |
---|---|
导入融云 SDK | Android、iOS、Web |
登录 App | 根据业务需求自行实现登录逻辑,并在登录成功后返回通过 App Server 获取的 Token。 |
初始化 SDK | Android、iOS、Web |
通过 Token 连接 RongCloud Server | Android、iOS、Web |
开启聊天会话 | Android、iOS,Web 端会话界面设计及功能需要自行实现。 |
接收消息监听 | Android、iOS、Web |
消息发送 | Android、iOS、Web |
集成融云 SDK 获取 Token 流程:
App 根据自己的业务情况通过融云 SDK 还可以实现的功能:
功能 | 开发文档 |
---|---|
自定义消息及其显示样式 | Android、iOS、Web |
会话界面 UI 自定义 | Android、iOS |
客服服务 | Android、iOS、Web |
音视频通讯功能 | Android、iOS、Web |
公众号服务 | Android、iOS、Web |
消息阅读状态 | Android、iOS、Web |
消息撤回 | Android、iOS、Web |
群 @消息 | Android、iOS、Web |
动态表情等功能 | Android、iOS |
红包 | Android、iOS |
更多功能详细可查看 Android 开发指南、iOS 开发指南、Web 开发指南
App Server 需要实现的功能:
功能 | 描述 |
---|---|
获取 Token 的逻辑 | 实现调用 RongCloud Server 获取 Token 的逻辑获取 Token 方法 |
用户数据维护 | 融云不维护用户体系,需要 App Server 自己维护 |
用户好友关系维护 | 融云不维护用户好友关系,需要 App Server 自己维护 |
群组与群成员信息维护 | 群组信息与群成员信息,需要 App Server 自己维护 |
App Server 通过调用 RongCloud Server 接口还可以实现的功能:
功能 | 描述 |
---|---|
聊天室服务 | 支持创建、销毁聊天室、查询聊天室的信息,聊天室成员禁言、封禁等服务,开发文档 |
群组服务 | 支持创建、加入、退出、解散群组,查询群成员,群组成员禁言服务,开发文档 |
用户封禁服务 | 开发文档 |
用户黑名单服务 | 开发文档 |
消息发送服务 | 支持发送单聊、群组、聊天室、系统会话类型消息,开发文档 |
推送服务 | 开发文档 |
消息敏感词 | 开发文档 |
在线状态订阅服务 | 开发文档 |
服务端实时消息路由服务 | 开发文档 |
消息历史记录下载服务 | 开发文档 |
SealTalk(嗨豹)是融云打造的开源即时通信(IM)应用程序,具备单聊、群组、聊天室、客服、音视频通话、红包、通讯录等各种功能,界面简洁、使用简单、服务稳定,欢迎大家下载体验。
SealTalk 源码下载: