因爲後續篇幅比較大,因此調整了內容結構。html
全系列數據庫
【HELLO WAKA】WAKA iOS客戶端 之一 APP分析篇後端
【HELLO WAKA】WAKA iOS客戶端 之二 架構設計與實現篇api
【HELLO WAKA】WAKA iOS客戶端 之三 創做模塊分析與實現篇(上)緩存
【HELLO WAKA】WAKA iOS客戶端 之三 創做模塊分析與實現篇(下)服務器
【HELLO WAKA】WAKA iOS客戶端 之四 服務器架構設計網絡
MAKA 上週三發佈了iOS客戶端1.0。本着學習的態度,對MAKA客戶端作了分析。數據結構
1. 功能結構分解架構
工具:iPhone,MindNode。app
下圖是概要的需求分析和功能分解。左邊爲需求,右邊爲根據需求實現的功能。
從需求角度和功能模塊的實現來看,已經知足用戶的最基本需求。
從產品策略來看,先解決有無問題,進而再持續改進。
2. 架構分析
完成了對需求和功能的分解後,咱們再來看下APP與服務器的關係。這個時候,神器Charles就上場了。具體使用方式自行搜索。
經過抓取客戶端與服務器通訊數據分析,客戶端與服務器的通訊以下圖。
1. API服務器。APP與服務器的主通訊方式。使用RESTful + form風格接口。前置機爲TNginx,後端接口爲PHP。
2. 圖片存儲服務器。用於上傳圖片。能夠注意到的是,採用原圖上傳 + 按需生成的方式。分離做品編輯和做品。好處有:1)圖片數據單獨處理,同時簡化了客戶端邏輯與服務器邏輯。2)方便後續變動。3)按需壓縮裁剪圖片,生成靜態化做品,優化訪問速度。
3. 做品瀏覽服務器。將做品靜態化,優化服務器性能。
4. CDN。使用了七牛的圖片CDN服務。
3. API分析
工具:Charles Proxy
如下是主要的API。
模塊 |
名稱 |
URL |
Method |
說明 |
用戶 |
註冊 |
/app/user/register |
POST |
|
登錄 |
/app/user/login |
POST |
|
|
忘記密碼 |
/app/user/forgetpassword |
POST |
|
|
用戶信息 |
/app/user/{$user_id} |
GET |
|
|
修改用戶信息 |
/app/user/{$user_id} |
PUT |
|
|
事件 |
個人事件列表 |
/app/events |
GET |
|
建立 |
/app/event |
POST |
|
|
更新 |
/app/event/{$event_id} |
PUT |
|
|
發佈 |
/app/event/{$event_id} |
POST |
|
|
創做 |
主分類 |
/app/specialCategories |
GET |
|
模板分類 |
/app/templates |
GET |
|
|
模板頁 |
/app/template/{$template_id} |
GET |
|
|
圖集分類 |
/app/pictureIndex |
GET |
|
|
圖片列表 |
/app/pictures |
GET |
|
|
熱門 |
公開事件 |
/app/publicEvents |
GET |
|
分類 |
/app/tagCategories |
GET |
|
1. 用戶模塊。基本用戶接口。比較簡單。登錄成功後使用token+uid訪問接口。
2. 事件模塊。 這部分接口頁算簡單。
1) 值得注意的是,做品列表數據,做品數據都採用了version號,模板與做品版本更新問題。
2) 模板與做品。 eg. GET /app/template/T_I1629HCW 直接使用在做品ID前加T_ 解決模板與做品的關係。
1 { 2 "id": "2BD324I1", 3 "title": "個人測試項目", 4 "content": "這是個人測試。", 5 "thumb": "http:\/\/img1.maka.im\/6IAGSXT4R1S18SV2MP3O", 6 "version": "1", 7 "firstImg": "http:\/\/img1.maka.im\/575144\/1440766949nikIOQqegbRpr.jpeg", 8 "template_id": "T_AHER10I9", 9 "updateTime": "2015-08-28 11:11:11", 10 "functionId": "0", 11 "industryId": "0", 12 "category_id": "10", 13 "functionTag": "", 14 "industryTag": "", 15 "statData": 0, 16 "statUrl": "http:\/\/api.maka.im\/statistics\/show\/2BD324I1", 17 "formData": 0, 18 "hasForm": 0, 19 "formUrl": "", 20 "QRcodeImg": "http:\/\/api.maka.im\/code\/index\/2BD324I1" 21 }
3. 創做模塊。這裏沒有太多好講的。基本數據返回。比較讚的是,返回雲圖冊,手機端能夠訪問PC端上傳的圖片。
4. 熱門模塊。簡單API。
4. 總結
1. 服務器架構。分離接口訪問,做品查看,圖片處理,圖片存儲,CDN。各個服務器均可以進行橫向擴展而且單獨優化。
2. 客戶端架構。
1)第三方庫依賴管理。使用Cocoapods管理第三方庫。
2)網絡庫。沒有使用AFNetworking,多是直接使用iOS內置類處理。這個比較意外。
3)數據庫。使用FMDB。
4)緩存。SDWebImage。
5)框架。使用ReactiveCocoa,Masonry。
6)其餘。其餘的一些UI庫。
7)不使用Storyboard和xib。
以上,是MAKA iOS的需求和功能分析,以及技術分析。
備註:純屬學習。請勿跨省。