即时聊天

iOS开发之环信(一)--基础知识详解

2016-10-14  本文已影响1444人  夜空已沉寂

大大小小关于环信的知识点都在这里了!(之前自己写了一个文档所以现在这些都是粘贴文档了)

一.环信常识:

1.名词解释

org_name企业唯一标识,开发者在环信开发者管理后台注册账号时填写的企业ID

app_name同一企业下APP的唯一标识,开发者在环信开发者管理后台创建应用时填写的”应用名称”

org_admin开发者在环信开发者管理后台注册时填写的“用户名”。企业管理员拥有对该企业账号下所有资源的操作权限

AppKey:一个APP的唯一标识,格式是${org_name}#${app_name}

2.环信ID与用户名

一个用户的环信ID和他的在APP中的用户名并不需要一致,只需要有一个明确的对应关系。例如,用户名是stliu@apache.org,当这个用户登录到APP的时候,可以登录成功之后,再登录环信的服务器,所以这时候,只需要能够从stliu@apache.org推导出这个用户的环信ID即可

3.token(由后台服务器来做)

环信提供的REST API需要权限才能访问,权限通过发送HTTP请求时携带token来体现

获取APP管理员Token

使用APP的client_id和client_secret获取授权管理员token

client_id/client_secret:在环信官网注册一个应用时生成的

后台通过这两个参数获取到token值

二.简介:

用户和好友体系

1.用户体系集成(也就是说添加.修改.删除用户)

环信和用户体系的集成主要发生在2个地方,服务器端集成和客户端集成。

1.1服务器端集成需要做的内容

1.1.1.如何创建环信账号

环信只是即时通讯的消息通道.不包含用户的私人信息

要使用环信,只需要为每一个APP用户创建一个环信账号(就是所谓的环信id)。创建环信账号仅需要以下信息:

username: "jliu", //username

password:"123456" //密码。

这两个参数通常是用户的userID和用户的app密码加过密,然后在通过hash转码之后的参数,防止第三方(环信)泄密

1.1.2.APP创建新用户时创建环信账号

每次当APP客户端调用APP自己的服务器后台创建新用户时,(这个过程最好在服务器端完成)也在环信上为该APP用户创建一个环信账号(环信id)

1.1.3.APP删除用户时删除环信账号

每次当APP客户端调用APP自己的服务器后台删除新用户时,(这个过程最好在服务器端完成)也在环信上将该APP用户对应的环信账号删除。

1.1.4.APP修改用户密码时更新环信账号的密码

每次当APP用户的密码被修改时,(这个过程最好在服务器端完成)也要更新该APP用户对应的环信账号的密码。

1.2客户端要做的内容:

1.2.1客户端登录集成

APP客户端在登录自己的APP服务器后台成功后,需要调用环信客户端SDK的登录方法。

1.2.2客户端退出登录集成

APP客户端在退出登录自己的APP服务器后台成功后,需要调用环信客户端SDK的退出登录方法

2.好友体系的集成(也就是说集成好友列表,用于实现好友之间限制或其他权限)

好友体系,是指谁是谁的好友的关系体系。环信提供好友体系,但不是必须使用的,仅在需要控制消息发送权限时才启动。

比如:一个交友类的APP就必须要控制只有我的好友才能给我发消息,不是我的好友的人需要向我发送加好友邀请,我批准后才能给我发消息。这种情况下,就需要启用环信提供的好友体系。

2.1服务器端要做的内容

2.1,1将已上线的APP的现有用户的好友体系导入到环信

2.1.2APP用户好友列表更新时也同步更新环信账号的好友体系

每次当APP服务器后台的用户的好友列表发生变化时,也在环信上更新该APP用户的好友体系

2.1.3.打开或关闭发送消息权限控制

是否在环信中建立好友体系,是否开启或关闭发送消息的权限控制,是由APP用户自己决定的

2.2.客户端集成

2.2.1获取好友列表,监听好友列表

2.2.2根据账号(查找、添加、删除、黑名单)

三.通信过程及聊天记录保存

1.环信通信的过程

1.1.在线状态:客户端A发送消息到环信服务器,环信服务器推送消息到客户端B。

1.2.离线状态:客户端A发送消息到环信服务器,环信服务器检测到客户端B不在线,会添加到离线缓存队列中,当客户端B登录后服务器会把离线消息推送给客户端B。

2.环信聊天记录存储

2.1.客户端A发送消息到环信服务器的同时,SDK会保存这条消息到本地数据库(SDK内部创建数据库,不允许直接操作,但可以查看,具体步骤看视频),环信服务器在推送消息到客户端B的同时也会在服务器记录下来(消息历史记录免费存储3天),客户端B收到消息后,SDK会将这条消息存储到本地数据库。

2.2.注:客户端并未提供去环信服务器获取聊天记录的接口(都是在本地数据库中获取),所以,如果换了设备或者清空了数据,聊天记录都不会存在,如果有需求要从服务器拉取聊天记录,可以在自己服务器处理。

2.3.获取聊天记录常用代码

//获取会话中的全部聊天记录。

NSArray *messages = [conversationloadAllMessages];

//根据messageid获取消息

NSArray *messages = [conversationloadMessagesWithIds:@[@"msgid1",@"msgid2",@"msgid3"]];

//根据messageid获取消息

EMMessage *msg = [conversationloadMessageWithId:@"msgid1"];

//根据时间戳读取指定条数的消息(获取当前时间的20条消息)

longlongtimestamp = [[NSDate date] timeIntervalSince1970] * 1000 + 1;

NSArray * messages = [conversationloadNumbersOfMessages:20 before:timestamp];

四.后台操作

注意:以下很多虽然请求参数一样,但他们的请求方式/url路径,都是不一样的

1.后台注册IM用户(由后台服务器来做)

注册IM用户(单个/批量)

请求参数:username和password是必须的,nickname是可选的,这个nickname用于iOS推送

分两种模式:开放注册和授权注册。

开放注册:请求头中不加token;(只用于单个注册)

授权注册:请求头中必须加token。(推荐使用)

获取IM用户

单个删除参数:token值

批量:token值/获取个数

删除IM用户

单个参数:token值

批量:token值/获取个数

重置密码

参数:token/新的密码

修改用户昵称

参数:新昵称/token值

2.好友与黑名单

二者

{owner_username}是要添加好友的用户名,

{friend_username}是被添加的用户名,

好友必须是和自己在一个APP下的IM用户

给IM用户添加删除好友

二者都放在url中

参数:token值

查看好友/获取IM用户的黑名单

前者放在url中

参数:token值

往IM用户的黑名单中加人

前者放在url中

参数:token值/需要加入到黑名单中的用户名

从IM用户的黑名单中减人

url中:owner_username/blocked_username

参数:token值

3.在线与离线

查看用户在线状态/查询离线消息数

参数:token值

查询某条离线消息状态

url中添加一个消息id ;msg_id

参数:token值

账号禁用与解禁/强制用户下线

参数:token值

4.获取聊天记录/文件上传下载/发送消息/群组管理/聊天室管理:

只是url中拼接的路劲不同

参数:token值

环信客户端操作

参考官方文档主要有:

iOS客户端集成

常见集成方案

iOS API常见错误码

.集成iOS SDK前的准备工作

1.注册环信开发者账号并创建后台应用(略)

2.制作并上传推送证书(略)

如果不需要实现离线推送

功能,请忽略这步

五.集成iOS SDK

1.iOS SDK

SDK:完整的IM功能,实现了不同类型消息的收发、会话管理、群组、好友、聊天室等功能(就是提供了很多牛逼的方法)

EaseUI:是一组IM相关的UI控件,旨在帮助开发者快速集成环信SDK。

我们可以直接用demo集成,也可以只用SDK其它的自己写

2.SDK常用类

EMClient:是SDK的入口,主要完成登录、退出、连接管理等功能。通过该类可以获取到下面四个类。

EMChatManager:管理消息的收发,完成会话管理等功能。

EMContactManager:负责好友的添加删除,黑名单的管理。

EMGroupManager:负责群组的管理,创建、删除群组,管理群组成员等功能。

EMChatroomManager:负责聊天室的管理。

3.集成步骤

a.官网下载SDK

b.SDK目录讲解:

环信iOS

HyphenateSDK开发使用(不包含实时通话功能)

环信iOS

HyphenateFullSDK开发使用(包含实时通话功能:比如打电话/对视频,基本上不用吧)

环信iOS doc SDK相关API文档

环信iOS

ChatUIDemo3.0工程源码(官方写的demo)

环信iOS EaseUI工程源码

环信iOS

chatdemo-ui-3.x.x.ipa打包的ipa

注意:

iOS HyphenateSDK/HyphenateFullSDK中有两个子文件夹:include、lib。请不要擅自修改这些文件夹的任何东西

include包含SDK的头文件,每个类的具体使用转到Apple Docs

c.用到的第三方库

EaseUI中用到的第三方库:

MWPhotoBrowser:图片处理库,浏览显示

MJRefresh:用于页面刷新

MBProgressHUD:用于提示加载刷新

ibopencore-amrnb.a,libopencore-amrwb.a:用于amr与wav之间的转换

Demo中用到的第三方库:

Parse.framework、Bolts.framework:

Demo中的用户信息存储在Parse,这两个库是Parse所需要的库,开发者如果没用Parse存储,不要复制到自己项目中

libMobClickLibrary.a:友盟相关的库,用于环信Demo基本信息的统计,开发者不用或者已有别的版本的库不要复制到自己项目

d.导入SDK

(手动操作记笔记)

将下载好的SDK文件夹(HyphenateSDK)拖入到项目中,并勾选上Destination。

向Build Phases→Link Binary

With Libraries中添加依赖库。

SDK依赖库有:

•CoreMedia.framework

•AudioToolbox.framework

•AVFoundation.framework

•MobileCoreServices.framework

•ImageIO.framework

•libc++.dylib

•libz.dylib

•libstdc++.6.0.9.dylib

•libsqlite3.dylib

若拖入HyphenateFullSDK时导入框架:

•libiconv.dylib

(如果使用的是xcode7,后缀为tbd。)

SDK不支持bitcode,向Build

Settings→Linking→Enable Bitcode中设置NO。

编译即可

以上是介绍关于环信的一些知识和导入项目注意事项之类,具体操作请关注环信开发(二)!

上一篇下一篇

猜你喜欢

热点阅读