準(zhǔn)確的說,是使用objective-c語言開發(fā)iOS應(yīng)用
創(chuàng)新互聯(lián)是一家專業(yè)提供當(dāng)雄企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為當(dāng)雄眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
第一階段: RayWenderlich網(wǎng)站中的 The iOS Apprentice教程 (難度指數(shù):※)
以上有幾個(gè)答案提到了這個(gè)網(wǎng)站,但看什么教程沒有細(xì)說,我在這里簡(jiǎn)單說說。The iOS Apprentice的教程針對(duì)完全沒有編程經(jīng)驗(yàn)的人設(shè)計(jì)。這個(gè)教程是外國(guó)人寫的并且有免費(fèi)試讀版,感興趣的人要看看。里面說的東西都非常非?;?,里面一個(gè)共講解了4個(gè)不同類型app,強(qiáng)烈建議一步一步按照上面所寫的步驟敲一遍代碼。其中你會(huì)遇到很多復(fù)雜的語句和長(zhǎng)的可怕的函數(shù),你不用感到恐慌,照著敲,知道它干嘛用完全OK了,隨著你編程時(shí)間以及經(jīng)驗(yàn)的增加,你都會(huì)懂得。
附鏈接:
注:這個(gè)教程是英文原版,并且收費(fèi),只免費(fèi)提供一個(gè)app的教程。如果看完了這個(gè)免費(fèi)的教程覺得還挺想繼續(xù)學(xué)的請(qǐng)參考 @王寒 老師的翻譯教程(只有前3個(gè)app教程,第4個(gè)教程剛出,國(guó)內(nèi)應(yīng)該還沒有人翻譯,如果想看只能付費(fèi))。PS:(現(xiàn)在開發(fā)iOS應(yīng)用基本都是用Objective-C,至于剛出來的Swift現(xiàn)階段暫時(shí)不推薦學(xué)習(xí),如果想了解王寒老師也做了swift版本的The iOS Apprentice教程翻譯,自己去找)
附上王寒老師教程下載地址:
第二階段:培訓(xùn)班的網(wǎng)絡(luò)課程及入門書籍
經(jīng)過第一個(gè)階段你應(yīng)該已經(jīng)大致掌握IOS開發(fā)流程,能編寫一個(gè)非常簡(jiǎn)單的應(yīng)用了。這時(shí)候相信你的熱情應(yīng)該會(huì)很高漲,但接下來的學(xué)習(xí)可能會(huì)很枯燥,做好準(zhǔn)備。網(wǎng)絡(luò)課程的話推薦李明杰的課程,不推薦其他的。(他目前在廣州創(chuàng)業(yè)建立自己的培訓(xùn)品牌,沒有自制力看網(wǎng)絡(luò)課程的請(qǐng)去找他。杰哥開源了一些非常優(yōu)秀的框架如:MJExtension )
建議首先要惡補(bǔ)基礎(chǔ)知識(shí)。經(jīng)過第一個(gè)階段你可能覺得你懂不少了,但是只是表面,尤其是沒學(xué)過編程的應(yīng)該好好學(xué)習(xí)一下視頻前面的課程,主要看看語法。等你看惡心了看煩了就去看視頻里UI部分,這里相對(duì)于來說比較輕松,一定要把視頻里寫的語句打一遍,相信這樣你理解會(huì)更深刻。里面說的不清楚的地方上網(wǎng)可以百度,可以查書(如果你有書的話)。
Q:視頻教程是用來做什么的?
A:光有實(shí)踐沒有知識(shí)是寫不好程序的,第一階段基本都是實(shí)踐,第二部分則是用來查缺補(bǔ)漏。 之所以推薦網(wǎng)絡(luò)課程是因?yàn)橹v解的比較系統(tǒng),各種入門知識(shí)都會(huì)涉及。因?yàn)閕OS所涉及內(nèi)容龐 大單看幾本書還是涉及不全的。
Q:上不上培訓(xùn)班?
A:個(gè)人意見是不推薦去,自學(xué)足夠了?,F(xiàn)在學(xué)習(xí)iOS的環(huán)境比前幾年好太多了,光憑借網(wǎng)上的資料是 完全可以的學(xué)得很好的,如果你連這點(diǎn)學(xué)習(xí)能力還沒有我也不相信你將來能成為一個(gè)很優(yōu)秀的工程師。而且你會(huì)發(fā)現(xiàn)在社會(huì)上一些互聯(lián)網(wǎng)公司是拒絕接收培訓(xùn)班出來的人。
推薦入門書籍:
tips:以下所有書籍有英文版看英文版,有最新版看最新版
1、《Objective-C 程序設(shè)計(jì)》(難度指數(shù):※※)
2、《iOS 7應(yīng)用開發(fā)入門經(jīng)典》(難度指數(shù):※※)
3、《iOS開發(fā)指南-0基礎(chǔ)到AppStore上架》(難度指數(shù):※※※)
4、《iOS編程實(shí)戰(zhàn)》(難度指數(shù):※※※※)
這里面講解的很清楚,后面甚至有簡(jiǎn)單的項(xiàng)目可以練手,這對(duì)于看視頻教程看惡心的同學(xué)是個(gè)福音~你可以先做項(xiàng)目遇到不懂的再看視頻。
這里我想多說一句,買iOS開發(fā)的輔導(dǎo)書千萬別買過時(shí)太久的,我看以上有答案還推薦iOS4系列叢書呢...拜托現(xiàn)在都什么年代了,現(xiàn)在iOS8教程都要出來了,你iOS6的教程都過時(shí)好久了更別提iOS4了...對(duì)于新出的swift語言好多人難以選擇不知道該學(xué)OC好還是Swift好。我個(gè)人建議現(xiàn)在學(xué)OC,一門新語言的誕生需要經(jīng)過時(shí)間的考驗(yàn)與洗禮。等你學(xué)好了OC以后再看也不遲。
第三階段及以后
到這個(gè)階段你應(yīng)該擁有了充分的自學(xué)能力,已經(jīng)達(dá)到了入門水平。
這時(shí)候以下網(wǎng)址將成為你的家常便飯:
Github,StackOverFlow
如果你編程遇到困難,在StackOverFlow上面應(yīng)該都能找到合適的解答。(前提是你英文不要太差)。Github上好多開源代碼足夠豐富你的眼界。如果你想成為一個(gè)iOS開發(fā)者的話這上面兩個(gè)網(wǎng)站是你經(jīng)常以及必須會(huì)用到的。
確定了要學(xué)ios,首先必須做好一下準(zhǔn)備工作:一臺(tái)Mac Pro或其他蘋果電腦
從Apple Store上面下載需要的Xcode版本并安裝 這肯定是需要花費(fèi)一筆錢的
如果有語言基礎(chǔ)的,可以看視頻自學(xué),現(xiàn)在網(wǎng)上有很多ios的視頻,自學(xué)能力不夠的話可以考慮找個(gè)老師教一下
1.什么是藍(lán)牙4.0,藍(lán)牙其它標(biāo)準(zhǔn)又是什么?
詳細(xì)描述:低功耗藍(lán)牙(Low Energy; LE),又視為Bluetooth Smart或藍(lán)牙核心規(guī)格4.0版本。其特點(diǎn)具備節(jié)能、便于采用,是藍(lán)牙技術(shù)專為物聯(lián)網(wǎng)(Internet of Things; IOT)開發(fā)的技術(shù)版本。所以它最主要的特點(diǎn)是低功耗,普及率高?,F(xiàn)在所說的藍(lán)牙設(shè)備,大部分都是在說4.0設(shè)備,ble也特指4.0設(shè)備。 在4.0之前重要的版本有 2.1版本-基本速率/增強(qiáng)數(shù)據(jù)率(BR/EDR) 和 3.0 高速藍(lán)牙 版本,這些統(tǒng)稱為經(jīng)典藍(lán)牙。4.0還有4.1和4.2的小版本,其中4.2版本對(duì)傳輸速率做了進(jìn)一步他提升,提高了2.5倍,蘋果從iphone6開始使用4.2,最新的藍(lán)牙標(biāo)準(zhǔn)為藍(lán)牙5.0,其中最大的特點(diǎn)連接范圍擴(kuò)大了4倍,速度又提高了2倍,無連接數(shù)據(jù)廣播能力提高了8倍,增加了藍(lán)牙組網(wǎng)的能力。
2.藍(lán)牙開發(fā)必須知道的概念。
2.1.1 central和peripheral:
藍(lán)牙應(yīng)用開發(fā)中,存在兩種角色,分別是central和peripheral(p?’r?f?r?l) ,中文就是中心和外設(shè)。比如手機(jī)去連接智能設(shè)備,那手機(jī)就是central,智能設(shè)備就是peripheral。大多時(shí)候都是central去連接peripheral的場(chǎng)景。
2.1.2 廣播和連接:
peripheral會(huì)發(fā)出廣播,central掃描到廣播后,可以對(duì)設(shè)備進(jìn)行連接,發(fā)出connect請(qǐng)求,peripheral接收到請(qǐng)求后,同意連接后,central和peripheral就建立了連接。
2.1.3?連接后的操作:
write,read,notify,indecate, response or not …
indecate和notify的區(qū)別就在于,indecate是一定會(huì)收到數(shù)據(jù),notify有可能會(huì)丟失數(shù)據(jù)(不會(huì)有central收到數(shù)據(jù)的回應(yīng)),write也分為response和noresponse,如果是response,那么write成功回收到peripheral的確認(rèn)消息,但是會(huì)降低寫入的速率。
2.1.4 協(xié)議:
每個(gè)具體的智能設(shè)備,都約定了一組數(shù)據(jù)格式,這個(gè)就是數(shù)據(jù)協(xié)議,例如手環(huán)中獲取到數(shù)據(jù)0X001023,其中第2位到第5位表示步數(shù),那么就2310就是步數(shù)的16進(jìn)制的數(shù)據(jù),轉(zhuǎn)換成10進(jìn)制就是8976步,需要注意的是,設(shè)備端都是小端模式,所以取4位時(shí)候,高字節(jié)在前低字節(jié)在后。
3. iOS藍(lán)牙應(yīng)用的一般開發(fā)流程。
4. 藍(lán)牙的數(shù)據(jù)交互。
write,read,notify,indecate, response or not … 都是容易理解的,indecate和notify對(duì)應(yīng)的是長(zhǎng)連接,建立indecate后,peripheral可以隨時(shí)往central發(fā)送數(shù)據(jù)。
indecate和notify的區(qū)別就在于,indecate是一定會(huì)收到數(shù)據(jù),notify有可能會(huì)丟失數(shù)據(jù)(不會(huì)有central收到數(shù)據(jù)的回應(yīng)),write也分為response和noresponse,如果是response,那么write成功回收到peripheral的確認(rèn)消息,但是會(huì)降低寫入的速率。
對(duì)于一個(gè)charateristic,他的讀寫訂閱的權(quán)限是peripheral決定的,熟悉可以被同時(shí)設(shè)置,一般會(huì)根據(jù)外設(shè)的功能來決定。
5.藍(lán)牙ota DFU。
藍(lán)牙ota,DFU(Device Firmware Update)指的是藍(lán)牙設(shè)備的固件升級(jí),其實(shí)是一整套流程,不同的藍(lán)牙芯片,ota的流程有不同之處,我這里用ti的芯片舉例。步驟為:切系統(tǒng)(bootloader mode),重啟,傳輸數(shù)據(jù),驗(yàn)證數(shù)據(jù),切系統(tǒng),重啟,完成。
其中數(shù)據(jù)傳輸也會(huì)分成很多節(jié)去發(fā)送,沒法送一段數(shù)據(jù),做一次數(shù)據(jù)校驗(yàn)。
6.ota存在的問題。
每個(gè)智能設(shè)備的速率,功耗,存儲(chǔ)都會(huì)有很多限制,導(dǎo)致很多設(shè)備會(huì)自己去實(shí)現(xiàn)ota的功能,自定義流程和數(shù)據(jù)傳輸方式,導(dǎo)致許多設(shè)備都是有自己私有的ota模式和協(xié)議,所以在做開發(fā)的時(shí)候,要仔細(xì)閱讀設(shè)備協(xié)議中對(duì)ota的描述。
7.如何做自動(dòng)重連。
只需要在設(shè)備斷開連接的委托方法中,重新調(diào)用gatt.connet或者是centralManager.connet方法就可以了,無論當(dāng)時(shí)設(shè)備是否有點(diǎn),是否在周圍,當(dāng)設(shè)備再次開會(huì)或者連接到可連接范圍內(nèi),都會(huì)自動(dòng)被連上。
8.連接失敗處理。
分兩個(gè)平臺(tái)來說,iOS端也有連接失敗的委托,但是好像幾乎不會(huì)發(fā)生這種情況,而對(duì)于同款設(shè)備,android常常會(huì)出現(xiàn)連接失敗的情況,status != BluetoothGatt.GATT_SUCCESS,android端開發(fā)請(qǐng)不要把連接失敗和斷開連接放在一塊處理,因?yàn)閿嚅_連接可以直接嘗試重新連接,而連接失敗后嘗試重新連接,需要加一些延時(shí),并且需要gatt.close,清空一下狀態(tài),否則會(huì)把gatt阻塞導(dǎo)致手機(jī)不重啟藍(lán)牙就再也無法連接任何設(shè)備的情況 。
9.后臺(tái)運(yùn)行。
iOS后來運(yùn)行,需要設(shè)備中info.Plist權(quán)限,key:Required background modes ,value: bluetooth-central(手機(jī)作為central) , bluetooth-peripheral。
10.同時(shí)連接多個(gè)設(shè)備。
使用同一個(gè)CBCentralManager,通過進(jìn)入委托的peripheral的identifier區(qū)分不同的設(shè)備,進(jìn)行不同的操作和處理。
11.掃描廣播包。
所有外設(shè),只有在發(fā)出廣播包的情況下,才能被central發(fā)現(xiàn),絕大多數(shù)情況下,外設(shè)被連接后就不會(huì)發(fā)出廣播(也有例外),很多人遇到無法找到設(shè)備的問題,大多屬于這種情況。
12.提高藍(lán)牙連接速度。
無論是iOS,還是android,都可以通過已綁定的設(shè)備,在不開啟掃描的情況下進(jìn)行快速連接,iOS需要的參數(shù)是peripheral的identifier,android需要mac地址。但android和iOS還是有一些區(qū)別的,比如iOS不能拿到已綁定的設(shè)備list,但是可以通過UUID去拿到peripheral的實(shí)例。而android可以拿到已綁定的設(shè)備list。android綁定過程需要手動(dòng)調(diào)用createBond的方法,而iOS在連接成功一次后會(huì)自動(dòng)綁定。 android在處理createBond時(shí),常常會(huì)應(yīng)為不同手機(jī)平臺(tái),不同設(shè)備,會(huì)產(chǎn)生兼容性的問題,這點(diǎn)需要注意。
13.定向掃描。
在掃描時(shí)候可以傳入serviceUUID,這樣可以掃描到特定條件的設(shè)備,提高掃描的速度,排除干擾。
14.如何獲取mac地址。
而iOS出于蘋果的安全策略問題,無法直接獲得mac地址,只能得到一個(gè)mac地址換算出來的identifier。
Apple 對(duì) HEVC 標(biāo)準(zhǔn)的態(tài)度就像過山車。Apple 曾非?;钴S地參與 HEVC 的開發(fā)。這一標(biāo)準(zhǔn)最終在 2013 年 1 月完成,Apple 也在 2014 年 11 月宣布支持 HEVC 標(biāo)準(zhǔn)。但是幾個(gè)月后 Apple 又基于一項(xiàng) Apple 不能接受的版稅條款撤回了這一決定。
時(shí)間快進(jìn)到 2017 年 6 月 5 日,Apple 在 WWDC 大會(huì)上宣布:
將在 iOS11 支持 HEVC,首個(gè)支持 HEVC 的應(yīng)用是自帶的相機(jī) app。
Mac OS High Sierra 將支持 HEVC
Apple TV 將支持 Amazon。我們可以假定這意味著對(duì)超高清的支持,暗示了將支持 HEVC。
WWDC 2017上,Apple已經(jīng)宣布全面支持HEVC。在iOS11中釋出了HEVC的硬件編解碼接口,具體看圖:
對(duì)應(yīng)到移動(dòng)端,iPhone 7、iPhone 7 Plus 支持8bpp硬編;iPhone 6s、iPhone 6s Plus及以上支持硬解;iPhone 5s及以上支持軟解。
關(guān)于HEVC硬解的實(shí)現(xiàn):已經(jīng)在iOS11 beta3上完成了265的硬解,直接參照264的就可以,主要關(guān)注下HEVC格式的語法轉(zhuǎn)換。另外性能也需要持續(xù)關(guān)注,目前測(cè)試硬解水平還比較瓶頸。
實(shí)際操作中,查閱了一些資料,顯示iOS端的硬件解碼、編碼,軟件解碼還是有限制的。我本人在集成一些視頻框架的時(shí)候,由于客戶提供部分視頻的是h265/HEVC的編碼,導(dǎo)致部分視頻在播放時(shí)有聲音沒畫面。但是在iPhone 7 iOS11.2系統(tǒng)上一切播放正常。在iPhone 4s\5s\6sp等設(shè)備上無畫面有聲音,系統(tǒng)是10.3.3(包括10.3.3)以下。安卓播放正常。
蘋果在h265/HEVC視頻編碼解碼上是稍微有些遲疑和落后的。
推薦讀者看看這篇文章: 《基于iOS11的HEVC(H.265)硬編碼/硬解碼功能開發(fā)指南》
最近在xcode根據(jù)高德ios開發(fā)指南進(jìn)行開發(fā),在做定位的時(shí)候模擬器中高德地圖是空白的,我開始以為
定位是不成功的。
在官網(wǎng)看到兩個(gè)方法:didFailToLocateUserWithError(定位失敗會(huì)調(diào)用的)
didUpdateUserLocation(定位成功會(huì)調(diào)用的)
我覆蓋兩個(gè)方法,發(fā)現(xiàn)沒有錯(cuò)誤信息打印,而didUpdateUserLocation中打印用戶的位置是有值的,把
經(jīng)度和緯度拿到網(wǎng)上一查,你會(huì)發(fā)現(xiàn)這是一個(gè)國(guó)外的某個(gè)地方;所以我找了一個(gè)國(guó)內(nèi)的坐標(biāo),附值給了
userLocation,發(fā)現(xiàn)地圖顯示成功了。
該框架框架包含視頻相關(guān)的APIs和音頻相關(guān)的APIs。
針對(duì)音頻及視頻,其主要提供的功能可以歸納為4各方面:
1)、Capture
音頻、視頻、圖像媒體的捕捉,并輸出我們可用的數(shù)據(jù)對(duì)象的過程。
2)、Edit
針對(duì)現(xiàn)有的媒體片段(音頻片段或視頻片段),重新創(chuàng)建Assets,重新加工、生成新的媒體片段。例如,Reading, Writing, Reencoding Assets, Thumbnails
3)、Export
提供導(dǎo)出音視頻的API。例如,修改文件格式、消減時(shí)長(zhǎng)等。
4)、Presentation
例如,播放、音視頻的預(yù)覽
設(shè)備的輸入源主要包括:麥克風(fēng)(Microphone),攝像頭(Camera),屏幕等
輸入源一般包括:AVCaptureVideoPreviewLayer,AVCaptureAudioPreviewOutput,文件、Raw Buffer等。
從一個(gè)設(shè)備,例如照相機(jī)或者麥克風(fēng)管理捕獲,組合對(duì)象來表示輸入和輸出,并使用 AVCaptureSession 的實(shí)例來協(xié)調(diào)它們之間的數(shù)據(jù)流。
一個(gè)簡(jiǎn)單的會(huì)話協(xié)調(diào):
AVCapture Session作為整個(gè)Capture的核心,不斷從輸入源獲取數(shù)據(jù),然后分發(fā)給各個(gè)輸出源,從而完成一次簡(jiǎn)單的會(huì)話。
AVCaptureSession參數(shù)配置
開始會(huì)話
結(jié)束會(huì)話
然而,很多情況下,需要考慮多個(gè)輸入源是如何被表示以及如何連接到輸出。
輸入源有自己的硬件參數(shù)可以設(shè)置流控,輸出源作為一個(gè)被動(dòng)接受對(duì)象,它并沒有太多流控設(shè)置,所以蘋果巧妙的引入AVCaptureConnections。每個(gè)Output與Session建立連接后,都會(huì)分配一個(gè)默認(rèn)的AVCpatureConnection。
AVCaptureConnections就是Session和Output中間的控制節(jié)點(diǎn)。很多實(shí)時(shí)數(shù)據(jù),也都是從connection得到的。
輸入設(shè)備的配置
輸出的配置
接收輸出資源
1)、視頻
2)、照片輸出
本文題目:ios開發(fā)指南管蕾,iOS開發(fā)指南
URL標(biāo)題:http://jinyejixie.com/article0/dssspio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、、網(wǎng)站排名、網(wǎng)站制作、響應(yīng)式網(wǎng)站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)