作者 | Castie!?
來源 | https://coderzsq.github.io
日常扯淡
首先申明,這絕對不是標題黨,看完全文你一定也能夠自行的寫出一個資源搜索App,其實這個App,本來是想在App Store賣錢的,畢竟感覺需求量還是很大,雖然知道有可能涉及版權的問題,但本想只做一個搜索功能,讓用戶自行下載應該也能打打擦邊球蒙混過關吧,誰知現在蘋果審核 5.2.3,直接搬出了法律神器,讓我不敢逾越雷池一步,經過內心的掙扎,還是決定不鋌而走險,開源以回報社會。
其實這個App,并不是特別復雜,說實話也沒有什么技術含量,iOS端的代碼是在2天閑暇時間內寫完的,有一定經驗的開發者估計也不會差很多,核心在于對數據的爬取,這里我是用Python寫的爬蟲,其實爬蟲并不復雜,應該說是簡單至極,我整個服務端加上爬蟲也就區區300行不到的代碼,可見難易程度,所以本文,并不會教你如何進行實現貼代碼,而是會在產品的思路上進行探討,如果你有看過我之前一篇?iOS 開發者該認真思考的「三個問題」[1]就應該了解技術并不是很重要,重要的是對人性的把握。
技術選型
由于這是一個全棧的項目,這可是真全棧,從產品,設計,運營,客戶端,服務端,數據端,運維都有所涉及,所以不能片面的看待問題,我們需要一個系統的視角,如何能夠讓這款產品受到用戶的喜愛,(的確有很多的朋友想要這款軟件,但是... 蘋果爸爸不允許呀...),回到正題,所以我們需要一個最小可用的APP,什么是最小可用? 就是實現最少的功能,讓功能產生閉環,并能夠提供價值。
所以以這個為出發點,設計了最簡單的交互邏輯,即點擊可得和搜索可得,減少用戶交互的邏輯,讓用戶直接達到爽感。所以,為了完成這個目標,我們需要一些開發工具,我這里用的很簡單,Xcode,Photoshop,Sublime Test,即可,對,我并沒有使用產品原型設計工具,因為這種東西本來就是給開發看的,然而當你自己成為開發者后,就等于你有了上帝之手,直接就可以進行實現,有邏輯設計不合理之處也能夠自行修正。
前端,我就不多介紹了,因為本想以盈利為目的,所以選擇了iOS端的App Store,然而... 后端我選用的是Python的Flask,非常適合開發小型App,代碼少易控制,簡單易用。
獲取數據
如何獲取數據,這里我們使用的是豆瓣的數據,如何爬取豆瓣,網上有大把大把的教程,可以自行查閱,而鏈接的地址呢,你可以自行網上查找可用的免費資源分享網站進行爬蟲,雖然有些會有反爬機制,但你可以反反爬呀,就像逆向一樣,別人可以反調試,你可以反反調試呀,網絡安全,一點都不安全... 這里我就選在了,種子貓,磁力搜,飄花,訊播,被窩進行了爬蟲,使用豆瓣爬到的數據進行其他網站的爬蟲即可。?
構建服務
之前有說,我選用的是Flask框架,所以只需要用裝飾器就可以立竿見影的寫接口,具體業務邏輯可以自行閱讀源碼,只要你有一點點開發經驗就可以看懂的,這里的難點... 也不是難點,就是如何部署服務器,這就是有關運維的操作了,我這里使用的是Nginx + gunicorn搭建的服務器,具體操作也可以看下教程,具體就是端口映射和負載均衡,記得如果是阿里云的話,需要開啟端口的訪問權限。
產品設計
有了數據,接下來就該進行產品設計了,對于設計方面,其實作者并沒有什么設計的經驗,所以直接參考了Apple原生應用的設計語言,然后用最少的邏輯達到想要的效果,真可謂是極簡主義了哈哈哈,當然設計的時候也有一些小細節需要注意,比如iOS13的暗黑模式的切換,還有modal的時候iOS13和之前默認的效果不同都需要進行兼容,還有的就是,顏色方面不要用純黑和純白,這樣看起來的效果會比較的好。icon設計的話,可以使用阿里開源的icon庫[2],這不是給阿里打廣告,也不需要我這種菜雞來打廣告hhh。
有關運營
說到這里就要貼出App Store 審核指南[3],如果你需要自己開發一個App,建議你通讀此文,我就是踩到了這個坑... 被5。2。3給拒之門外了,
你需要了解ASO,這里推薦給你 七麥數據 這個網站。可以了解一些搜索指數,什么樣的關鍵詞是用戶會經常搜索的,這樣可以極大的曝光你的App。
最后需要做的就是收集用戶反饋以及建立社群,但我并沒有走到這一步... 有機會再分享吧。
效果展示
接下來只需要進行iOS端的開發了,我這里就簡單的使用了OC + StoryBoard的傳統開發模式,等SwiftUI成熟了之后再切換成Swift開發吧,如果想要學習Swift 可以關注我的另一個倉庫。
開源分享
iOS 項目相關倉庫[4]
Native 技術練習倉庫[5]
Data 技術練習倉庫[6]
本文所述代碼 已用紅框所示。
寫在最后
有了這次的經驗,下次開發會效率快的多,有想法就去實現,而不是寫那種沒有用的Demo,期待作者下次優秀的作品吧!
參考
[1]https://coderzsq.github.io/2019/01/iOS-%E5%BC%80%E5%8F%91%E8%80%85%E8%AF%A5%E8%AE%A4%E7%9C%9F%E6%80%9D%E8%80%83%E7%9A%84-%E4%B8%89%E4%B8%AA%E9%97%AE%E9%A2%98/?
[2]https://www.iconfont.cn/?
[3]https://developer.apple.com/cn/app-store/review/guidelines/#intellectual-property?
[4]https://github.com/coderZsq/coderZsq.project.ios?
[5]https://github.com/coderZsq/coderZsq.practice.native?
[6]https://github.com/coderZsq/coderZsq.practice.data