新手指南

    简介

    融云是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供免费的即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。

    针对开发者所需的不同场景,融云平台提供了一系列产品、技术解决方案,包括:客户端 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 介绍

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

    IM 界面组件 - IMKit

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

    IM 通讯能力库 - IMLib

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

    融云音视频界面组件 - CallKit

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

    融云音视频核心组件 - CallLib

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

    融云位置功能相关库 - LocationLib

    Android 平台位置功能相关库文件。

    融云第三方推送库 - PushLib

    Android 平台支持第三方推送(小米),集成小米推送在小米系统上,可极大提高推送消息的到达率。

    融云红包相关组件 - RedPacket

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

    基础概念

    业务篇

    单聊

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

    群组聊天

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

    讨论组

    讨论组指两个以上用户一起进行聊天,用户可以自行添加好友生成一个讨论组聊天, App 在后台运行或者 App 进程被杀死后可以收到推送通知,与群组不同的是,讨论组会话关系由融云负责建立并保持,同一个用户最多可加入 500 个讨论组,讨论组中成员上限不超过 500 人。

    聊天室

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

    客服消息

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

    音视频通话

    指通过 IP 网络,使两个用户建立一对一、一对多的音视频通话。融云音视频 SDK 包括两部分:CallKit 和 CallLib 。

    应用公众服务

    为 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)”的会话中的消息。

    开发篇

    App Key / Secret

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

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

    Token

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

    体验 SealTalk

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

    SealTalk 源码下载: