溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

第一個(gè)IOS APP總結(jié)

發(fā)布時(shí)間:2020-06-27 11:34:58 來(lái)源:網(wǎng)絡(luò) 閱讀:1608 作者:bluehook 欄目:移動(dòng)開發(fā)

一直想做幾個(gè)IOS的游戲或者應(yīng)用,一拖再拖,在IOS APP領(lǐng)域我是新人,所以保持敬畏,從小做起最重要。我特別懶,周圍的人也特別懶,所有東西都想自動(dòng)化,每天只打幾行命令是最好。
第一個(gè)IOS APP總結(jié)

做什么倒是沒(méi)考慮多久,我自己都有大把的需求,首先是我喜歡聽(tīng)有聲書,最近又鬧書荒,喜馬拉雅,懶人聽(tīng)書,企鵝聽(tīng)書這些上面的免費(fèi)精品都聽(tīng)得差不多了,更新又慢,又不想看文字,干脆做一個(gè)直接讀文本的APP好了,主要功能也理了一下,首先是要更新即時(shí),其次是要能連續(xù)逐章播放,還要能斷點(diǎn)續(xù)播,書簽歷史也不能少,就這么幾個(gè)功能,只做核心功能,不搞UI,最終經(jīng)過(guò)兩個(gè)多星期的開發(fā)調(diào)試除錯(cuò)第一個(gè)版本完成了。就算五個(gè)星期吧,因?yàn)閍pple開發(fā)者年費(fèi)需要雙幣信用卡,開頭說(shuō)了我第一次開發(fā)IOS APP只有重新申請(qǐng),坑來(lái)了,我有單幣的,全幣的信用卡,就是沒(méi)有雙幣的,所以又申請(qǐng)了一張,快遞需要幾天時(shí)間,我做項(xiàng)目時(shí)間計(jì)劃的原則是預(yù)估時(shí)間乘以2,這個(gè)參數(shù)救過(guò)我好幾次命。

我沒(méi)有做什么文檔,直接第一步就是開發(fā)核心功能,文本語(yǔ)音合成,俗稱TTS吧,我最先試用了百度的語(yǔ)音合成,其次是訊飛,最后是IOS自帶的,效果是訊飛最好,百度也很好而且免費(fèi),最差的是IOS自帶的語(yǔ)音合成,最終經(jīng)過(guò)激烈的思想斗爭(zhēng),我選擇了IOS自帶的語(yǔ)音合成,主要原因是懶,不想看第三方文檔。隨著語(yǔ)音合成接口的調(diào)試正常整個(gè)APP的核心功能完成,信心有所提升,剩下的無(wú)非就是些服務(wù)端爬蟲,數(shù)據(jù)庫(kù)查詢,APP端界面業(yè)務(wù)邏輯等等等等等等。。。

下來(lái)我考慮的是數(shù)據(jù)源,我只是一個(gè)數(shù)據(jù)的搬運(yùn)工,爬蟲必不可少,選定了2個(gè)小說(shuō)站,第一個(gè)站有三千多本小說(shuō),一百七十萬(wàn)篇正文,服務(wù)器是阿里云香港,系統(tǒng)是centos+nginx,居然和我自己做×××的一樣。。。看來(lái)我低估了阿里云服務(wù)器的實(shí)力。第二個(gè)站有接近四千本小說(shuō),七十幾萬(wàn)篇正文,剛開始我也不明白為什么一個(gè)站小說(shuō)多,正文卻少這么多,后來(lái)發(fā)現(xiàn)是新書多,這臺(tái)服務(wù)器在洛杉磯,系統(tǒng)是windows+iis7.5,居然和我上一臺(tái)×××一樣,看來(lái)我有必要重新考慮一下×××機(jī)房。。。用python scrapy簡(jiǎn)單測(cè)試了幾個(gè)小時(shí)阿里云的服務(wù)器連續(xù)抓取會(huì)503或者404,洛杉磯的服務(wù)器慢一點(diǎn)但是特別穩(wěn)定全部200,和我想的完全相反,最后阿里云的服務(wù)器居然沒(méi)有響應(yīng)了(過(guò)了半天才恢復(fù));最后我選擇了穩(wěn)定的洛杉磯,這臺(tái)服務(wù)器有簡(jiǎn)單的防盜鏈,修改一下User-Agent和Referer就可以了,計(jì)算了一下速度,每天可以抓七萬(wàn)到八萬(wàn)篇正文,差不多要十一,二天才能全部抓完,好在APP開發(fā)只需要測(cè)試數(shù)據(jù)就可以,讓爬蟲繼續(xù)抓吧。這里有個(gè)插曲,最終我沒(méi)用scrapy,自己用asyncio+aiohttp+BeautifulSoup(lxml)寫了一個(gè)專用爬蟲,因?yàn)橹恍枰≌f(shuō)基本信息,章節(jié)列表和正文,沒(méi)費(fèi)多少時(shí)間。

數(shù)據(jù)庫(kù)用的mongodb,由于asyncio并發(fā)很快直接在協(xié)程里面執(zhí)行阻塞調(diào)用整個(gè)系統(tǒng)幾乎僵死,這里犯了錯(cuò)誤,解決方案是專門開啟一個(gè)消費(fèi)者線程來(lái)處理保存數(shù)據(jù)庫(kù)的操作,asyncio抓到數(shù)據(jù)就扔到線程數(shù)據(jù)隊(duì)列。由于網(wǎng)絡(luò)數(shù)據(jù)獲取時(shí)間肯定比本地保存數(shù)據(jù)到硬盤時(shí)間長(zhǎng),所以用消費(fèi)者模式來(lái)處理阻塞操作是合理的,實(shí)際上也是如此。

服務(wù)器端API我設(shè)計(jì)了四個(gè):查詢小說(shuō)分類(比如玄幻,科幻),查詢小說(shuō)分類列表(比如圣墟,凡人修真?zhèn)鳎?,查詢單部小說(shuō)章節(jié)列表(比如第一章。。。,第二章。。。)和查詢正文

考慮了最終服務(wù)端生產(chǎn)環(huán)境,我最想用的是tcp socket,安全性,性能都很好,不好的是對(duì)于這個(gè)應(yīng)用沒(méi)有明文顯然調(diào)試起來(lái)不夠方便,django都大了,后來(lái)干脆直接aiohttp,增加了一個(gè)連接認(rèn)證API,就是生成一串?dāng)?shù)字在服務(wù)端和客戶端進(jìn)行對(duì)稱加密,比明文好一點(diǎn),算法自己寫的用了乘法和加減法,懂的自然懂,但是如果來(lái)抓我的庫(kù)總要費(fèi)點(diǎn)時(shí)間,何必呢?還不如去抓其他沒(méi)加密的,安全性剛剛好。

APP端是同步開發(fā)的,大部分的坑都是swift不熟悉又沒(méi)有oc背景造成的,好在我直接跳過(guò)了swift1,2,3,直接用的4,對(duì)于不兼容的語(yǔ)法問(wèn)題我躲過(guò)了,最后花了兩個(gè)小時(shí)做了各種大小的圖標(biāo)和一個(gè)launch界面背景,過(guò)程就是這樣。

信用卡沒(méi)到,我就不能提交,因?yàn)闆](méi)有提交的經(jīng)驗(yàn),所以遇坑是必然的,但是我預(yù)留了二個(gè)星期的時(shí)間應(yīng)該足夠,畢竟是個(gè)如此簡(jiǎn)單的免費(fèi)應(yīng)用,上帝保佑順利通過(guò)。

還是上傳幾張模擬器的預(yù)覽圖吧,希望有緣再見(jiàn)!
第一個(gè)IOS APP總結(jié)
第一個(gè)IOS APP總結(jié)
第一個(gè)IOS APP總結(jié)
第一個(gè)IOS APP總結(jié)
第一個(gè)IOS APP總結(jié)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI