我决定开发自己的第一款iPhone应用
為更好地掌握編程,我決定開發自己的第一款iPhone應用。
我是一名設計師和前端開發者,曾用服務器端編程語言(PHP)寫過一些程序,不但會使用Ruby、PHP等語言,還從更高層次了解了這些語言。但遺憾的是,我從未寫過有實質功能的代碼。
這次我設定的目標很簡單:開發自己的iPhone應用,并至少吸引一位陌生人買下這款應用。
概念
我熱愛騎行,四季不斷。然而不論在寒冷的冬天還是潮熱的夏天,溫度對戶外運動體驗的影響都是最大的。
開發溫度應用的靈感便從此而來。不必做市場調查就知道天氣應用多如牛毛,而且基本都有溫度顯示——但我想做的是專門的溫度應用。
盡可能簡化應用總是沒錯的,產品開發者有責任將設計最優化,而不是投機取巧將一大堆沒用的東西放在設置頁面。我在開發應用時,就盡量避免了這種情況。
這款應用會根據地理位置設置溫度單位。比如紐約顯示的是華氏度,12小時制,美制單位;而阿姆斯特丹是攝氏度,24小時制及公制單位。雖然兩種模式不一定適用于所有地區,但至少適用于大部分地區。
設計
在產品設計上我始終秉持刪繁就簡的原則,而且發現效果不錯。
圖注:色溫標溫度是應用中最重要的因素。充分研究了不同的天氣地圖和溫度色彩后,我創建了一系列元素用以反映“當前體感溫度”。
由于溫度單位由地理位置決定,所以就沒必要顯示出來了。華氏度和攝氏度之間的差別不小,很容易就分清,所以我直接在數字外加一個圓圈來代替溫度單位。
圖注:主視圖和天氣預報頁面天氣圖標在哪里?
該應用專為體感溫度而設計,添加天氣圖標無異于畫蛇添足。為保證最佳用戶體驗,我用文字來顯示當前的天氣情況。
天氣預報
很難對天氣做出長期預測,通常三天就夠了。應用中沒有多余的空間顯示天氣預報,于是最理想的天氣預報頁面就用色彩元素來體現差別。
天氣預報頁面顯示何時達到最低和最高溫度。測試世界各地的溫度顯示時,我發現地區所處溫度帶不同,最低和最高溫度的時間也不同。
動畫
考慮到如今大多數設計都是扁平化,簡約化的,用動畫來添點活力不失為一個好方法,但過猶不及的道理要銘記在心,否則不但引發審美疲勞,還會拖慢應用運行的速度。舉個例子,微軟的Windows 7加快了動畫播放的速度,操作系統也變得更干凈利落了。關于避免“審美疲勞”尚未得出最好的解決方案,但避免重復是金規玉律。
開發
沒有用原生代碼來編寫Feels Like主要是因為:
- 作為前端開發者,JavaScript是我最熟悉的語言;
- 現在我還在學習Meteor(天氣)應用開發,具體來說即全棧式JavaScript平臺——這意味著必須學習一種語言來編寫完整的應用;
- 我只想開發出屬于自己的iPhone應用,若再費盡周折去學Objective-C,那么開發就不好玩了,而且我能力有限,難以做好。
應用是如何運行的?
- 首先Feels Like會詢問地理位置,即經緯度;
- 確定經緯度之后,向Forecast.io發送一個API請求,Forecast.io再返回地理位置的天氣數據。數據只有一小部分用得到。掌握豐富的數據總會讓人忍不住添加更多功能,但為實現最精簡的目標,我硬是打消了這個念頭;
- 應用獲取地理位置后,并不會立刻確定具體的城市或市區,所以我用谷歌的“反向地理編碼(reverse geocoding)”來解決這個問題。如果是大城市的話,地理位置可以詳細到具體的市區。
很簡單吧?但這個構想花了好久才定型。學習編程是不斷收獲的過程,每完成一個應用,就會變得更熟練,編寫復雜應用的速度也越來越快。在開發Feels Like的過程中,我了解了很多API的相關知識,也因此見識了不同類型的應用。有一種API適用于所有類型的應用,是的,所有類型。
原生代碼
原生代碼一定是最佳選擇嗎?這還得看情況:
- Cordova提供一組設備相關的API,讓移動應用以JavaScript訪問原生的設備功能。在這種情況下,使用原生代碼當然最好,但漏洞較多,應用性能會縮水,依賴性也會增強;
- 但Cordova沒了原生代碼也完全可以。原生代碼并不適用于所有類型的應用,但迄今為止我沒發現什么大問題。如果出了問題找不到原因,但肯定只能怪我自己,而原生代碼不一定能讓應用變得更優越;
- 使用與否還是得看情況。我不敢自詡專家,而且挑選合適的開發工具需要考慮太多因素。如果與我的專業背景不同,那么可以考慮使用Cordova (也就是PhoneGap)來開發應用。
定價
有免費、廣告、應用內購買和付費四種定價選擇。
免費
要實踐“免費”的企業家思維(說好聽一點兒)的話,萬一應用大受歡迎呢?應用大受歡迎,我當然會得意地不得了,但成本就成了問題,因為每調用10,000個Forecast.io天氣API就要花1美元。雖然聽起來也不貴,但是一旦下載人數太多,成本就大幅上升。目前我的product spiderweb.里只有一款產品,并無其他產品或服務,所以也沒有額外收入。
花費這么多時間和精力在一款免費游戲上,心理落差在所難免——何況它設計得這么精致,絲毫不遜色于宣傳的那樣。
廣告
應用設計是最大的亮點和價值所在,所以靠廣告賺錢并非明智之選。大部分廣告只會讓點進去看的人買一大堆沒用的東西,我不喜歡——再說了,誰會喜歡呢?
應用內購買
說句實話,“應用內購買”是當今開發者唯一的賺錢之道;App Store里那么多免費應用,付費應用必會備受冷落,用戶甚至連簡介都不屑一顧,而且大部分人會選擇排行榜位置靠前的應用。總而言之,開發者賺錢不容易啊。
如果將應用的天氣預報功能設成應用內購買選項,雖無法覆蓋API成本,但足以抵消免費安裝的成本。而且這樣一來,上文提及的“免費”的企業家思維有什么意義呢?
要打造良好的應用內購買體驗是頗費工夫的事情,甚至比開發應用本身還要費神。我的目標只是讓自己的第一個iPhone應用上線,有一個下載用戶就夠了,所以我決定采用“付費”模式。以后再弄一個“免費”+“應用內購買”版本吧。
付費
“付費”是經典定價模式。我選擇了0.99美元的基礎定價——不到一美元,大部分人落在沙發縫里都不會費勁去拾的金額,也不至于將太多人拒之門外,所以應該是明智的定價。
付費模式在App Store里并不是最理想的,但希望這篇博文,還有一下在用戶的口口相傳能讓0.99美元看起來物有所值,吸引更多人來下載。
App Store
關于應用提交既有蘋果的官方指南,還有很多文章可供參考。以下是我的一些建議:
- 在App Store里找找相似的應用,看看簡介是什么樣的,亮點在哪里;
- App Annie搜索關鍵詞很方便,可以用來查看相似應用最常用的關鍵詞;
- 搜索清單上的應用標題只顯示25個字符,寸“符”寸金;
- 充分利用那五張截圖,前兩張可以顯示在搜索主頁里。剛開始我將截圖都設置為應用的主屏,后來一張替換成了天氣預報。
- 添加登錄頁(landing page)。總不能全指望Apple Store的“發現(discovery)”功能吧?
Export Compliance
由于天氣和谷歌API連接受加密限制,Feels Like選擇使用SSL。我本人在荷蘭,但全球的通用原則是:如果應用使用加密(SSL),則需要拿到美國的export許可。應用是否能在不同地區下載才最重要,而Apple Store的大本營是在美國。
等等!這一要求也有例外情況,難度就更大了。
Feels Like不會儲存或輸送任何個人數據,所以我想:如果沒有這些許可行不行呢?之所以這樣推斷是因為:Feels Like使用加密來支持其主要功能(即顯示天氣數據),運行時不會儲存或輸送任何敏感數據。
提交時,我聲明了這款應用使用了加密,但不屬于例外情況。不知道這合不合適。我已經提交了應用,還做了一次更新,都順利通過了。所以目前來看,這個方法挺管用。
結論
沒想到我用Cordova創建了一款并不那么新奇,而且采用了付費模式的應用——真不敢相信我自己!
Feels Like能在App Store里上線,這是我個人的一場勝利,而且我還寫了這第一篇博文。曾經的我渴求著這一切,但卻無暇真正實現它,現在終于等到了這一天。同樣讓我開心的是,上線之后不止一個人下載了這款應用(我可沒有攛掇親朋好友來下載)。
總結
以上是生活随笔為你收集整理的我决定开发自己的第一款iPhone应用的全部內容,希望文章能夠幫你解決所遇到的問題。