融云IM

–IM在现在的APP中已是很普通常见的功能了,而我最后使用IM功能已是两年半之前的一个APP,时间很久,各个IM厂商的SDK更新很大,所以趁着手里比较闲,抽了两天时间过了一下IM的实现。我是以融云SDK为入手点,完整的过了一下它的开发文档,最终形成一个具有好友系统的聊天demo,这边笔记是用来记录官方文档中比较重要的点和完成demo过程中想到的一些内容。

融云SDK的消息推送机制

如果APP保持和融云服务器的长连接(在线),则融云服务器会直接把消息推送给APP,APP再把消息内容以本地推送的形式展示出来(需要确定是如果是前台会发推送吗),流程图如下:
如果APP和融云服务器没有保持长连接(离线),则融云服务器会把消息推送给APNs,再由APNs将消息推送给手机,流程图如下如下:
注:应用切换至后台 2 分钟后,将自动切断与服务器的连接,此时应用为离线状态,新消息将会以 Push 方式推送。 用户在线状态下,应用在前台显示时,不会收到消息通知。

token

融云并不负责维护好友关系,也不需要这些数据,所以完成IM,APP的服务器至少需要完成两个工作是:维护好友关系和请求RCtoken

APP服务器和融云服务器的RCtoken交换机制:用户通过APP的账号密码登录APP服务器,APP服务器再向融云服务器请求该用户的RCtoken,并将RCtoken下发至APP,APP携带次RCtoken进行通信。

demo(好友体系、头像自己存储)

错误:

  1. 不要用同一个token多次connect, sdk会自动做好重连工作!!!
  2. 用户信息提供者为空请检查是否设置 [RCIM sharedRCIM].userInfoDataSource ,并且保证设置的对象没有被释放 [RCIM sharedRCIM].userInfoDataSource 是 weak 属性
  3. 自定义聊天页面的时候,创建该页面的时候,直接设置回话类型,如果在viewdidload中进行设置,会出现再次进入该页面聊天记录不显示的现象。(考虑会话列表也是)

使用自带的聊天界面:
弹出的键盘包含了:1. 语音功能、2 loc 功能、 3. 发送本地图片功能、4、图片保存功能,5使用相机功能,
所有要完成如下操作:1. 导入语音的sdk 2. loc 授权,3. 图片使用授权 4. 保存图片授权、5相机授权,否则使用到以上的任意一个功能点都会导致崩溃,或者屏蔽这些功能,看截图

显示 Gitment 评论