標籤:解決方案 軟體開發 開發人員 android
一個簡單的社交軟體解決方案應該解決的問題:
通訊/共用/空間(朋友圈)/使用者/好友/動態/聊天記錄.
社交主要是交流、朋友圈(空間)。通訊又分為文本、表情、語音、視頻。朋友圈主要包含自己和社交動向更新,有些還包含系統推薦的資訊。
這是我使用Bmob提供的解決方案案例:
通訊:建立Bmob推送服務基礎上,有訊息需要將通知或者資訊推送到參與者端,文本可以直接推送,對於視頻,語音推送的是儲存串連地址,當參與者收到推送訊息,根據地址下載該訊息。對於表情來說有兩種方法,一種是在本機存放區表情包,另一種是和視頻,語音一樣,由對應的訊息類型來標識。其中這裡視頻,語音,如果表情使用和視頻以及語音一樣的方式,使用bmob檔案服務儲存。聊天記錄使用bmob表結構儲存。
使用者管理:使用者是整個社交過程的對象,好友、交流、動態、朋友圈、記錄查詢、評論動態等等都是在使用者的基礎上建立的。使用Bmob提供的服務能很好的解決使用者之間的聯絡。間圖:
650) this.width=650;" id="aimg_164860" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154440pi8wo6f5zq8ju5wr.png" class="zoom" width="600" height="451" alt="154440pi8wo6f5zq8ju5wr.png" />
使用者表:每一個應用僅有一個使用者表,由Bmob服務自動產生,用於管理使用該應用的使用者:
650) this.width=650;" id="aimg_164861" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154543acetmxocozhcwt2o.png" class="zoom" width="600" alt="154543acetmxocozhcwt2o.png" />
使用者好友表:使用該應用某個使用者的好友資訊表,每一個使用者表中的一項應該對應一個好友表,開發人員根據當使用者表中插入一條新記錄時就建立,用於管理該使用者的所有好友,如根據上面的使用者表,將需要建立WindWorld_friends和Rainworld_friends表.
650) this.width=650;" id="aimg_164862" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154607kzcg9cw9djr2l03c.png" class="zoom" width="600" alt="154607kzcg9cw9djr2l03c.png" />
是Rainworld好友表;
使用者動態表:該使用者的所有動態儲存裝置表,同樣是每一個使用者表中的一項應該對應一個動態表,用於管理該使用者發表的動態(朋友圈動態);根據上面的使用者表中的內容,應該建立Rainworld_dynamic和WindWorld_dynamic表.
650) this.width=650;" id="aimg_164863" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154644ezf2tal3a8f75fzf.png" class="zoom" width="600" alt="154644ezf2tal3a8f75fzf.png" />
是Rainworld的動態表;
聊天記錄表:該使用者參與會話的紀錄表,當建立一個新的會話時,就建立一個會話表,裡面儲存了會話內容,建議使用會話雙方的ID建立會話表;
是Rainworld和WindWorld的聊天記錄表:
650) this.width=650;" id="aimg_164864" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154728u08xb9vaag50agxg.png" class="zoom" width="600" alt="154728u08xb9vaag50agxg.png" />
定時任務儲存表:儲存了定時任務執行的結果(註:定時任務主要是擷取和更新社交動向更新,當擷取社交動向更新的時候只需要讀取這個定時任務表即可);
註:除了使用者表,其他資料表Bmob不進行建立,必須由開發人員根據需要建立。如:當使用者註冊時,應該根據註冊的資訊建立對應的使用者好友表以及動態資訊表;當有會話時則建立與該會話相關的會話表,用於儲存會記錄;當需要上傳多媒體資訊時,需要建立對應檔案資訊儲存表(主要儲存多媒體檔案的路徑),建立這些表均可用使用Bmob服務物件直接建立,這對應的是Object Storage Service,可以查看:http://docs.bmob.cn/android/developdoc/index.html?menukey=develop_doc&key=develop_android#index_添加資料。
聊天記錄使用表結構雲端儲存。由統一的結構來標識資訊是否是多媒體類型,如果是就採用不同的方式呈現。通過自訂的資料結構來進行本地分發(當客戶接受到訊息以後,解析訊息結構,根據自訂訊息的類型來決定下面要做的事情,是直接顯示簡訊,或是顯示映像,或者是顯示視頻,或者是顯示音頻資訊)。通訊過程:
650) this.width=650;" id="aimg_164865" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154804oyb4etbk4uoeembm.png" class="zoom" width="600" alt="154804oyb4etbk4uoeembm.png" />
上面是具體的社交軟體通訊方式,其中簡單的敘述了使用bmob服務實現簡單的社交解決方案。其中的A、B代表的是通訊的兩個用戶端,其中可以是Android、也可以是iOS。在這裡A、B可以上傳多媒體資訊和下載多媒體資訊。推送和訊息通訊不是直接推送映像、語音、視頻,這些推送的僅僅是儲存地址。如:當A像B發送訊息的時候,由A將訊息推送到B,在這個過程當中如果有語音、視頻、或者映像則將其同步上傳到bmob服務的檔案服務儲存。當B收到推送的訊息以後,根據類型進行對應的處理,如果是視頻、音頻、映像則下載。
如發送映像的方式:
650) this.width=650;" id="aimg_164866" src="http://a1.eoeandroid.com/attachment/forum/201604/25/154826phkbolc1tvddufzd.png" class="zoom" width="600" alt="154826phkbolc1tvddufzd.png" />
1:擷取要發送的映像;
2.0:將發送映像的訊息推送到B;
2.1:與2.0同步將影像檔儲存到Bmob檔案伺服器中;
3.0 :接收推送的映像訊息;
3.1:接收到映像訊息以後,從Bmob檔案伺服器下載影像檔;
上面幾個過程實現A與B之間的通訊。
註:語音、視頻等多媒體資訊的通訊過程和映像類似。文本的話不需要使用檔案儲存體。
上面的操作就需要講檔案上傳到Bmob雲端服務,同樣的需要建立會話紀錄表,需要更新檔案儲存體表
空間(朋友圈):這裡以朋友圈為模版,可以查看所有社交動向更新,同時可以單獨查看個人動態,也可單獨查看某個社交動向更新,這些動態均以時間先後的順序查看,由最近的開始。這裡採用獨立的儲存方式,一個好友一個動態資訊表。朋友圈使用bmob提供的雲端代碼結合實現。當請求朋友圈的同時,調用雲端代碼從bmob雲上查詢好友朋友圈,當然朋友圈包含的應該有社交動向更新以及評論。使用雲端代碼將動態組織成html形式或返回自訂的資料結構列表(如json資料),將其返回給要求者。
這裡有兩種解決方案,一種是每次請求根據好友資訊表來擷取;一種是使用定時任務的方式來動態更新定時任務表,當需要查看動態(朋友圈)的時候則直接讀取對應的定時任務儲存表即可。
由於朋友圈還包含了自己的動態以及社交動向更新,對社交動向更新應該可以評論,同樣可以查看自己的動態紀錄以及被評論記錄,查看自己的動態則直接擷取自己的動態表即可;當需要對社交動向更新進行評論時,則評論的內容將會根據好友表找到對應的動態表更項將該動態更新。
本文出自 “12012117” 部落格,請務必保留此出處http://12022117.blog.51cto.com/12012117/1844662
[Android分享] 社交軟體開發解決方案