準(zhǔn)備工作
更新Xcode 8beta
在Mac上下載最新的Xcode 8 beta版
安裝iOS 10 beta描述文件
在你要升級(jí)的iOS 10的設(shè)備上,打開(kāi)Safari亡笑,打開(kāi)網(wǎng)址https://beta.apple.com/profile下載iOS 10的描述文件。
安裝完描述文件之后余舶,進(jìn)入“設(shè)置”>“通用”>“軟件更新”來(lái)安裝iOS beta版咏闪。
iOS 10適配
項(xiàng)目轉(zhuǎn)化
上面的準(zhǔn)備工作做好了,接下來(lái)開(kāi)始做iOS 10的適配工作变过。
用Xcode8 beta打開(kāi)我們的項(xiàng)目,會(huì)提示轉(zhuǎn)化涝涤,選擇Convert
如果你的項(xiàng)目里有swift媚狰,會(huì)彈出swift 3版本的轉(zhuǎn)化,點(diǎn)next
選擇我們的target繼續(xù)點(diǎn)next
點(diǎn)save保存更改阔拳。
清理緩存
關(guān)閉并退出Xcode崭孤,清理Xcode的緩存,這些緩存若不清理糊肠,會(huì)有很多報(bào)錯(cuò).
打終端辨宠,輸入指令:open ~/./Library/Developer/Xcode/DerivedData
,刪除DerivedData下的所有文件。
iOS 10權(quán)限適配
清理完緩存后货裹,重新用Xcode 8 beta打開(kāi)項(xiàng)目嗤形,首先做權(quán)限適配
iOS 10調(diào)用相機(jī),訪問(wèn)通訊錄弧圆,訪問(wèn)相冊(cè)等都要在plist中加入權(quán)限訪問(wèn)描述赋兵,不然iOS 9上來(lái)的項(xiàng)目涉及到這些權(quán)限的地方就會(huì)直接crash掉,報(bào)錯(cuò)信息如下:
This app has crashed because it attempted to access privacy-sensitive data without a usage description.
打開(kāi)info.plist添加權(quán)限許可描述鍵值對(duì):
常見(jiàn)的權(quán)限許可設(shè)置如下:
相機(jī)權(quán)限: Privacy - Camera Usage Description 是否允許此App使用你的相機(jī)搔预?
相冊(cè)權(quán)限: Privacy - Photo Library Usage Description 是否允許此App訪問(wèn)你的媒體資料庫(kù)霹期?
通訊錄權(quán)限: Privacy - Contacts Usage Description 是否允許此App訪問(wèn)你的通訊錄?
藍(lán)牙權(quán)限:Privacy - Bluetooth Peripheral Usage Description 是否許允此App使用藍(lán)牙拯田?
定位權(quán)限:Privacy - Location When In Use Usage Description 是否允許此App使用定位服務(wù)历造?
語(yǔ)音轉(zhuǎn)文字權(quán)限:Privacy - Speech Recognition Usage Description 是否允許此App使用語(yǔ)音識(shí)別?
日歷權(quán)限:Privacy - Calendars Usage Description 是否允許此App使用日歷?
其它iOS 10適配相關(guān)的問(wèn)題
1.<b>objc_retainedObject()
要替換成(__bridge NSData *)()
</b>
2.如果你的項(xiàng)目使用了Masonry吭产,那么很多缺斤少兩的約束在iOS 9上還可以正常顯示侣监,但iOS 10是絕對(duì)不行的,不是crash掉就是顯示不正確臣淤。應(yīng)該全面檢查項(xiàng)目的各個(gè)界面的約束是否存在問(wèn)題橄霉,并一一修復(fù)。
3.如果你的項(xiàng)目使用了YYText荒典,在iOS 10上存在很多顯示問(wèn)題酪劫,請(qǐng)更新到最新版。
如果你之前使用了nonHighlightTapAction或nonHighlightLongPressAction寺董,請(qǐng)更換成textTapAction及textLongPressAction.
4.之前使用了YYText覆糟,在Label的算高上,iOS 10需要增大額外的高度遮咖,才能達(dá)到iOS 9的顯示全滩字。
5.iOS 10提供新的Speech.framework,Speech Recognition語(yǔ)音轉(zhuǎn)文字
SFSpeechRecognizer *recognizer=[[SFSpeechRecognizer alloc] initWithLocale:[NSLocale currentLocale]];
NSURL *audioSourceURL;//音頻文件的url御吞,如AudioRecord
SFSpeechURLRecognitionRequest *requset=[[SFSpeechURLRecognitionRequest alloc] initWithURL:audioSourceURL];
[recognizer recognitionTaskWithRequest:requset resultHandler:^(SFSpeechRecognitionResult *result, NSError *error) {
//語(yǔ)音轉(zhuǎn)文字的結(jié)果
NSString *resultString=result.bestTranscription.formattedString;
}];
使用語(yǔ)音識(shí)別麦箍,也需要加上權(quán)限許可描述,上面有提到過(guò)陶珠。
6.Xcode 8會(huì)打印一堆亂七八糟的log挟裂,解決辦法是,去edit scheme里揍诽,設(shè)置OS_ACTIVITY_MODE : disable
持續(xù)更新中...請(qǐng)關(guān)注诀蓉!