即时通讯(IM)是云之讯平台向开发者提供的免费通讯云服务。开发者通过云之讯平台,不必搭建复杂的服务端后台,就可以将即时通讯功能快速集成到应用中。
开发者通过APP集成云之讯平台SDK,同时使用平台的REST接口服务可以实现IM的单聊、群组、讨论组功能。
云之讯平台提供群组管理、讨论组管理、讨论组关系维护,单聊消息、群组消息、讨论组消息实时送到、消息推送和离线消息拉取,系统消息通知,历史消息存储,保证消息不丢失、实时性、可靠性和安全性。
集成流程关键环节:
指两个用户一对一进行聊天,会话关系由云之讯负责建立并保持,退出聊天界面或者离线后可以收到推送通知。
指两个以上用户一起进行聊天,用户可以自行添加好友生成一个讨论组聊天,会话关系由云之讯负责建立并保持,退出聊天界面或者离线后可以收到推送通知。
为方便不同行业的开发者理解和快速接入,我们将服务端的通讯服务接口提供成一套 Restful 的标准接口,基于这些接口开发者就只需要具备基本的HTTP协议知识背景,以及结合任何一门熟悉的开发语言,就可完成在现有业务的基础上完成集成通讯服务。
Rest是一套新兴的web通讯协议,访问方式和普通的http类似,平台接口分get和post方式请求。协议支持xml,json两种请求方式,采用md5加密算法的方式,通过url参数的形式发送参数。
Token 即用户令牌,相当于您APP上当前用户连接云之讯的身份凭证。每个用户连接服务器都需要一个 Token,用户更换即需要更换 Token。每次初始化连接服务器时,都需要向服务器提交 Token。
会话 可以理解为当前用户同特定目标(一个用户,一个讨论组、一个群组)的一组聊天消息的集合及属性。
会话类型 是一个枚举,包括:单聊、讨论组聊天、群组聊天等。
会话的基本属性包括会话的发送者、接收者(可能是一个用户,也可能是一个讨论组、一个群组)、聊天的消息集合、会话的设置信息等。
Android 相关类和枚举
ConversationInfo CategoryId
iOS 相关类和枚举
UCSConversation UCS_IM_ConversationType
消息 可以理解为当前用户同特定目标的一条聊天内容,除了包括消息内容,还包括发送者、接收者、消息方向等属性。
消息类型 包括:文本消息、语音消息、图片消息、位置消息等;我们后续还将持续跟随业界脚步,发布一系列消息类型。
消息内容 是指不同消息类型对应的实体容器,一种消息类型对应一种消息内容实体。
请参考:
Android 相关类和枚举
消息基类 ChatMessage 单聊消息 SingleChat 讨论组消息 DiscussionChat 群组消息 GroupChat
iOS 相关类和枚举
消息实体 UCSMessage 消息基类 UCSMsgContent 文字消息 UCSTextMsg 语音消息 UCSVoiceMsg 图片消息 UCSImageMsg 位置消息 UCSLocationMsg 自定义消息 UCSCustomMsg
很多开发者在集成云之讯IMSDK的过程中,经常受到消息体系、推送机制的各种概念困扰。同时,大家对通知、推送,广播、系统消息等概念又没有统一的认识,造成了认知和沟通困难。这里我们为大家详细的解答下云之讯的整个消息和推送体系设计,以便大家可以更好的集成云之讯SDK进行开发。
移动开发中的通知是一种在用户界面上展示信息的概念,具体也就是在iOS或者安卓设备上展示一条提示。
在iOS平台上,表现如下图这种常见形式:
在安卓平台上,表现入下图这种常见形式:
通知分为本地通知(Local Notification)和远程通知(Remote Notification)。尽管您看到的是一样的界面展现,但是他们分别来自本地发起和远程发起。本地通知指的是您的应用程序在前台、或者在后台但仍然在生命周期存活,此时收到消息,会直接通过前台的应用程序弹出提示窗口。远程通知指的是您的应用程序已经完全退出,应用进程已经不存在,此时通过 iOS 上的 APNS 系统服务或者 Android 上的服务进程收到消息,并弹出提示栏。大家开发和调试过程中,务必要清楚本地通知和远程通知的区别。
推送是一种技术概念,是指从服务端实时发送信息到客户端。
大家概念中的典型推送服务是类似 APNS(Apple Push Notification Service)、GCM(Google Cloud Messaging) 等服务。在国内,由于谷歌服务不能使用,因此您的应用必须使用第三方或者自己研发的服务来推送。
在某些场合,iOS 平台的推送(通过 APNS 的 Push)和远程通知(Remote Notification)表示相同的意思,可以互相替换使用。
广播是一种业务概念,是通过后台管理界面或者调用服务端接口,向 App 中的所有用户发送一条消息。通常“广播”和“推送”是开发者容易产生混淆的地方。
系统消息是一种业务概念,是指利用系统帐号(非用户帐号,用户不可登录)向用户发送的消息,既可以是通过调用广播接口发送给所有人的消息,也可以是加好友等单条通知消息。 在云之讯平台中,其实并不存在系统消息的概念,一般系统消息特指会话类型(UCS_IM_ConversationType)为“系统(UCS_IM_SYSTEMMSG)”的会话中的消息。
首先要了解 iOS 的通知推送概念。大家平时看到的 iOS 弹出的提示,其实是由两种完全不同的机制产生的。
第一种:本地通知(Local Notification)
本地通知是通过调用本地接口,由 iOS 设备直接生成发布的。
第二种:远程通知(Remote Notification)
远程通知是通过苹果 APNS(Apple Push Notification Service) 服务发送到客户端的通知。
如果您需要进一步了解iOS离线推送,请参考iOS消息推送详解。