項(xiàng)目地址
主項(xiàng)目:https://github.com/boredream/BDChat
依賴主model:https://github.com/boredream/bdcodehelper
服務(wù)端代碼:https://github.com/boredream/BoreIMCloud
歡迎 Star和Follow~
注意:
- 網(wǎng)絡(luò)框架奔脐、常用工具類封裝在了依賴主model:bdcodehelper中了居兆,是單獨(dú)放在一個(gè)git項(xiàng)目里的芽腾,因此需要手動(dòng)下載然后復(fù)制到主項(xiàng)目目錄下态兴。
- 服務(wù)端代碼需要登錄LeanCloud才能部署,因此如果需要自定義修改重新部署請(qǐng)參考LeanCloud相關(guān)文檔自行申請(qǐng)賬號(hào)替換配置然后部署区转。
項(xiàng)目總結(jié)
開發(fā)周期:2.5周
7.3 ~ 7.20
(實(shí)際開發(fā)天數(shù):10 天)
頁面:15個(gè)
- Splash頁面
- 登錄頁面
- 忘記密碼
- 注冊(cè)頁面
- 會(huì)話列表(融云)
- 通訊錄
- 我的
- 會(huì)話頁面(融云基礎(chǔ)上稍微修改)
- 會(huì)話詳情
- 成員列表修改頁面
- 新的朋友
- 添加好友
- 好友詳情
- 修改信息
- 修改昵稱
接口:14個(gè)
其中云引擎方法5個(gè)(服務(wù)端需要些代碼)
存在的問題
- 類似的頁面比如通訊錄和添加好友時(shí)候的好友列表苔巨,不知道咋提取封裝更好。
是直接復(fù)用同一個(gè)頁面废离?同一個(gè)Adapter侄泽?還是只同一個(gè)ViewHolder - RxJava使用不夠熟練
- 數(shù)據(jù)返回頁面如果不在了,怎么處理更好蜻韭?不太想用RxLifeCycler的那套
- 圖片壓縮的東西悼尾,因?yàn)槭怯玫搅薌lide所以需要Context對(duì)象,咋放到presetner里呢~
復(fù)雜的業(yè)務(wù)分析
最核心的部分其實(shí)是會(huì)話列表聊天頁面啥的肖方,但是融云已經(jīng)封裝好了闺魏,這里本著實(shí)用的角度就不重復(fù)造輪子了,直接使用~
個(gè)人覺得最麻煩的點(diǎn)在于好友關(guān)系的處理
就是申請(qǐng)?zhí)砑痈┗⒔邮芪銮拧⑿碌暮糜训认嚓P(guān)業(yè)務(wù)上
好友關(guān)系設(shè)計(jì)
服務(wù)端保存一個(gè)好友關(guān)系FriendRelation表,仨字段艰垂,srcUser, targetUser, relation
其中relation字段:
- -1 src申請(qǐng)加target好友
- 1 互相為好友關(guān)系
【添加好友流程】
情景一烹骨,新的添加
- A通過昵稱或其他信息搜索到用戶B
- A調(diào)用接口申請(qǐng)?zhí)砑雍糜袯
- 服務(wù)端先判斷好友關(guān)系數(shù)據(jù)庫中AB是否有關(guān)系
- 如果已經(jīng)是好友,則返回已添加提示
- 如果A曾經(jīng)向B提交過申請(qǐng)材泄,則返回成功申請(qǐng)?zhí)崾荆菙?shù)據(jù)庫中不再重復(fù)添加好友關(guān)系
- 如果是B已經(jīng)向A提交過申請(qǐng)吨岭,則直接relation=1雙方改為好友
- 如果雙方?jīng)]關(guān)系拉宗,則表中插入一條信息 AUser BUser -1,代表A向B發(fā)出了好友申請(qǐng)辣辫。同時(shí)向B發(fā)送一條IM系統(tǒng)消息“xxx申請(qǐng)?zhí)砑幽鸀楹糜选?/li>
情景二旦事,同意
- B收到A的好友申請(qǐng),在新的好友中顯示
- 同意添加好友
服務(wù)端接受到B的同意請(qǐng)求后急灭,將A和B的關(guān)系修改為好友姐浮,即表中的對(duì)應(yīng)數(shù)據(jù)修改為 AUser BUser 1
【新的好友】
只有兩種情況:對(duì)方加我了,顯示“同意”葬馋、同意后顯示“已添加”
注意卖鲤,我申請(qǐng)加別人不在新的好友中顯示
所以獲取新的好友列表的服務(wù)端設(shè)計(jì)為:
- 查詢tarUser是我的所有關(guān)系列表數(shù)據(jù)肾扰,且relation=-1代表其他人對(duì)當(dāng)前用戶提交的好友申請(qǐng),然后返回所有的申請(qǐng)用戶
- “已添加”情況來源于本地?cái)?shù)據(jù)庫蛋逾,只有在收到請(qǐng)求且同意后才修改展示(本功能2.0實(shí)現(xiàn))
展示頁面
登陸.png
會(huì)話列表.png
會(huì)話頁面.png
會(huì)話詳情.png
發(fā)起群聊.png
搜索好友.png
新的朋友.png
詳細(xì)資料.png
我的.png