先占坑位楞慈,再填坑旺嬉,歡迎大家補(bǔ)充。
1本冲、TencentOpenAPI的坑
表現(xiàn):啟動就crash
原因:由于很久沒有更新該sdk了准脂,用的版本是2.3.1。后來想著去官網(wǎng)下個(gè)最新的吧檬洞,不過最新的是3.0的版本狸膏,替換原來的sdk后,有些接口和頭文件定義的問題添怔,直接編譯不過湾戳。為了少踩點(diǎn)坑,還是選擇了其他項(xiàng)目已經(jīng)在用的2.8版本澎灸。該版本可以直接替換院塞,在iOS10上順利解決。
2性昭、私有權(quán)限申請的坑
表現(xiàn):Xcode8編譯的版本拦止,首次打開相機(jī)、相冊糜颠、獲取通訊錄汹族、錄視頻...統(tǒng)統(tǒng)crash
原因:由于iOS10對Security and Privacy Enhancements 安全和保密性增強(qiáng),在申請很多私有權(quán)限時(shí),都需要添加描述其兴,不添加會crash顶瞒。但使用之前的Xcode編譯的話,仍然會采用系統(tǒng)的權(quán)限通知框元旬。
填這個(gè)坑榴徐,只需在Info.list里配置上請求權(quán)限的描述信息就可以了。
我在Info.list添加了程序中用到的權(quán)限匀归,就解決了坑资。
這里列出相關(guān)的key, 可以要小心,絕對不能寫錯(cuò)哦穆端!
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
NSVoIPUsageDescription
3袱贮、statusBar不見了
表現(xiàn):statusBar會消失掉或顏色沒有改變
原因:找到原因是,程序經(jīng)常會在全屏瀏覽的時(shí)候隱藏掉statusBar体啰,相信很多應(yīng)用都用到這個(gè)功能攒巍,當(dāng)退出是使用以下方法還原:
[[UIApplication sharedApplication] setStatusBarStyle:_previousStatusBarStyle animated:animated];
不過該方法使用壽命就到iOS9了嗽仪,iOS10徹底不能用了。要想以后iOS10也能保持statusBar的正確顯示柒莉,就按下圖接口備注的來改吧闻坚。估計(jì)改動會比較多,那又有什么辦法呢兢孝,蘋果爸爸就給你指定好規(guī)則了鲤氢,你就老實(shí)的跟著走吧。
4西潘、Xcode8打包,ios7安裝后調(diào)用[UIImage imageNamed:]奔潰
表現(xiàn):堆棧信息如下:
原因:使用xcassets管理圖片哨颂,拿掉xcassets后正常喷市。這個(gè)是針對iOS7的,別的同事遇到威恼,因?yàn)槲視簳r(shí)沒有iOS7的設(shè)備品姓,沒有驗(yàn)證,大家遇到了可以參考箫措。
5腹备、從App中直接跳轉(zhuǎn)到特定的設(shè)置項(xiàng)失效或?qū)徍瞬贿^
表現(xiàn):之前使用prefs:root=xxxx,"xxxx"可以是Photos,WIFI等這些具體的設(shè)置項(xiàng)斤蔓,在升級到iOS10后發(fā)現(xiàn)失效植酥。
原因:其實(shí)這種設(shè)置方式并沒有在任何蘋果的官方文檔里出現(xiàn),只是之前很多人這么使用了弦牡,而且順利提交AppStore了友驮。之前就有應(yīng)用使用過多這種方式,被拒了驾锰,蘋果給出的理由是使用了私有接口卸留。在iOS10時(shí)發(fā)現(xiàn),我們之前也使用了這種方式跳轉(zhuǎn)到相冊權(quán)限設(shè)置椭豫,原本通過的功能失效了耻瑟,可能在iOS10中出于安全性的考慮,這些系統(tǒng)的scheme被修改或禁用了赏酥。
解決方法:iOS8以后可以跳轉(zhuǎn)到系統(tǒng)的“設(shè)置”頁面喳整。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
不過iOS10這個(gè)openURL的API也有所調(diào)整,應(yīng)使用下面的方法
- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options completionHandler:(void (^ __nullable)(BOOL success))completion NS_AVAILABLE_IOS(10_0) NS_EXTENSION_UNAVAILABLE_IOS("");
6今缚、字體的變化算柳,導(dǎo)致中文顯示寬度變大,英文沒有影響姓言。
表現(xiàn):固定寬度的按鈕瞬项,變...了蔗蹋,顯示不全。
原因:iOS10的字體變化了
解決方法:一個(gè)個(gè)修改控件的吧囱淋,還沒想到好方法猪杭。
7、xib里的控件取frame妥衣,取不到真實(shí)的值皂吮。
表現(xiàn):取xib中的控件獲取它的size時(shí),一般返回值是600*600税手,拿不到真實(shí)的值蜂筹。
原因:暫時(shí)沒找到,有人知道的話請留言芦倒。
解決辦法:之前的xib艺挪,沒有在新的Xcode打開的,一般不會有問題兵扬。有問題的麻裳,直接寫了固定的尺寸。
8器钟、iOS10以后津坑,對新安裝的應(yīng)用會彈出是否允許使用無線網(wǎng)絡(luò)和蜂窩網(wǎng)絡(luò)的權(quán)限申請。
表現(xiàn)1:有的沒有彈出傲霸,在設(shè)置里的無線網(wǎng)絡(luò)或蜂窩網(wǎng)絡(luò)下疆瑰,使用了該權(quán)限的應(yīng)用里也找不到,應(yīng)用沒法連接網(wǎng)絡(luò)昙啄。
解決方法:目前的說法是蘋果的bug乃摹,需要在設(shè)置里的其他正常使用的網(wǎng)絡(luò)的應(yīng)用 下關(guān)閉再開啟,等于重啟下蘋果自身的權(quán)限設(shè)置跟衅,會修復(fù)不彈權(quán)限說明的bug孵睬。
表現(xiàn)2:權(quán)限的框彈出,但用戶無意識下關(guān)閉伶跷,應(yīng)用也沒法連接網(wǎng)絡(luò)掰读。
解決方法:想辦法告訴用戶去設(shè)置里打開使用無線網(wǎng)絡(luò)和蜂窩網(wǎng)絡(luò)的權(quán)限,我們應(yīng)用里是加了一個(gè)說明頁叭莫。