用户工具

im快速入门

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

im快速入门 [2017/08/23 08:44]
im快速入门 [2017/08/23 08:44] (当前版本)
行 1: 行 1:
 +======IM快速入门======
 +=====一、IM简介=====
 +
 +即时通讯(IM)是云之讯平台向开发者提供的免费通讯云服务。开发者通过云之讯平台,不必搭建复杂的服务端后台,就可以将即时通讯功能快速集成到应用中。
 +<​HTML>​
 +<div style="​background-color:​ #​d9edf7;​border-color:​ #​bce8f1;​color:​ #​31708f;​padding:​ 10px; margin-bottom:​20px;">​云之讯提供以下组件</​div>​
 +</​HTML>​
 +  * **客户端IM SDK:**云之讯平台为适应不同用户使用场景,方便开发者更加自主方便的集成云之讯通讯业务能力,将与云之讯平台长连接的TCP通讯层独立封装,独立管理通讯传输,更好的确保TCP稳定性,而IM业务能力库则更专注对业务逻辑处理,层次更加分明清晰。\\ ​
 +  * **客户端IM UI组件(IMKit):**云之讯平台将IM应用的各种场景进行界面组件封装,大大节省开发者界面开发时间,只需简单的界面加载,就能快速高效的集成使用云之讯平台IM能力。\\ ​
 +  * **服务端REST API:**云之讯平台对外统一开放标准接口,账号体系接口、平台各业务接口独立分离,更好的满足各业务需求快速高效迭代要求。\\ ​
 +  * **服务端AS SDK:**高效集成、快速使用,是云之讯服务器宗旨,为开发者服务器能更快速、便捷对接云之讯平台,节省与平台REST API接口调试流程,云之讯将与平台REST API通讯接口进行封装,开发者无需关注通讯细节,只需要在开发者应用服务器调用封装包接口,就可以快速的完成与云之讯平台对接。\\ ​
 +
 +====1、架构介绍====
 +开发者通过APP集成云之讯平台SDK,同时使用平台的REST接口服务可以实现IM的单聊、群组、讨论组功能。\\
 +云之讯平台提供群组管理、讨论组管理、讨论组关系维护,单聊消息、群组消息、讨论组消息实时送到、消息推送和离线消息拉取,系统消息通知,历史消息存储,保证消息不丢失、实时性、可靠性和安全性。\\
 +
 +  * **任意子账号体系:**开发者应用下注册用户可以是任意子账号(数字、字母(区分大小写)组成,最长50位),用户不必自己在App后台为用户创建云之讯子账号,可以直接使用用户在开发者App中的账号进行登录。<​html>​
 +<span style="​color:​red;">​任意子账号体系只在IM3.0以后的版本中支持。</​span>​
 +</​html>​
 +
 +
 +\\
 +{{ :​图片68.png?​ |nolink}}
 +\\
 +====2、集成流程====
 +集成流程关键环节:​
 +  * 获取 token 流程,可参考[[im_服务端开发文档|Server 开发文档]] - 获取 token 方法
 +  * 客户端的SDK集成,可参考[[im_android_sdk指南|IM Android SDK开发指南]]或[[im_ios_sdk指南|IM iOS SDK开发指南]]
 +  * AS服务端的集成,可参考[[im_服务端开发文档|IM Rest接口]]
 +  * 客户端UIkit集成,可参考[[im_android_ui组件开发指南|IM Android UIkit接口]]或[[im_ios_ui组件开发指南|IM iOS UIkit接口]]
 +
 +{{ :​集成流程1.png?​ |}}
 +
 +=====二、基础概念=====
 +====1、业务篇====
 +===1.1、单聊===
 +指两个用户一对一进行聊天,会话关系由云之讯负责建立并保持,退出聊天界面或者离线后可以收到推送通知。
 +===1.2、讨论组===
 +指两个以上用户一起进行聊天,用户可以自行添加好友生成一个讨论组聊天,会话关系由云之讯负责建立并保持,退出聊天界面或者离线后可以收到推送通知。
 +===1.3、会话列表===
 +指各种会话依照顺序先后排列的界面,其中会话列表中的每一个列表项称之为一条会话。排列的先后顺序会依赖于置顶、最新会话、未读会话和时间等因素。
 +\\
 +{{ :​会话列表.png?​ |nolink}}
 +\\
 +===1.4、聊天界面===
 +指聊天的具体界面,显示聊天的标题、成员头像、聊天内容、输入框等。
 +\\
 +{{ :​聊天界面.png?​ |nolink}}
 +\\
 +
 +
 +====2、开发篇====
 +===2.1、Rest===
 +为方便不同行业的开发者理解和快速接入,我们将服务端的通讯服务接口提供成一套 [[http://​en.wikipedia.org/​wiki/​Representational_State_Transfer|Restful]] 的标准接口,基于这些接口开发者就只需要具备基本的HTTP协议知识背景,以及结合任何一门熟悉的开发语言,就可完成在现有业务的基础上完成集成通讯服务。\\
 +Rest是一套新兴的web通讯协议,访问方式和普通的http类似,平台接口分get和post方式请求。协议支持xml,json两种请求方式,​采用md5加密算法的方式,通过url参数的形式发送参数。\\
 +===2.2、Token===
 +Token 即用户令牌,相当于您APP上当前用户连接云之讯的身份凭证。每个用户连接服务器都需要一个 Token,用户更换即需要更换 Token。每次初始化连接服务器时,都需要向服务器提交 Token。
 +===2.3、会话及会话类型===
 +会话 可以理解为当前用户同特定目标(一个用户,一个讨论组、一个群组)的一组聊天消息的集合及属性。\\
 +会话类型 是一个枚举,包括:单聊、讨论组聊天、群组聊天等。\\
 +会话的基本属性包括会话的发送者、接收者(可能是一个用户,也可能是一个讨论组、一个群组)、聊天的消息集合、会话的设置信息等。\\
 +
 +Android 相关类和枚举
 +    ConversationInfo
 +    CategoryId
 +
 +iOS 相关类和枚举
 +    UCSConversation
 +    UCS_IM_ConversationType
 +===2.4、消息、消息内容及消息类型===
 +消息 可以理解为当前用户同特定目标的一条聊天内容,除了包括消息内容,还包括发送者、接收者、消息方向等属性。\\
 +消息类型 包括:文本消息、语音消息、图片消息、位置消息等;我们后续还将持续跟随业界脚步,发布一系列消息类型。\\
 +消息内容 是指不同消息类型对应的实体容器,一种消息类型对应一种消息内容实体。\\
 +
 +请参考:\\
 +Android 相关类和枚举
 +    消息基类 ChatMessage
 +    单聊消息 SingleChat
 +    讨论组消息 DiscussionChat
 +    群组消息 GroupChat
 +iOS 相关类和枚举
 +    消息实体 UCSMessage
 +    消息基类 UCSMsgContent
 +    文字消息 UCSTextMsg
 +    语音消息 UCSVoiceMsg
 +    图片消息 UCSImageMsg
 +    位置消息 UCSLocationMsg
 +    自定义消息 UCSCustomMsg
 +    ​
 +=====三、云之讯消息推送概念=====
 +很多开发者在集成云之讯IMSDK的过程中,经常受到消息体系、推送机制的各种概念困扰。同时,大家对通知、推送,广播、系统消息等概念又没有统一的认识,造成了认知和沟通困难。这里我们为大家详细的解答下云之讯的整个消息和推送体系设计,以便大家可以更好的集成云之讯SDK进行开发。
 +====1、命名约定与概念解析====
 +===1.1、通知(Notification)===
 +移动开发中的通知是一种在用户界面上展示信息的概念,具体也就是在iOS或者安卓设备上展示一条提示。\\
 +在iOS平台上,表现如下图这种常见形式:​\\
 +{{ :​本地通知.png?​ |nolink}}
 +在安卓平台上,表现入下图这种常见形式:​\\
 +通知分为本地通知(Local Notification)和远程通知(Remote Notification)。尽管您看到的是一样的界面展现,但是他们分别来自本地发起和远程发起。本地通知指的是您的应用程序在前台、或者在后台但仍然在生命周期存活,此时收到消息,会直接通过前台的应用程序弹出提示窗口。远程通知指的是您的应用程序已经完全退出,应用进程已经不存在,此时通过 iOS 上的 APNS 系统服务或者 Android 上的服务进程收到消息,并弹出提示栏。大家开发和调试过程中,务必要清楚本地通知和远程通知的区别。\\
 +
 +===1.2、推送(Push)===
 +推送是一种技术概念,是指从服务端实时发送信息到客户端。\\
 +大家概念中的典型推送服务是类似 APNS(Apple Push Notification Service)、GCM(Google Cloud Messaging) 等服务。在国内,由于谷歌服务不能使用,因此您的应用必须使用第三方或者自己研发的服务来推送。\\
 +在某些场合,iOS 平台的推送(通过 APNS 的 Push)和远程通知(Remote Notification)表示相同的意思,可以互相替换使用。\\
 +===1.3、广播(Broadcast)===
 +广播是一种业务概念,是通过后台管理界面或者调用服务端接口,向 App 中的所有用户发送一条消息。通常“广播”和“推送”是开发者容易产生混淆的地方。
 +===1.4、系统消息(System Message)===
 +系统消息是一种业务概念,是指利用系统帐号(非用户帐号,用户不可登录)向用户发送的消息,既可以是通过调用广播接口发送给所有人的消息,也可以是加好友等单条通知消息。
 +在云之讯平台中,其实并不存在系统消息的概念,一般系统消息特指会话类型(UCS_IM_ConversationType)为“系统(UCS_IM_SYSTEMMSG)”的会话中的消息。
 +====2、iOS平台消息与推送逻辑解析====
 +===2.1、本地通知和远程通知===
 +首先要了解 iOS 的通知推送概念。大家平时看到的 iOS 弹出的提示,其实是由两种完全不同的机制产生的。\\
 +第一种:本地通知(Local Notification)
 +本地通知是通过调用本地接口,​由 iOS 设备直接生成发布的。\\
 +{{ :​本地通知.png?​ |nolink}}
 +第二种:远程通知(Remote Notification)\\
 +远程通知是通过苹果 APNS(Apple Push Notification Service) 服务发送到客户端的通知。\\
 +{{ :​离线推送.png?​ |nolink}}\\
 +\\
 +如果您需要进一步了解iOS离线推送,请参考[[http://​172.16.5.37:​1122/​doku.php?​id=%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E8%AF%A6%E8%A7%A3|iOS消息推送详解]]。
  

页面工具