交接文档

项目分四大块介绍:

  1. 数据库解释
  2. 聊天界面逻辑
  3. 聊天数据处理逻辑
  4. Puser 的定义和处理逻辑

一:数据库:
表、Model的含义:

#import "PDCoreDataCenter.h"
#import "UserInfo.h"                    // 用户信息 数据模型
#import "Teams.h"                       // 用户信息中企业信息 数据模型
#import "EnterpriseTeam.h"              // 企业信息 数据模型
#import "TeamMember.h"                  // 企业信息 数据库模型
#import "Permissions.h"                 // 企业成员权限参数节点 数据模型
#import "TeamDepartments.h"             // 企业团队信息  数据模型
#import "Messages.h"                    // 消息数据主体数据包
#import "MessageBody.h"                 // 消息信息数据包
#import "MessageFields.h"               // 消息内联信息数据包
#import "Assistant.h"
#import "FileModel.h"                   // 会话文件信息数据包

#import "FAUserInfoModel.h"             // 用户信息 Model
#import "FAUserInfo.h"                  // 当前用户信息 单利
#import "FAEnterpriseTeamInfoModel.h"   // 企业信息 Model
#import "FAEnterpriseTeamInfo.h"        // 用户当前所在企业 单利
#import "FATeamMemberModel.h"           // 企业成员权限参数节点 Model
#import "FATeamMemberInfo.h"            // 企业成员权限参数节点 单利
#import "FATeamDepartmentsModel.h"      // 企业团队信息  Model
#import "FAMessagesModel.h"             // 消息数据主体数据包
#import "FAAssistantModel.h"            // 助手信息 Model
#import "FAFileModel.h"                 // 文件 数据包

#import "MessageInventory.h"            // 获取会话清单  数据模型
#import "FAMessageInventoryModel.h"     // 获取会话清单 Model

注意事项:

  1. 确定一条具体消息关联的ID 有用户所在团队的ID、会话或频道ID、会话或频道类型、消息ID
  2. 在消息信息数据包中附件和内连用Data储存,所以增加字段的时候数据库不用做修改
  3. 当清楚一条消息时记得把相关的表数据删除,例如附件数据表

二:聊天界面逻辑

  1. 聊天中所有的聊天内容类型用的是一个FAChatCell 是根据 FAMessages中type(1.系统、2.文本、3.附件、4.内联)、Attachment中assort(0.附件、1表示图片、2语音)、Inline中templat( customer_revisit 任务 回访客户、calendar 提醒事项 日历、customer 共享客户)来确定每个消息体的显示样式。
  2. 当有业务扩展的时可以在FAChatCell中加入子视图用上面说的type 来控制不同样式的显示

三:聊天数据处理逻辑

  1. 会话清单中puser过来的新消息、会话置顶、清除未读数、修改的本地数据不请求新的会话清单接口
  2. 进入聊天界面先加载本地数据同时请求网络数据,当网络请求到数据后判断是不是有数据第一次进入界面当是返回的数据个数大于等于21的时候(说明本地数据与服务器数据脱节)删除本地当前会话的所有数据库数据,插入新的数据。
  3. 聊天界面数据的展示顺序是:1)请求数据 2)存入本地数据库 3)取出对应起始ID的20条数据 4)与原先的数据进行去重 5)新组合的数据安时间进行排序 6)插入对应的用户信息 7)以同一天为基数进行数据的处理 8)刷新界面

四:Puser

  1. puser在程序中有一个FAPuserAllMassageManager管理类 这个类是管理Push过来新通知时分发给不同的界面或监听的方法中,分发用的是通知机智
  2. puser 自己是客户端是不用做监听的,但频道是需要前端做puser的鉴定,鉴听已加入的频道不管是隐藏的还是显示的都监听、公有的频道也是需要做监听处理的,目前没有做共有频道的监听。
    3.当网络不稳定的时候 Socket重新连接的时候会重新订阅一遍频道。

puser 监听的事件解释:

当前会话
# 通知-新消息
["pusher:event",{"channel":"private-member-", "event":"pull-message", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-删除消息
["pusher:event",{"channel":"private-member-", "event":"delete-message", "data":{"sid":"4e37e7c790c95af5ee0377c1", "id":"4e37e7c790c95af5ee0377d1"}}]
当前成员
# 通知-加入群组
["pusher:event",{"channel":"private-member-", "event":"join-group", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-退出群组
["pusher:event",{"channel":"private-member-", "event":"leave-group", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-更新成员信息
["pusher:event",{"channel":"private-member-", "event":"update-member", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-更新成员列表
["pusher:event",{"channel":"private-member-", "event":"update-members", "data":""}]

# 通知-更新部门列表
["pusher:event",{"channel":"private-member-", "event":"update-departments", "data":""}]

# 通知-更新助手列表
["pusher:event",{"channel":"private-member-", "event":"update-helpers", "data":""}]

# 通知-更新用户信息
["pusher:event",{"channel":"private-member-", "event":"update-profile", "data":""}]

# 通知-更新企业信息
["pusher:event",{"channel":"private-member-", "event":"update-team", "data":""}]
已加入的群组频道
# 通知-新消息
["pusher:event",{"channel":"private-groups-", "event":"pull", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-删除消息
["pusher:event",{"channel":"private-groups-", "event":"delete-message", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-删除群组
["pusher:event",{"channel":"private-groups-", "event":"delete", "data":"4e37e7c790c95af5ee0377c1"}]

# 通知-更新群组信息
["pusher:event",{"channel":"private-groups-", "event":"update", "data":"4e37e7c790c95af5ee0377c1"}]

解释:

  1. 在这些事件处理中通知-退出群组、通知-删除消息、通知-删除群组是修改的本地数据不用做网络请求
  2. 剩下的是请求网络数据更新本地数据 这两点以做完
  3. 当有新的push事件可在FAPuserAllMassageManager 类中加不同的方法做处理

push 中客户端用到的通知名称解释:

#define PuserPullMessage @"FAPuserPullMessage"    // 通知-新消息
#define PuserDeleteMessage @"FAPuserDeleteMessage"  // 通知-删除消息
#define PuserLeaveGroup @"FAPuserLeaveGroup"     // 通知-退出群组
#define PuserDelete @"FAPuserDelete"         // 通知-删除群组
#define PuserMessageListRequest @"FAPuserMessageListRequest"   // 通知-会话列表刷新 网络刷新
#define PuserMessageListLocal @"PuserMessageListLocal"  // 通知-会话列表刷新 本地刷新

你可能感兴趣的:(交接文档)