在五月份,我花了大概三個星期的時間做了一款簡單的iOS應(yīng)用】衩兀現(xiàn)在將整個開發(fā)過程分享給大家磅甩,希望對在入門開發(fā)應(yīng)用的同學(xué)有些幫助。
需求分析
在這里是站著技術(shù)人員角度去做需求分析绩社,比專業(yè)產(chǎn)品需求分析是要簡單很多的。我需要做的是一款日記應(yīng)用技掏,觸發(fā)動機是我找不到我想要的日記應(yīng)用铃将。我用過很多工具來寫日記。比如有有道云筆記哑梳,印象筆記劲阎,QQ郵箱的記事本,Day One等鸠真,也體驗過其它用戶比較多的日記應(yīng)用悯仙,依然滿足不了我的需求。
從自身需求出發(fā)去做應(yīng)用吠卷,這對于大眾產(chǎn)品設(shè)計來說锡垄,是非常不適合的,不過我要做的就是一款給我這樣需求的用戶的小眾應(yīng)用祭隔,所以首先滿足我的需求货岭,也不為過,至少做出來自己用的好呀。
我自身是有寫日記的習(xí)慣的千贯,我的需求是這樣的
- 要快屯仗,打開應(yīng)用可以馬上記錄發(fā)生的事情
- 時間線,我需要記錄一天發(fā)生的多次事件
- 需要記錄圖片搔谴,圖片方便裁剪
- 隱私安全魁袜,這點特別重要,我不希望數(shù)據(jù)保存在別人的服務(wù)器上面
- 數(shù)據(jù)安全敦第,數(shù)據(jù)可以以通用格式導(dǎo)出峰弹,方便打印成冊,畢竟對于日記是要存在幾十年的芜果,而很多互聯(lián)網(wǎng)公司熬不過5年鞠呈,特別是多數(shù)的移動互聯(lián)網(wǎng)公司兩年就死掉了。
- 按日歷查找數(shù)據(jù)
對于隱私安全
和數(shù)據(jù)安全
师幕,這兩個是特別重要的粟按,這不僅是我自己的要求,參考了多個應(yīng)用的App Store的評論霹粥,和知乎上面關(guān)于日記的討論得出來的,所以這兩個是最重要的疼鸟。
另外出于收益考慮后控,對于一些功能需要購買開通使用,也是重要需求空镜。
技術(shù)評估
針對上面的需求浩淘,探求實現(xiàn)的可能性和初步的技術(shù)方案。大部分的需求的實現(xiàn)都是比較簡單吴攒,特別需要處理的是隱私安全
和數(shù)據(jù)安全
這兩個需求张抄。
隱私安全
數(shù)據(jù)不能保存到應(yīng)用服務(wù)器,防止別人服務(wù)器被hack是一個原因洼怔,最重要的是防止數(shù)據(jù)被開發(fā)者利用(當然也是在說我自己)署惯,畢竟日記數(shù)據(jù)是非常隱私的。所以多方面考慮下镣隶,數(shù)據(jù)保存到蘋果的iCloud是較好的做法极谊。數(shù)據(jù)放在大廠上面,對短期數(shù)據(jù)保存是比較放心的安岂,安全度較高轻猖,蘋果也是一家把用戶隱私放在首位不惜和FBI懟上的這么一個公司,數(shù)據(jù)放在iCloud上面域那,也避免了應(yīng)用提供商存儲用戶數(shù)據(jù)導(dǎo)致數(shù)據(jù)被非法利用的問題咙边。
數(shù)據(jù)安全
數(shù)據(jù)保存到iCloud是相對安全的了,但是依然不夠,數(shù)據(jù)能夠?qū)С鼋唤o自己才是最放心的败许。對于導(dǎo)出的數(shù)據(jù)格式選擇是一個難題王带,目前包含文本和圖片的富文本格式方案不多。如下列表
-
RTF
也稱富文本格式(Rich Text Format, 一般簡稱為RTF)檐束。雖然表面上說是非常流行的文檔格式辫秧,但國內(nèi)就沒怎么見人用過,國外情況不知曉被丧,也就不考慮了盟戏。 -
Doc/Docx
這個是微軟Word文檔格式,是通用的格式甥桂,是富文本方案比較好的選擇柿究。不過要導(dǎo)出這個格式不容易,Word文檔格式極為復(fù)雜黄选,iOS下面沒有好的庫可以用蝇摸,自己實現(xiàn)比較繁瑣,因此方案待定 -
PDF
Portable Document Format的簡稱办陷,意為“便攜式文檔格式”貌夕。這也是一個比較流行的文檔格式,格式也比較復(fù)雜民镜,不過蘋果內(nèi)置PDF生成接口啡专,因此比Word文件更為可行 -
MarkDown
這是一種純文本格式,不過可以引用外部圖片路徑制圈,所以也可以作為導(dǎo)出的格式選項们童。不過MarkDown的排版單一,對于需要打印成冊這個需求不友好鲸鹦,也作為待定考慮
綜合多個格式慧库,目前優(yōu)先先去PDF這個格式。
原型設(shè)計
將需求落實到原型上面馋嗜。原型設(shè)計是很重要的一步齐板,在這一步需要多花點時間,好的原型可以加快后面所有的步驟嵌戈。另外按照多年的經(jīng)驗覆积,也不可能設(shè)計出周全不需要后續(xù)修改的原型,因此后續(xù)稍作優(yōu)化也是必然的事情熟呛。原型工具我使用的是MockPlus宽档,它內(nèi)置了很多基本控件,通過簡單拖拉就可以完成了設(shè)計庵朝,非常方便吗冤。如下圖是其中一個原型
UI設(shè)計
UI設(shè)計這個環(huán)節(jié)是大多程序員的痛又厉,如果資金充足,或者項目比較重要椎瘟,找一個UI設(shè)計師來設(shè)計覆致,是強烈推薦的,千萬不要干自己吃力不討好的事情肺蔚。在大多數(shù)領(lǐng)域里面煌妈,顏值都是關(guān)鍵的一個環(huán)節(jié)。由于我的項目宣羊,功能簡單璧诵,第一個版本先自己完成設(shè)計。
我使用的設(shè)計工具是Sketch仇冯,比起PS之宿,這個工具更廉價杰扫,并且對于移動UI設(shè)計泄鹏,它更簡單克懊,高效脂凶。
設(shè)計對于程序員來講,真的是很難的杯活,如果沒有一定的研究矛渴,那就需要找一些相關(guān)書籍來補充一些基本知識臣嚣,這對于以后和設(shè)計進行良好的溝通也打下堅實的基礎(chǔ)娇昙。我覺得《寫給大家看的設(shè)計書》的設(shè)計書值得看项滑,里面會教會大家基本的配色,對齊涯贞,字體等,這些內(nèi)容非常重要危喉,它會使的之前一團糟(當然如果自身沒有基本的美學(xué)概念宋渔,也不覺得一團糟)的設(shè)計,變得基本美觀辜限。
在有了基本的設(shè)計指導(dǎo)之后皇拣,想要設(shè)計出像樣一點的東西,也是很難的薄嫡,這時候就要參考大量主流的UI設(shè)計案例氧急,它們會增強你對潮流的感知能力,也會給你帶來一些靈感毫深。我常去的網(wǎng)站有:
- http://dribbble.com 這里有非常多優(yōu)秀的設(shè)計案例
- http://collectui.com 這是一個專門收集UI設(shè)計的網(wǎng)站吩坝,包含了大量移動端設(shè)計的案例,而且是每日更新哑蔫,強烈推薦
- http://huaban.com 這是國內(nèi)著名的花瓣網(wǎng)站钉寝,里面也收集很多案例弧呐,特別適合國情。雖然很過國外的設(shè)計看起來很漂亮嵌纲,但是不符合國內(nèi)審美的俘枫,國內(nèi)大眾喜歡界面熱鬧一點,國外的喜歡設(shè)計簡潔一點逮走。
另外UI設(shè)計過程中需要很多設(shè)計資源鸠蚪,特別是圖標資源。圖標資源我找到了一個比較好的網(wǎng)站http://www.iconfont.cn 师溅。這是阿里巴巴的阿里媽媽UED出品的一個圖標資源網(wǎng)站茅信,非常好用。
需要特別聲明的一點是险胰,國內(nèi)的版權(quán)意識慢慢好了起來汹押,因此使用第三方網(wǎng)站素材的時候,要注意版權(quán)問題起便。
在UI設(shè)計的時候碰到一個難點就是數(shù)據(jù)導(dǎo)出PDF的一個板式的問題棚贾。板式設(shè)計在平面設(shè)計系統(tǒng)中是非常重要的一項。為了習(xí)得板式的一些皮毛榆综,立馬購買了兩本和板式設(shè)計有關(guān)的數(shù)據(jù)妙痹,分別是
書是挺不錯的,但是也不可能一看書就能獲得真髓鼻疮,只是輔助一下不至于設(shè)計跑偏那么厲害怯伊。
代碼實現(xiàn)
來到了自己流程最在行的一個環(huán)節(jié)了。由于這不是一篇側(cè)重技術(shù)的文章判沟,所以不再這里闡述過多的技術(shù)問題耿芹,主要是把開發(fā)的重要環(huán)節(jié)拿出來分享一下。
建立代碼倉庫
我使用的是https://coding.net 的Git倉庫挪哄,覺得還不錯吧秕,不用Github主要是因為在國內(nèi)它慢。我是偏向工具流迹炼,而不是命令流砸彬,我用的Git客戶端工具是SourceTree,免費好用斯入。
建立工程
工程文件組織結(jié)構(gòu)貼下
Pod用到的庫如下
pod 'Aspects'
pod 'AVOSCloud', '~> 3.10'
pod 'LeanCloudSocial', '1.0.0-beta3'
pod 'AFNetworking', '~> 3.0'
pod 'Bugly'
pod 'SDWebImage', '~> 4.0'
pod 'ReactiveCocoa', '~> 2.5'
pod 'DateTools'
pod 'NYXImagesKit'
pod 'M13OrderedDictionary'
pod 'Mantle'
pod 'MBProgressHUD'
pod 'CocoaLumberjack'
pod 'EAIntroView'
pod 'Realm'
pod 'FSCalendar'
pod 'TOCropViewController'
pod 'NYTPhotoViewer'
項目的后端是使用LeanCloud的服務(wù)砂碉,服務(wù)接口是運行在LeanCloud的云引擎上面的,我使用的是Node.js版本的云引擎刻两。我覺得云引擎是很好的一個東西增蹭,它讓我只關(guān)注我的業(yè)務(wù)實現(xiàn),我只需要寫一些業(yè)務(wù)代碼就行了闹伪。我本地存儲使用的是Realm沪铭,為啥選擇它壮池?因為對我來講,它是目前使用最簡單的杀怠。
技術(shù)難點
這個項目雖然功能簡單椰憋,但也是有些難點的。
iCloud備份
之前的iOS開發(fā)中并沒有使用過iCloud赔退,所以對iCloud基本不了解橙依。如何快速學(xué)習(xí)一個新的技能,這本身就是一個非常重要的技能硕旗。我是這么辦的窗骑,首先搜索iCloud相關(guān)的教程,有一個基本了解漆枚,然后搜索iCloud相關(guān)的坑(多年經(jīng)驗告訴我创译,誰家的技術(shù)都是充滿了坑的,知道他好墙基,更好知道他的丑)软族,最后查看官方詳細文檔,全面了解他的細節(jié)残制。
數(shù)據(jù)備份到iCloud和iCloud數(shù)據(jù)同步到應(yīng)用流程還是略微復(fù)雜的立砸,面對流程復(fù)雜的問題,請記得一定要作圖初茶。要知道其實人腦是非常不善于處理這些邏輯復(fù)雜的問題的颗祝,所以只能借助工具幫助我們完成復(fù)雜的問題。我使用的是 https://www.processon.com 的在線作圖恼布。在這里我特別提一下螺戳,客戶端大部分的流程都是和用戶操作混在一起的,所以我作圖使用的是一種事件驅(qū)動方式作圖折汞,只包含事件和處理兩種元素温峭,非常簡單易懂。下面是iCloud備份環(huán)節(jié)的一小塊流程圖截圖
方框的是處理字支,箭頭代表事件。其中看到的有布爾事件奸忽,用戶操作事件等堕伪。如果有更好的圖示方式,請告訴我栗菜。
導(dǎo)出PDF
iOS有接口生成PDF欠雌,這個是降低了導(dǎo)出PDF的難度。現(xiàn)在面臨的問題就是疙筹,如何按照板式靈活排版富俄。我采用的一個方法是禁炒,建立板塊和板式管理器。板塊負責(zé)他的內(nèi)容繪制霍比,決定他的字體幕袱,顏色,板塊內(nèi)布局悠瞬,板式管理器負責(zé)板塊布局们豌,文檔分頁等。這樣將日記數(shù)據(jù)傳入板式管理器浅妆,就可以自行生成PDF了望迎。
測試
很多程序員不喜歡測試,但是這個一個極壞的做法凌外。自己的程序必須全面自測辩尊,這可以加快整個項目的進度,也可以建立測試部對開發(fā)部的信心康辑,和個人威信摄欲。把功能做出來沒啥了不起的,關(guān)鍵指標是可用性和性能問題晾捏。
對于我的應(yīng)用蒿涎,一般采用如下測試流程
功能測試
自己使用幾天,使用所有的功能惦辛,你會發(fā)現(xiàn)各種各樣的問題劳秋,一邊修復(fù)一邊測試。特別有個現(xiàn)象要說明一下胖齐,bug最喜歡出現(xiàn)在上線第一天玻淑,如果不想經(jīng)常干緊急修復(fù)這樣自己都不好意思的事情,請認真對待測試呀伙。
性能測試
在用了幾天沒啥問題后补履,需要進入性能測試。粗略評估用戶每個月產(chǎn)生的數(shù)據(jù)15M左右剿另,對此我進行了如下測試
- 測試超過1G的數(shù)據(jù)箫锤,在不同的設(shè)備上面測試iCloud的寫入和讀取性能
- 單日1000條事件測試,查看UI顯示性能
- 多月多年數(shù)據(jù)測試雨女,測試數(shù)據(jù)讀取和顯示是否正常
小規(guī)模內(nèi)測
發(fā)布到fir.im谚攒,要求親朋好友使用,獲取反饋氛堕。這個很重要馏臭,通常有些bug不會在自己這里產(chǎn)生,但是一到別人手里讼稚,馬上就暴露括儒,這是因為每個人的使用習(xí)慣不一樣绕沈,因此少量用戶內(nèi)測也是比較有必要的。
發(fā)布
發(fā)布這里問題不大帮寻。主要是iTunes Connect的宣傳圖麻煩一點乍狐,不過我找到一個可以制作漂亮宣傳圖的網(wǎng)站 https://theapplaunchpad.com 。缺點是國外的網(wǎng)站付費都比較貴规婆,算了一下自己制作的成本后澜躺,咬咬牙購買了他們的Pro功能。
總結(jié)
應(yīng)用已經(jīng)在幾天前上線抒蚜。自己開發(fā)完整的一個app實屬不容易掘鄙,更不容易的現(xiàn)在app市場趨于飽和了。幾年前移動互聯(lián)網(wǎng)市場還是無限暢想的嗡髓,現(xiàn)在發(fā)現(xiàn)不是這樣的操漠,你會發(fā)現(xiàn)手機上面的軟件就是那么幾個,都是大廠壟斷了饿这,現(xiàn)在app store上面分類下面的app連新品展示的地方都不給了浊伙。那些想去做獨立開發(fā)者的同學(xué),如果你不能做出令蘋果眼前一亮的產(chǎn)品长捧,那么在app store上面是等于扔進了垃圾堆∠桑現(xiàn)在做app要解決的都是啥問題?推廣和運營串结!現(xiàn)在app用戶獲取成本高的直接讓你虧損哑子。為啥?因為現(xiàn)在用戶都是別人的肌割,如同人家老婆卧蜓,要去撩人家老婆,那可是很大代價的哦把敞。
最后大家覺得我的分享對你有用弥奸,希望體驗一下我的應(yīng)用,可以點擊去下載 簡日記奋早。