[Android分享] 社交軟件開發解決方案

一個簡單的社交軟件解決方案應該解決的問題:

通信/共享/空間(朋友圈)/用戶/好友/動態/聊天記錄.

社交主要是交流、朋友圈(空間)。通信又分爲文本、表情、語音、視頻。朋友圈主要包含自己和好友動態,有些還包含系統推薦的信息。

這是我使用Bmob提供的解決方案案例:

通信:建立Bmob推送服務基礎上,有消息需要將通知或者信息推送到參與者端,文本可以直接推送,對於視頻,語音推送的是存儲連接地址,當參與者收到推送消息,根據地址下載該消息。對於表情來說有兩種方法,一種是在本地存儲表情包,另一種是和視頻,語音一樣,由對應的消息類型來標識。其中這裏視頻,語音,如果表情使用和視頻以及語音一樣的方式,使用bmob文件服務存儲。聊天記錄使用bmob表結構存儲。

用戶管理:用戶是整個社交過程的對象,好友、交流、動態、朋友圈、記錄查詢、評論動態等等都是在用戶的基礎上建立的。使用Bmob提供的服務能很好的解決用戶之間的聯繫。間圖:

154440pi8wo6f5zq8ju5wr.png

用戶表:每一個應用僅有一個用戶表,由Bmob服務自動生成,用於管理使用該應用的用戶:

154543acetmxocozhcwt2o.png

用戶好友表:使用該應用某個用戶的好友信息表,每一個用戶表中的一項應該對應一個好友表,開發者根據當用戶表中插入一條新記錄時就創建,用於管理該用戶的所有好友,如根據上面的用戶表,將需要創建WindWorld_friends和Rainworld_friends表.

154607kzcg9cw9djr2l03c.png

如圖是Rainworld好友表;

用戶動態表:該用戶的所有動態存儲表,同樣是每一個用戶表中的一項應該對應一個動態表,用於管理該用戶發表的動態(朋友圈動態);根據上面的用戶表中的內容,應該創建Rainworld_dynamic和WindWorld_dynamic表.

154644ezf2tal3a8f75fzf.png

如圖是Rainworld的動態表;

聊天記錄表:該用戶參與會話的紀錄表,當創建一個新的會話時,就創建一個會話表,裏面存儲了會話內容,建議使用會話雙方的ID創建會話表;


如圖是Rainworld和WindWorld的聊天記錄表:

154728u08xb9vaag50agxg.png

定時任務存儲表:存儲了定時任務執行的結果(注:定時任務主要是獲取和更新好友動態,當獲取好友動態的時候只需要讀取這個定時任務表即可);

注:除了用戶表,其他數據表Bmob不進行創建,必須由開發者根據需要創建。如:當用戶註冊時,應該根據註冊的信息創建對應的用戶好友表以及動態信息表;當有會話時則創建與該會話相關的會話表,用於存儲會記錄;當需要上傳多媒體信息時,需要創建對應文件信息存儲表(主要存儲多媒體文件的路徑),創建這些表均可用使用Bmob服務對象直接創建,這對應的是對象存儲,可以查看:http://docs.bmob.cn/android/developdoc/index.html?menukey=develop_doc&key=develop_android#index_添加數據。


聊天記錄使用表結構雲存儲。由統一的結構來標識信息是否是多媒體類型,如果是就採用不同的方式呈現。通過自定義的數據結構來進行本地分發(當客戶接受到消息以後,解析消息結構,根據自定義消息的類型來決定下面要做的事情,是直接顯示文本消息,或是顯示圖像,或者是顯示視頻,或者是顯示音頻信息)。通信過程:

154804oyb4etbk4uoeembm.png

上面是具體的社交軟件通信方式,其中簡單的敘述了使用bmob服務實現簡單的社交解決方案。其中的A、B代表的是通信的兩個客戶端,其中可以是Android、也可以是iOS。在這裏A、B可以上傳多媒體信息和下載多媒體信息。推送和消息通信不是直接推送圖像、語音、視頻,這些推送的僅僅是存儲地址。如:當A像B發送消息的時候,由A將消息推送到B,在這個過程當中如果有語音、視頻、或者圖像則將其同步上傳到bmob服務的文件服務存儲。當B收到推送的消息以後,根據類型進行對應的處理,如果是視頻、音頻、圖像則下載。


如發送圖像的方式:

154826phkbolc1tvddufzd.png

1:獲取要發送的圖像;

2.0:將發送圖像的消息推送到B;

2.1:與2.0同步將圖像文件保存到Bmob文件服務器中;

3.0 :接收推送的圖像消息;

3.1:接收到圖像消息以後,從Bmob文件服務器下載圖像文件;

上面幾個過程實現A與B之間的通信。

注:語音、視頻等多媒體信息的通信過程和圖像類似。文本的話不需要使用文件存儲。

上面的操作就需要講文件上傳到Bmob雲服務,同樣的需要創建會話紀錄表,需要更新文件存儲表

空間(朋友圈):這裏以微信朋友圈爲模版,可以查看所有好友動態,同時可以單獨查看個人動態,也可單獨查看某個好友動態,這些動態均以時間先後的順序查看,由最近的開始。這裏採用獨立的存儲方式,一個好友一個動態信息表。朋友圈使用bmob提供的雲端代碼結合實現。當請求朋友圈的同時,調用雲端代碼從bmob雲上查詢好友朋友圈,當然朋友圈包含的應該有好友動態以及評論。使用雲端代碼將動態組織成html形式或返回自定義的數據結構列表(如json數據),將其返回給請求者。


這裏有兩種解決方案,一種是每次請求根據好友信息表來獲取;一種是使用定時任務的方式來動態的更新定時任務表,當需要查看動態(朋友圈)的時候則直接讀取對應的定時任務存儲表即可。

由於朋友圈還包含了自己的動態以及好友動態,對好友動態應該可以評論,同樣可以查看自己的動態紀錄以及被評論記錄,查看自己的動態則直接獲取自己的動態表即可;當需要對好友動態進行評論時,則評論的內容將會根據好友表找到對應的動態表更項將該動態更新。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章