第一步,精讀 Stephen G. Kochan 的《Objective-C程序設(shè)計(jì)》:Objective-C語(yǔ)言基礎(chǔ),iOS開(kāi)發(fā)的第一技能就是精通Objective-C; 第二步,有了語(yǔ)言基礎(chǔ),精讀 David Mark 的《精通iOS開(kāi)發(fā)》:通過(guò)各種單獨(dú)的項(xiàng)目,熟悉iOS SDK,XCode開(kāi)發(fā)環(huán)境,明白MVC、委托等設(shè)計(jì)模式,通讀完后,你就對(duì)iOS SDK有了比較全面的認(rèn)識(shí),各種框架和組件有了一定的認(rèn)識(shí); 選擇性閱讀了Matt Neubury 的《iOS程序設(shè)計(jì)》:本書(shū)是iOS最系統(tǒng)的教程,對(duì)iOS框架的底層有比較詳細(xì)的介紹,深刻了我對(duì)iOS的理解。如果你是一名不僅僅想使用iOS SDK開(kāi)發(fā),還想理解底層是怎么運(yùn)行實(shí)現(xiàn)的,那就閱讀它。如果沒(méi)看David Mark的《精通iOS開(kāi)發(fā)》直接閱讀這本教程會(huì)非常的吃力和枯燥無(wú)味,所以我建議在學(xué)習(xí)的過(guò)程中,把它作為資料庫(kù)來(lái)查詢(xún),遇到想深入學(xué)習(xí)的某一方面,就選擇性閱讀本書(shū)的一些章節(jié); 有了上面的一些知識(shí),研究一些github上的優(yōu)秀的項(xiàng)目或者從cocoaChina上找些感興趣的代碼推薦內(nèi)容并且閱讀源碼,最好還可以在自己的DIY項(xiàng)目中使用上它們。還可以閱讀Bear Cahill 的《iOS in Practice》:通過(guò)9個(gè)上架的應(yīng)用,加深對(duì)iOS SDK的認(rèn)識(shí)和理解; 到這時(shí)候,就會(huì)遇到瓶頸,希望更上一層樓。我自己的做法是通過(guò)看公開(kāi)課或者中國(guó)上的開(kāi)發(fā)視頻,不是讓你重新學(xué)習(xí),因?yàn)樯磉厸](méi)人帶,所以這么做讓你看到別人是怎么編碼,別人的編程思路是什么,并且能將你前段時(shí)間學(xué)習(xí)的內(nèi)容進(jìn)一步鞏固。 接下來(lái)當(dāng)然是iOS進(jìn)階了??梢蚤_(kāi)始閱讀David Mark的另一本暢銷(xiāo)書(shū)《iOS6開(kāi)發(fā)進(jìn)階與實(shí)戰(zhàn)》,主要深入講解了Core data,map Kit,Game Kit,iCloud,iOS安全等。 在第5和第6步的過(guò)程中,可以一點(diǎn)一點(diǎn)閱讀Matt Galloway 的《Effective Objective-C 2.0》:介紹52個(gè)編寫(xiě)高質(zhì)量IOS與OS X代碼的方法; 與此同時(shí),要學(xué)會(huì)使用下面一些中國(guó)站和工具,學(xué)會(huì)使用這些中國(guó)站和工具,才能是你的開(kāi)發(fā)之路可持續(xù)發(fā)展
創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),貴州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:貴州等地區(qū)。貴州做網(wǎng)站價(jià)格咨詢(xún):13518219792
[img]最近網(wǎng)絡(luò)上流行的一句話“沒(méi)有躺贏的命,就站起來(lái)奔跑”
馬上要快到30歲的年紀(jì)了,我居然還想著改行到前端開(kāi)發(fā),這也是源于最初的的執(zhí)念。2014年,最開(kāi)始的想法是做前端開(kāi)發(fā),由于種種原因,沒(méi)有去做前端開(kāi)發(fā)而選擇了iOS開(kāi)發(fā)。
多年后,覺(jué)得,做iOS開(kāi)發(fā)不是自己最喜歡的行業(yè),于是,又開(kāi)始啟程前端開(kāi)發(fā)的計(jì)劃。
也許,這是對(duì)的選擇,也許是錯(cuò)誤的選擇,但是,最終都需要為自己的選擇而買(mǎi)單。
所以,我就開(kāi)始了我的iOS轉(zhuǎn)前端的漫長(zhǎng)之路
接下來(lái),我會(huì)記錄每一段學(xué)習(xí)的心得和感觸,以及所學(xué)的知識(shí)進(jìn)行一個(gè)分享~
分階段的進(jìn)行學(xué)習(xí):1、看視頻(零掌握,系統(tǒng)的學(xué)習(xí)和了解),2、看書(shū)(對(duì)編程有了一定的掌握,作為補(bǔ)充和提高),3、看博客帖子(取長(zhǎng)補(bǔ)短)。
依次學(xué)習(xí)和掌握:Objective-C語(yǔ)言基礎(chǔ),iOS交互開(kāi)發(fā),iOS高級(jí)進(jìn)階,前端技術(shù)(HTML,CSS,javascript),PHP與MySQL,項(xiàng)目實(shí)戰(zhàn)等。
有一定的自學(xué)能力和自控能力,有一套完整的教程資料,熟練使用stackoverflower,segmentfault等站點(diǎn)解決技術(shù)性的問(wèn)題,自學(xué)起來(lái)難度不會(huì)太大。反之,報(bào)個(gè)班系統(tǒng)的學(xué)習(xí)開(kāi)發(fā)所需的專(zhuān)業(yè)技術(shù)。
近期項(xiàng)目中有個(gè)需求就是要實(shí)現(xiàn)類(lèi)似微信或者支付寶的收款時(shí)的語(yǔ)音播報(bào)功能,于是筆者就開(kāi)始了漫長(zhǎng)的踩坑之路。
剛開(kāi)始討論實(shí)現(xiàn)方案時(shí),安卓的小伙伴說(shuō)可以使用WebSocket + 訊飛語(yǔ)音在線合成實(shí)現(xiàn)。于是最初的幾天筆者自己也一直在這條路上走了很久,基本功能都已經(jīng)實(shí)現(xiàn)了,項(xiàng)目在前臺(tái)的時(shí)候,基本沒(méi)問(wèn)題。但是項(xiàng)目一進(jìn)入后臺(tái)大概半分鐘的時(shí)間,就無(wú)法播報(bào)了。原因是iOS項(xiàng)目如果不做任何處理的話,在進(jìn)入后臺(tái)大概30s之后,程序就會(huì)進(jìn)入類(lèi)似休眠的狀態(tài),然后就不會(huì)再進(jìn)行任何操作了
跟安卓的同事討論之后,發(fā)現(xiàn)安卓有方法可以讓程序一直在后臺(tái)處于活躍狀態(tài),于是筆者也開(kāi)始找尋保持項(xiàng)目后臺(tái)運(yùn)行的方法,大概有兩種
在這里我們并沒(méi)有發(fā)現(xiàn),程序在后臺(tái)收到推送時(shí),作相應(yīng)處理的方法,哪到底能不能收到推送后就進(jìn)行處理呢?
iOS 10 之后 iOS推出了Notification Service Extension,我們可以在收到推送之后,通過(guò)這個(gè)Extension 我們可以有三十秒的時(shí)間來(lái)對(duì)這個(gè)推送進(jìn)行處理
完成之后長(zhǎng)這樣
然后我們配置一下NotificationService
然后我們看下NotificationService.swift文件
在完成上述操作之后,再次收到推送的話,就會(huì)走NotificationService的邏輯了,可以打斷點(diǎn)或者Log測(cè)試一下
需要注意的是 在推送的內(nèi)容中 必須配置mutable-content字段,結(jié)構(gòu)大致如下
做完上邊的操作之后,我們可以知道什么時(shí)候去播報(bào)語(yǔ)音了,但是語(yǔ)音又要怎么去播報(bào)呢?
筆者這邊也是試過(guò)幾個(gè)方案,下邊一一說(shuō)來(lái)
筆者剛開(kāi)始使用訊飛發(fā)現(xiàn)不行,然后又測(cè)試了系統(tǒng)自帶的AVSpeech,發(fā)現(xiàn)也不好用,查資料才知道,蘋(píng)果在近期的版本中,停用的在NotificationService中播放語(yǔ)音的功能,之前的某個(gè)版本應(yīng)該可以這么操作。好吧,此方案Pass
既然不讓我播,那我存起來(lái)總可以了吧,測(cè)試發(fā)現(xiàn)訊飛在線生成是可以的,也可以存到本地,但。。。是,UNMutableNotificationContent的sound好像只支持提前添加到項(xiàng)目中的文件,并不支持立即生成之后存到本地,然后再設(shè)置的功能。。。
筆者在項(xiàng)目中預(yù)先生成的文件如下(語(yǔ)音包通過(guò)百度語(yǔ)音開(kāi)放平臺(tái)在線生成 百度語(yǔ)音在下生成(拉到中間就有了) )
比如說(shuō)我要播放“支付寶到賬100元”,我就會(huì)發(fā)放多個(gè)通知,依次播放wx-pre,1,bai,yuan這幾個(gè)語(yǔ)音,連貫起來(lái)就能達(dá)到要求
筆者能力有限,暫時(shí)想到的方法就是這個(gè),有好的方法可以多多分享,溝通