需求html
使用Bmob iOS SDK中的數據實時功能(http://docs.bmob.cn/ios/developdoc/index.html?menukey=develop_doc&...)完成如下功能:ios
其中第一個需求是很容易實現的,關鍵是第二個需求,須要用到數據實時功能去監聽當前登陸用戶關注的做者是否發送新帖子。網絡
解決方案post
接到這個需求,很容易就想到如下方案,我稱之爲表監聽方案,原理以下:.net
表監聽方案
設計的表以下:
記錄用戶信息的表
user(username,password,attention_authors) 其中attention_authors爲用戶的關注者列表設計
記錄帖子信息的表
post(title,content,author)code
監聽過程:htm
咱們能夠看出,該方案中,只要一但出現有新帖子產生,那麼該應用的全部用戶都會接收到新帖子的信息,只是根據當前用戶是否有關注該帖子的做者來決定是否顯示,那麼假如應用的用戶量一大,天天的新帖子數不少時,那麼每個用戶天天接受這些帖子就須要消耗大量的流量,而顯然,這些流量中的信息絕大一部分是對用戶無用的。所以,咱們須要改變一下監聽策略。pdo
行監聽方案,原理以下:開發
設計兩張表:
user(username,password,attention_authors,last_post)
attention_authors 用戶關注的做者的objectId列表,該字段爲Array類型
last_post用戶發的最後一篇帖子的objectId
post(title,content,author)
整個邏輯分爲兩個方面 :
1.發post
2.收post
對比方案1,該方案最大的優勢在於,只有當前登陸用戶關注的做者發表新帖子時,用戶纔會收到更新推送,確保接收的信息對於用戶而言都是有用的。
總結
在移動客戶端的開發過程當中,在設計完方案後,還須要考慮網絡的交互,因爲目前的移動網絡流量仍是比較昂貴的,所以,要儘量地減小網絡數據交互。因爲如今有新的任務,目前只實現了使用行更新的方案,有興趣的朋友能夠嘗試實現表監聽方案來對比一下,若是後面時間充裕的話我也會將這兩種方案進行更加深刻的對比。
代碼連接:[http://download.csdn.net/detail/linmaofuyuanzhang/8528065][2]