iOS 5系統(tǒng)升級經(jīng)驗(yàn)分享
系統(tǒng)升級應(yīng)對之策:穩(wěn)+快
并不是所有開發(fā)者都會對系統(tǒng)的升級充滿了期待和欣喜,尤其對于一些做外包的開發(fā)者來說,每次系統(tǒng)的升級都意味著很多不確定的因素,從不知名的角落里冒出來,冷不妨的跳出來給你一個(gè)“Supprise”(連這個(gè)單詞都有bug了……)。iOS的升級每次都會給各個(gè)應(yīng)用造成各種各樣的麻煩,或者造成原有的UI變動,導(dǎo)致用戶體驗(yàn)的變異。在CMDN的線下沙龍中,愛圖騰科技高級架構(gòu)師廉潔“獻(xiàn)身”說法,站在手機(jī)移動外包公司的角度,經(jīng)過大量實(shí)踐以及每次升級的經(jīng)驗(yàn),總結(jié)了一些相對較有條理的應(yīng)對方法:
愛圖騰科技高級架構(gòu)師廉潔
首先一定要關(guān)注最新資訊。多去Apple官方網(wǎng)站,像iOS 5的升級,在官網(wǎng)提前很久就已經(jīng)放出來對應(yīng)的文檔、新特性說明等。同時(shí)還有很多視頻資源,會演示新特性對開發(fā)或者設(shè)計(jì)造成那些影響。還有各種iOS開發(fā)相關(guān)的論壇,例如CocoaChina,CSDN社區(qū)等。
接下來就是對平臺的動作采取快速反映,第一時(shí)間提供一個(gè)版本的更新,這個(gè)非常重要,能給用戶非常好的體驗(yàn)。但是要記住一點(diǎn):一定要保證穩(wěn)定性。做iOS應(yīng)用就要有Apple的風(fēng)范,快速反映不代表為了快而趕工,應(yīng)用的穩(wěn)定性是用戶體驗(yàn)的前提。所以不要急著使用新特性,開發(fā)人員很容易陷入新特性帶來的亢奮中,但是實(shí)際上從整個(gè)產(chǎn)品的運(yùn)營來看,本著穩(wěn)定壓倒一切的原則,一定要慎重!
最后是覆蓋測試。測試是最有效的手段,能夠發(fā)現(xiàn)很多問題。全功能的覆蓋測試,需要在上線之前就能夠去維護(hù)一套完整的測試方案。這樣每次就照著這個(gè)方案走一遍,就會很方便的發(fā)現(xiàn)問題。另外一點(diǎn),要覆蓋全部的設(shè)備和全部的兼容系統(tǒng)。雖然理論上不同設(shè)備之間只要系統(tǒng)的版本一樣,應(yīng)該沒有問題,但是實(shí)際總是和理論有所出入的。
每次系統(tǒng)升級后,Apple會列出所有他認(rèn)為重要的東西,開發(fā)者可以比照著然后一條一條的查漏補(bǔ)缺。同時(shí)也應(yīng)該關(guān)注一些其他網(wǎng)站、論壇上,很可能會得到啟發(fā)和預(yù)警。之前說的其實(shí)是一個(gè)比較通用的一個(gè)大的方面的一個(gè)概括。
iOS新特性介紹
iCloud Storage對于開發(fā)者的意義:所有iOS設(shè)備上的文件都能夠通過Apple提供的iCloud Storage上傳。iCloud Storage上線之后,對本地存儲會有一些強(qiáng)制性的要求。什么樣的數(shù)據(jù)可以上傳?首先是用戶生成的數(shù)據(jù),或者是不可被重新生成的可以上傳,剩下的部分要放到Cache里。按照Apple的Guideline的說法,這類數(shù)據(jù)是自動的會被備份iCloud Storage上,就要求開發(fā)者盡量的為用戶節(jié)省空間和流量。
慎用ARC,一把雙刃劍:ARC是將之前手動Release的東西在編譯期間自動化,和手動編譯是一樣的。據(jù)Apple的宣傳來講,ARC在Release、Return管理的效率上,有很大性能的提升。ARC極大的降低了iOS開發(fā)門檻,卻也帶來了一些負(fù)面效果。它和Java的垃圾回收機(jī)制不同,是攢到一定的程度再去釋放。由此必然導(dǎo)致一些垃圾回收不及時(shí),或者在釋放的時(shí)候?qū)π阅茉斐捎绊憽?/p>
廉潔認(rèn)為目前上線的大部分應(yīng)用內(nèi)存管理比較完善,因此不會對產(chǎn)品有明顯影響。ARC對從C或者C++過來的東西識別上有一些困難,他對這些的應(yīng)用有一些特殊的聲明。如果應(yīng)用里用了很多第三方的類庫全部轉(zhuǎn)成ARC,是需要一些勇氣的。轉(zhuǎn)完之后可能大家心里都沒底,會不會造成什么問題,還需要詳細(xì)、全面的測試。所以新員工謹(jǐn)慎用,維護(hù)期的線上的應(yīng)用盡量用,新應(yīng)用倒是可以用
Newsstand介紹:Newsstand只是給新聞?lì)惖膽?yīng)用提供了一個(gè)聚集的場所。它的好處包括:可以提供個(gè)性化的封面,每期一個(gè)封面,大小可以自己設(shè)定。Apple提供了幾種標(biāo)準(zhǔn),包括雜志的樣式或者新聞的樣式。另外雜志類的應(yīng)用經(jīng)常要求大量的數(shù)據(jù)的下載,Newsstand提供了在后臺下載和推送機(jī)制,避免用戶在打開應(yīng)用之后,應(yīng)用開始下載雜志內(nèi)容,導(dǎo)致可能出現(xiàn)的人身傷害事故。
一些其他的新特性:Storyboards對開發(fā)者來講很有吸引力,同樣對已經(jīng)在線上的應(yīng)用慎用。而對Coreimage來說,Apple提供了大量的圖象處理的API,真正做起來,門檻有點(diǎn)高,好多圖象的算法學(xué)識很難。像Location Simulation目的在于解決開發(fā)者在開發(fā)基于地理位置應(yīng)用時(shí)候?qū)嵉販y試的困難。但是其實(shí)不是特別的靈活,僅能夠一定程度上提供這種模擬。Instumnets,提供了大量性能分析工具。OpenGL ES為測試和debug都提供了更好的環(huán)境。
iOS升級的各種問題以及解決之道
iOS 4中Category這個(gè)方式非常流行,而在iOS 5中就不用了。UINavigationBar實(shí)際上提供了一個(gè)更好的修改背景的方法。為了iOS 4和iOS 5的兼容,首先保留Category,這個(gè)在iOS 4里面沒有問題;如果在iOS 5上出現(xiàn)問題,可以去提供系統(tǒng)修改的背景的方。第二個(gè)可能比較重要的一個(gè)變化。
還有一個(gè)就是比較頭疼的玩意兒了。在iOS 5的鍵盤高度不是固定的,例如微博類的應(yīng)用,輸入法會直接把輸入框蓋住。Apple還提供了幾個(gè)事件,第一通過去注冊一些事件,在他的Userinfo里面會直接看到。包括取一個(gè)Frame或者什么東西,取到的東西是一個(gè)velue的一個(gè)值,他不是一個(gè)值,他會封裝成ISVELUE。基本上通過這幾個(gè),就能夠處理現(xiàn)有的這些鍵盤上的一些變化。
iOS 5中建議放棄UDID,以后可能會被取消掉。Apple提供了一些替代的方法,比如可以創(chuàng)建自己的UDID,之后可以存到這個(gè)NEWUSERDEFAULT里面。這樣做雖然不是一個(gè)唯一的UDID,但基本上不影響統(tǒng)計(jì)分析使用的。
在ReleaseNote里面寫的很清楚,隱藏一個(gè)header現(xiàn)在直接返回沒有用。UIPICKERVIEW,就是在第一次選擇的時(shí)候,會調(diào)用一些程序里面主動設(shè)計(jì)他選擇的一個(gè)方法。現(xiàn)在iOS 5中不會觸發(fā),需要大家做一些針對性的處理。在iOS 5里面大家需要主動的設(shè)計(jì)papovercontroller。
移動開發(fā)中的技術(shù)路線選擇
上帝給了我們選擇的權(quán)力,我們卻用它來糾結(jié)。短短幾年時(shí)間內(nèi),移動讓整個(gè)IT圈改革了。以前PC上WIntel一統(tǒng)江湖的局面,在移動領(lǐng)域顯得那么格格不入。仿佛大航海時(shí)代的開始,很多人夢想著沖向偉大航路搜索傳說中的One Piece,如此多的選擇,究竟要搭上哪一艘船?身為最先下水的成員之一,上海改變科技CTO李亮就他自身經(jīng)歷,對整個(gè)移動行業(yè)進(jìn)行了分析,并從整體出發(fā)分享了開發(fā)過程中需要注意到的事項(xiàng)。
上海改變科技CTO李亮
李亮認(rèn)為,現(xiàn)在的時(shí)代可以稱之為一個(gè)新的移動時(shí)代,是移動互聯(lián)網(wǎng)產(chǎn)業(yè)從剛開始成長到成熟的階段,目前應(yīng)該說邁入了成熟的階段。。涌現(xiàn)出了很多廠商,廠商又出現(xiàn)了非常多的設(shè)備。Apple很簡單,一個(gè)iPhone,一個(gè)iPad。而在Android的世界里,就有無數(shù)不同的廠商,產(chǎn)生出了不同尺寸的,甚至性能有高有第的設(shè)備。這是非常多樣性的情況,系統(tǒng)也是一樣。雖然我們今天經(jīng)過一段時(shí)間的發(fā)展,可以說我們現(xiàn)在這個(gè)時(shí)間段已經(jīng)是移動互聯(lián)網(wǎng)這個(gè)產(chǎn)業(yè)從剛開始成長到成熟的階段。最新數(shù)據(jù)顯示,Android的份額達(dá)到58.67%,iPhone14%多,BlackBerry 9.2%,bada是三星的占3.33%。
對于一個(gè)平臺,開發(fā)者看中他能夠提供什么樣的能力?首先是盈利問題,其次是用戶量、生態(tài)環(huán)境包,最后是應(yīng)用開發(fā)的方便性。Apple的產(chǎn)品一致性是最好的,整個(gè)系統(tǒng)的坐標(biāo)體系不是整數(shù),是浮點(diǎn)數(shù)。所以他可以維持整個(gè)設(shè)備的屏幕坐標(biāo)的大小是一樣的,同時(shí)iOS的模擬器也做的很棒,這些對開發(fā)者來說非常有利。而Android一來是開源的,二來有Google撐腰。Android的開放性,引來了非常大的廠商,三星、摩托羅拉等,然后包括一些別的二線廠商,甚至現(xiàn)在又非常非常多的山寨廠商也開始專項(xiàng)Android的系統(tǒng)。大量的廠商生產(chǎn)的大量的設(shè)備,自然而然就造成了不同規(guī)格的設(shè)備,這個(gè)對開發(fā)者其實(shí)是一個(gè)困擾。
Windows Phone 7最大的后臺就是MicroSoft,不過李亮認(rèn)為WP7不可能超過iOS或者Android的份額。況且Windows Phone 7作為一個(gè)開發(fā)平臺,就目前來說,再開發(fā)接口上面還是缺一點(diǎn)東西。最近RIM有一個(gè)比較大的動作,目前主推的QNX是一個(gè)全功能的實(shí)時(shí)Unix系統(tǒng)。三星自家的bada,有三星的強(qiáng)大銷售鏈,只要三星愿意做是不會死掉的。webOS的用戶體驗(yàn)堪比iOS,但是現(xiàn)在前途未卜。
開發(fā)者對操作系統(tǒng)的考量主要集中在這幾個(gè)方面:操作系統(tǒng)的能力(計(jì)算能力)、有沒有多任務(wù)、是不是能夠后臺運(yùn)行、操作系統(tǒng)的限制等、分辨率和鍵盤、云服務(wù)、平臺本身的市場比例、支付方式等。技術(shù)方面需要注意的有代碼重用、是否需要跨平臺。
李亮認(rèn)為,任何東西無論多先進(jìn)多好,一統(tǒng)江湖的可能性是沒有可能的。跨平臺思潮有著悠久的歷史,但是到最后,都沒有成為主流。而用戶體驗(yàn)這個(gè)東西,不能夠喧賓奪主,開發(fā)者要想明白一個(gè)道理,我們的目的就是讓用戶更方便的使用這個(gè)程序,而不是說為了用戶體驗(yàn)而用戶體驗(yàn)。最后說到測試,需要對于不同的機(jī)器,在不同的網(wǎng)絡(luò)環(huán)境下,不同的運(yùn)營環(huán)境下做測試。還有一些就是在極端情況下測試也必須做得到。
相關(guān)文章