新手指南

    简介

    融云,安全、可靠的全球互联网通信云服务商,向开发者和企业提供基于 IP 技术的即时通讯和实时音视频通信服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。

    针对开发者所需的不同场景,融云平台提供了一系列产品、技术解决方案,包括:客户端 IM 界面组件、客户端 IM 基础通讯能力库、Web IM 基础通讯能力库、服务端 REST API 等,支持单聊、群聊、聊天室、客服等即时通讯场景。

    消息类型上支持文字、表情、图片、语音、视频、地理位置、红包、实时音视频、通知消息等消息类型。如果这些类型都不能满足,您还可以通过自定义消息来实现个性化需求。

    架构介绍

    融云提供的即时消息传输服务,不在 App 之外建立并行的用户体系,不需要同步用户帐户,不影响 App 现有的系统架构与帐号体系,与现有业务体系能够实现完美融合。

    融云的架构设计上具有如下特点:

    • 无需改变现有 App 的架构,直接嵌入现有代码框架中;
    • 无需改变现有 App Server 的架构,独立部署一份用于用户授权的 Service 即可;
    • 专注于提供通讯能力,使用私有的二进制通信协议,消息轻量、有序、不丢消息;
    • 安全的身份认证和授权方式,无需担心 SDK 能力滥用(盗用身份的垃圾消息、垃圾群发)问题。
    image

    图解:

    • 蓝色为应用(App)和应用服务器(App Server),用户数据(User Data)和用户好友关系(Friend Relationship Data)保存在您的应用服务器上,融云不需要同步 App 的用户系统和好友关系;
    • 绿色为融云服务器(RongCloud Server)和融云 SDK,支持快速集成和平滑迁移;
    • 蓝色箭头表示您自己的业务数据经由您自己的应用服务器;
    • 绿色箭头表示消息需要经过融云服务器转发(IM 的离线、通知等逻辑决定了消息必须经由服务器进行一次转发);
    • 橙色箭头表示您的应用服务器只需要和融云服务器进行身份授权,不需要您提交详细用户资料。

    SDK 体系架构

    本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品。

    image
    融云 SDK 系统架构

    IMKit

    IMKit 的功能主要是封装各种界面对象,服务于开发者快速实现自己的产品,主要特点是是支持快速集成,支持丰富的界面定制功能。

    IMLib

    IMLib 的功能是提供基本通信能力库,封装了通信能力和 Conversation,Message 等各种对象,服务于需要根据自己的产品去自己实现界面的开发者。主要特点是封装清晰,轻量,便于使用。

    Protocol

    Protocol 是融云的核心协议栈,使用融云自定义的私有二进制协议。主要特点是是轻量化,有序可靠,不丢消息。Protocol 部分使用 Native 语言开发,在 Android 和 iOS 平台上保证业务一致性,便于开发者商用化自己的产品。

    SDK 介绍

    融云 IM SDK 主要包括:IM 界面组件和 IM 通讯能力库,为方便开发者接入,融云 SDK 还将各部分功能以插件化的形式独立提供,开发者可以根据自己的需要,自由组合下载,详细介绍如下:

    IM 界面组件

    IM 界面组件(IMKit) 是融云 SDK 的核心特色之一。融云将即时通讯产品中最复杂的会话列表、聊天窗口、消息内容展现、会话设置等功能封装为组件,通过简短的代码,您就可以直接将以上界面集成到您的 App 产品中,省去大量的开发调试时间。融云同时支持业内最丰富的自定义界面组件功能,您可以针对自己界面需求自由设计开发。

    IM 通讯能力库

    IM 通讯能力库(IMLib) 是不含界面的基础 IM 通讯能力库,封装了通信能力和会话、消息等对象。引用到 App 工程中后,需要开发者自己实现 UI 界面,相对较轻量,适用于对 UI 有较高订制需求的开发者。

    实时音视频通讯能力

    融云实时音视频 SDK 分为会议模式和通话模式两种:

    会议模式: RTCLib SDK

    通话模式: 包括 CallLib SDK、CallKit SDK

    • CallLib SDK 融云音视频通话核心组件,是不含界面的基础音视频通讯能力库,需要开发者自己实现 UI 界面,相对较轻量,适用于对 UI 有较高订制需求的开发者,集成时需要依赖于 IMLib SDK。

      注:音视频核心组件基于 IMLib SDK ,集成融云音视频核心组件必须先集成 IMLib SDK 。

    • CallKit SDK 融云音视频通话的界面组件,包含了单人、多人音视频通话的界面的各种场景和功能。您可以通过集成该组件来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit,您可以根据您的需要去使用。集成时需要依赖于 IMKit SDK。

      注:音视频界面组件基于 IMKit SDK ,集成融云音视频界面组件必须先集成 IMKit SDK 。

    小视频功能组件

    通过集成小视频 SDK ,使应用具备拍摄生成 10 秒小视频消息功能,支持单聊、群组、聊天室会话场景,丰富应用内聊天内容。

    位置功能组件

    融云 Android 平台中发送位置功能的 SDK。

    第三方推送组件

    Android 平台支持第三方推送(小米、华为、魅族),集成第三方推送 SDK 可极大提高推送消息的到达率。

    红包功能组件

    融云红包相关组件,通过集成该组件,即可快速实现红包功能。

    基础概念

    单聊

    指两个用户一对一进行聊天,两个用户间可以是好友也可以是陌生人,融云不对用户的关系进行维护管理,会话关系由融云负责建立并保持,当 App 在后台运行或者 App 进程被杀死后,有新消息时会收到推送通知。

    群组聊天

    群组指两个以上用户一起进行聊天,群组成员信息由 App 提供并进行维系,融云只负责将消息传达给群组中的所有用户, App 在后台运行或者 App 进程被杀死后可以收到推送通知。同一个用户最多可支持加入 500 个群,每个群最大人数上限为 3000 人,App 内的群组数量没有限制。

    聊天室

    聊天室成员不设用户上限,海量消息并发即时到达,用户退出聊天界面后即视为离开聊天室,不会再接收到任何聊天室中消息,没有推送通知功能。会话关系由融云负责建立并保持连接,通过 SDK 相关接口,可以让用户加入或者退出聊天室。

    客服消息

    用户与您的 App 后台客服进行消息通讯,支持文字、图片、位置、语音、表情、图文等消息类型,支持单客服和多客服服务,提供“机器人”和“人工”配合使用,可设置“机器人”或者“人工”优先接待功能。

    应用公众服务

    为 App 开发者提供 App 内建公众服务能力,通过在融云开发者站点创建 App 公众号,帮助 App 快速覆盖用户需求。

    公众服务

    是在应用开发者和公众帐号运营者之间建立的对接平台,应用开发者可以通过平台引入公众服务资源,帮助 App 快速覆盖用户需求。

    会话列表

    指各种会话依照顺序先后排列的界面,其中会话列表中的每一个列表项称之为一条会话。排列的先后顺序会依赖于置顶、最新会话、未读会话和时间等因素,聊天室类型的会话不会进入到会话列表中。

    image
    会话列表界面示意图

    聊天界面

    指聊天的具体界面,显示聊天的标题、成员头像、聊天内容、输入框等。

    image
    会话界面示意图

    通知

    通知(Notification)是一种用户界面展现概念,是指在设备端以某种形式弹出一条提示。

    在 iOS 平台,表现为如图:

    image
    iOS 通知

    在 Android 平台,表现为如图:

    image
    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 Key / Secret

    App Key / Secret 相当于您的 App 在融云的帐号和密码。是融云 SDK 连接服务器所必需的标识,每一个 App 对应一套 App Key / Secret。

    融云提供了两套环境,开发环境和生产环境,前者是方便您集成开发和测试的,后者是 App 上线之后真正运营的商业环境。两者间数据隔离,避免开发环境数据和线上生产环境数据互相冲突。针对开发者的生产环境和开发环境,我们提供两套 App Key / Secret ,在正式上线前,请务必切换到生产环境

    Token

    Token 即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。每个用户连接服务器都需要一个 Token,用户更换即需要更换 Token。每次初始化连接服务器时,都需要向服务器提交 Token。

    App 与 SDK 的关系

    App 实现的功能

    App 调用融云 SDK 需要实现的功能:

    功能 开发文档
    导入融云 SDK AndroidiOSWeb
    登录 App 根据业务需求自行实现登录逻辑,并在登录成功后返回通过 App Server 获取的 Token。
    初始化 SDK AndroidiOSWeb
    通过 Token 连接 RongCloud Server AndroidiOSWeb
    开启聊天会话 AndroidiOS,Web 端会话界面设计及功能需要自行实现。
    接收消息监听 AndroidiOSWeb
    消息发送 AndroidiOSWeb

    集成融云 SDK 获取 Token 流程:

    App -> App: 获取当前登录的 UserId App -> App Server: 通过 UserId 请求 Token App Server -> RongCloud API Server: 通过 UserId 请求 Token RongCloud API Server --> App Server: 返回 Token App Server -> App Server: 数据库存储 Token App Server --> App: 返回 Token App -> App: 本地存储 App -> RongCloud IM Server: 通过 connect 方法附带 Token 连接到聊天服务器

    App 根据自已的业务情况通过融云 SDK 还可以实现的功能:

    功能 开发文档
    自定义消息及其显示样式 AndroidiOSWeb
    会话界面 UI 自定义 AndroidiOS
    客服服务 AndroidiOSWeb
    音视频通讯功能 AndroidiOSWeb
    公众号服务 AndroidiOSWeb
    消息阅读状态 AndroidiOSWeb
    消息撤回 AndroidiOSWeb
    群 @消息 AndroidiOSWeb
    动态表情等功能 AndroidiOS
    红包 AndroidiOS

    更多功能详细可查看 Android 开发指南iOS 开发指南Web 开发指南

    App Server 实现的功能

    App Server 需要实现的功能:

    功能 描述
    获取 Token 的逻辑 实现调用 RongCloud Server 获取 Token 的逻辑获取 Token 方法
    用户数据维护 融云不维护用户体系,需要 App Server 自已维护
    用户好友关系维护 融云不维护用户好友关系,需要 App Server 自已维护
    群组与群成员信息维护 群组信息与群成员信息,需要 App Server 自已维护

    App Server 通过调用 RongCloud Server 接口还可以实现的功能:

    功能 描述
    聊天室服务 支持创建、销毁聊天室、查询聊天室的信息,聊天室成员禁言、封禁等服务,开发文档
    群组服务 支持创建、加入、退出、解散群组,查询群成员,群组成员禁言服务,开发文档
    用户封禁服务 开发文档
    用户黑名单服务 开发文档
    消息发送服务 支持发送单聊、群组、聊天室、系统会话类型消息,开发文档
    推送服务 开发文档
    消息敏感词 开发文档
    在线状态订阅服务 开发文档
    服务端实时消息路由服务 开发文档
    消息历史记录下载服务 开发文档

    体验 SealTalk

    SealTalk(嗨豹)是融云打造的开源即时通讯(IM)应用程序,具备单聊、群组、聊天室、客服、音视频通话、红包、通讯录等各种功能,界面简洁、使用简单、服务稳定,欢迎大家下载体验

    SealTalk 源码下载: