1. 業(yè)務(wù)邏輯
iOS的app開(kāi)發(fā)的最終目的是要讓用戶使用, 用戶使用app完成自己的事就是業(yè)務(wù)邏輯, 業(yè)務(wù)邏輯的是最顯眼開(kāi)發(fā)工作.
但是業(yè)務(wù)邏輯對(duì)于開(kāi)發(fā)任務(wù)來(lái)說(shuō), 只是露在大海表面為上那一小截冰山, 為了支撐業(yè)務(wù)邏輯, 需要大量的其他功能的開(kāi)發(fā).
如果只看到了業(yè)務(wù)邏輯的開(kāi)發(fā), 而沒(méi)有全面的審視其他開(kāi)發(fā)工作, 很容易在估計(jì)進(jìn)度, 安排資源, 分解任務(wù)等方面估計(jì)不足.
那么, 開(kāi)發(fā)一個(gè)iOS app, 業(yè)務(wù)邏輯之外, 或者說(shuō)在支撐業(yè)務(wù)邏輯方面, 還有哪些容易忽略的開(kāi)發(fā)工作呢?
2. 身份驗(yàn)證
大多數(shù)的app, 會(huì)需要一套身份驗(yàn)證系統(tǒng), 把用戶信息進(jìn)行管理, 驗(yàn)證. 并且該功能在開(kāi)發(fā)的時(shí)序上, 應(yīng)該是靠前的. 會(huì)需要開(kāi)發(fā)以下功能:
- 讓用戶能夠注冊(cè), 登陸, 登出.
- 關(guān)聯(lián)社交網(wǎng)絡(luò)的賬號(hào), 導(dǎo)入社交賬號(hào)信息, 解除社交賬號(hào)綁定.
- 對(duì)用戶的會(huì)話, 或者令牌進(jìn)行相關(guān)處理.
- 針對(duì)用戶是否登陸, 以及用戶的不同類型, 屏蔽, 啟用相關(guān)功能. 并且在用戶登陸成功后, 跳轉(zhuǎn)到登陸前要進(jìn)入的視圖.
4. 自定義控件
贊美偉大的UI設(shè)計(jì), 他們進(jìn)行設(shè)計(jì)的時(shí)候, 總是會(huì)考慮驚艷的視覺(jué)效果, 容易設(shè)計(jì)出一些iOS本身不存在的控件. 雖然在github上又大量的第三方開(kāi)源控件, 但是很難說(shuō)有和UI設(shè)計(jì)一致的.
這時(shí)候, 要么需要從頭開(kāi)發(fā)自定義控件, 要么需要將開(kāi)源的控件進(jìn)行代碼修改. 通常這都是頗有難度的耗時(shí)工作.
3. 性能優(yōu)化
一個(gè)運(yùn)行緩慢, UI響應(yīng)延遲的app不是好app, 一個(gè)耗費(fèi)大量手機(jī)電量, 占用大量存儲(chǔ)控件, 內(nèi)存的app也不是一個(gè)好app, 一個(gè)會(huì)崩潰的app, 甚至都無(wú)法上架.
所有這些問(wèn)題的解決, 都需要靠性能優(yōu)化來(lái)解決. 這個(gè)工作常常需要在功能開(kāi)發(fā)完畢后, 進(jìn)行一次調(diào)整. 其中涉及較多有難度的技術(shù)問(wèn)題, 更是增加了該工作的難度.
4. 測(cè)試和調(diào)試
很少有一個(gè)app, 開(kāi)發(fā)完了之后即完全符合產(chǎn)品設(shè)計(jì)的意圖, 又沒(méi)有bug. 其實(shí)不是很少, 是完全沒(méi)有.
當(dāng)app功能開(kāi)發(fā)完成的時(shí)候, 會(huì)發(fā)現(xiàn)不是想要的樣子, 或者存在莫名的bug, 需要進(jìn)行修改. 人們?cè)诠烙?jì)工作量的時(shí)候, 很容易按照一次就能無(wú)bug完全正確的開(kāi)發(fā)出功能, 這樣估計(jì)太樂(lè)觀.
5. 屏幕適配
iOS系統(tǒng)現(xiàn)在有4/4s, 5/5s, 6, 6p, ipad等多種尺寸, app需要支持幾種設(shè)備, 界面就需要適配幾種屏幕.
雖說(shuō)有auto layout 之類的幫助你完成這項(xiàng)工作, 但是還是常常需要硬編碼來(lái)進(jìn)行適配.
想一想每開(kāi)發(fā)完一個(gè)功能, 都需要在所有設(shè)備上都確認(rèn)一下ok, 肯定會(huì)多花出一些時(shí)間.
6. 版本適配
iOS系統(tǒng)目前最多的是iOS7和iOS8, iOS6也有一些. 為了讓app安裝到更多人的手機(jī)上, 需要支持多個(gè)iOS版本.
但是, 各個(gè)iOS版本可提供的api, 以及系統(tǒng)的行為特性都是不一樣的. 對(duì)于一些功能, 需要些多套代碼, 調(diào)用不同的api來(lái)實(shí)現(xiàn).
7. app操作引導(dǎo)
就是app使用教程, 做的好的一些app, 都加入了交互式的教程, 這在游戲類或者工具類的app中尤為常見(jiàn).
這也是一項(xiàng)可能忽略的功能, 當(dāng)然這個(gè)功能不是必須的.
8. 點(diǎn)評(píng)引導(dǎo)
為了增加好評(píng)率, 一個(gè)優(yōu)秀的app會(huì)在合適的時(shí)機(jī), 合適的位置, 彈出對(duì)話框, 對(duì)用戶說(shuō)"親, 上app store給個(gè)五星吧!".
9. 分享
大多數(shù)的app需要支持分享, 需要把qq空間, 微信朋友圈, 新浪微博等等的分享集成進(jìn)來(lái). 集成工作花樣繁多, 注冊(cè)第三方的信息也過(guò)程繁瑣.
10. 反復(fù)迭代
產(chǎn)品經(jīng)理對(duì)產(chǎn)品的認(rèn)識(shí)隨著開(kāi)發(fā)也會(huì)變化, 有的功能會(huì)死掉, 有的功能會(huì)變掉, 有的功能會(huì)加進(jìn)來(lái).
如果只看到項(xiàng)目啟動(dòng)時(shí)需求列表里的的功能, 并認(rèn)為最后實(shí)現(xiàn)的就是那些, 就略顯天真了.
11. 緩存的處理
對(duì)于有后端服務(wù)器的app, 通常需要對(duì)一些網(wǎng)絡(luò)請(qǐng)求的資源進(jìn)行緩存. 以圖片等較大的文件數(shù)據(jù)為主.
可以使用第三方的, 也可以自己做, 反正這項(xiàng)工作是擺在那里的.
緩存的有效期, 怎成清除, 允許的最大空間, 也都是要考慮和處理的.
12. app的發(fā)布
需要設(shè)置app的名稱, 關(guān)鍵字, 描述, 制作漂亮的截圖, 甚至是視頻. 提交之后, 還得等著一周以上的審核時(shí)間.