總結(jié)適配IOS10開發(fā)需要注意的問題
就在前不久,蘋果剛剛對(duì)外正式發(fā)布了新的操作系統(tǒng)IOS10。悲劇的是就在發(fā)布新系統(tǒng)的當(dāng)天公司就急著要發(fā)布一個(gè)新版本,問題來了。。。誰知道APP在IOS10上會(huì)遇到什么鬼情況!最怕的就是閃退。。。于是在上線前做了很多關(guān)于IOS10的適配工作,其中也踩了很多坑。所以在這里記錄總結(jié)一下。
1、自動(dòng)管理證書
首先要說的就是Xcode8。打開Xcode8最明顯的就是Targets-->General下的自動(dòng)管理證書模塊。以前對(duì)于新手來說無論是開發(fā)還是打包都必須要被蘋果的開發(fā)簽名系統(tǒng)虐上幾遍才能真正明白它的原理和規(guī)程?,F(xiàn)在貌似直接勾上“Automatically manage signing”,Xcode8一切都幫我們做好了。不得不說確實(shí)很方便!
不過認(rèn)真想想,這個(gè)“Automatically manage signing”按鈕無非就是自動(dòng)幫我們?cè)陂_發(fā)者中心創(chuàng)建appid、cetificaiton、profire provision等等證書文件并且自動(dòng)關(guān)聯(lián)上。但是如果我們證書管理不規(guī)范,很有可能出現(xiàn)revoke證書的情況。這是一直以來很頭疼的事情。所以我還是推崇開發(fā)者自己手動(dòng)創(chuàng)建和管理證書。呵呵,這個(gè)自動(dòng)管理證書的按鈕我們選擇不勾上。
2、雜亂無章的日志輸出
Xcode8啟動(dòng)后一連串雜亂無章的日志輸出,第一反應(yīng)就是這是什么鬼!
在網(wǎng)上查了一下,原來這個(gè)日志的輸出是可以關(guān)閉的。關(guān)閉路徑:Edit Scheme-->Run-->Arguments-->Enviroment Variables ,添加一個(gè)配置選項(xiàng)就好了 “OS_ACTIVITY_MODE = Disable”。
3、推送增加 entitlements 文件簽名
Xcode8增加了一項(xiàng)很重要的功能:為推送增加了entitlements 文件簽名。所以,如果你的應(yīng)用是支持推送的,那一定要記得打開這個(gè)entitlements文件簽名的開關(guān)!否則APP在啟動(dòng)注冊(cè)推送服務(wù)的時(shí)候就報(bào)簽名錯(cuò)誤了,Push消息也就不可能接收的到。
下圖的開關(guān)記得打開!
另外,蘋果對(duì)推送的框架和API也做了重大的調(diào)整,需要開發(fā)者對(duì)IOS10+做相應(yīng)的適配,后面會(huì)詳細(xì)介紹。
4、系統(tǒng)權(quán)限設(shè)置
IOS10對(duì)系統(tǒng)權(quán)限的使用做了更加嚴(yán)格的控制。
APP想要使用系統(tǒng)的某個(gè)權(quán)限,必須要在項(xiàng)目設(shè)置info.plist文件中設(shè)置相應(yīng)的權(quán)限說明,否則在IOS10上會(huì)出現(xiàn)崩潰。
事實(shí)上,如果你的應(yīng)用使用了系統(tǒng)某個(gè)權(quán)限,但是沒有設(shè)置相應(yīng)的權(quán)限說明,那么你的應(yīng)用在上傳到itunes connect后會(huì)馬上被changed to invalid binary。
因?yàn)檫@個(gè)坑我們第一天就踩了:用Xcode 8打包上傳App,本地驗(yàn)證和ipa上傳都正常,但是上傳成功后,包馬上被changed
to invalid binary,itunes connect后臺(tái)的構(gòu)建版本也一直出不來。一看反饋郵件,原因就是使用了某個(gè)系統(tǒng)權(quán)限但是沒有添加相應(yīng)權(quán)限的說明!
相應(yīng)的系統(tǒng)權(quán)限說明如下:
麥克風(fēng)權(quán)限---> Privacy - Microphone Usage Description :是否允許此App使用你的麥克風(fēng)?
相機(jī)權(quán)限---> Privacy - Camera Usage Description :是否允許此App使用你的相機(jī)?
相冊(cè)權(quán)限---> Privacy - Photo Library Usage Description :是否允許此App訪問你的媒體資料庫?
通訊錄權(quán)限---> Privacy - Contacts Usage Description :是否允許此App訪問你的通訊錄?
藍(lán)牙權(quán)限---> Privacy - Bluetooth Peripheral Usage Description :是否許允此App使用藍(lán)牙?
語音轉(zhuǎn)文字權(quán)限---> Privacy - Speech Recognition Usage Description :是否允許此App使用語音識(shí)別?
日歷權(quán)限---> Privacy - Calendars Usage Description :是否允許此App使用日歷?
定位權(quán)限---> Privacy - Location When In Use Usage Description :我們需要通過您的地理位置信息獲取您周邊的相關(guān)數(shù)據(jù)
定位權(quán)限---> Privacy - Location Always Usage Description :我們需要通過您的地理位置信息獲取
5、字體變大,原來的一些控件出現(xiàn)字體顯示不全
IOS10下的字體比原來的字體更大。
以前剛剛好顯示的下的文字在IOS10上竟然顯示不全了,因?yàn)镮OS10的中文字體比原先的字體要大,目前的解決方法就是把原來定寬且剛好顯示完全的控件重新調(diào)整一遍:要么把寬度加寬要么內(nèi)容自適應(yīng)大小。
6、IOS10跳轉(zhuǎn)到系統(tǒng)設(shè)置的相應(yīng)方法已經(jīng)禁止
在iOS10以前,我們可以通過以下方法跳轉(zhuǎn)到設(shè)置相應(yīng)的頁面去:
//跳轉(zhuǎn)到設(shè)置的 WIFI 頁面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
另外:
IOS6和IOS7需要設(shè)置URL Schemes:在URL Types中添加一個(gè)新項(xiàng)(prefs)。
IOS8和IOS9則不需要設(shè)置這個(gè)。
IOS10已經(jīng)禁止,所以IOS10的系統(tǒng)可以去除這部分業(yè)務(wù)邏輯了。
7、Xcode代碼注釋不能用
這個(gè)是因?yàn)樘O果解決xcode ghost,把插件屏蔽了。
解決方法
打開終端,命令運(yùn)行:
sudo /usr/libexec/xpccachectl
然后必須重啟電腦后生效
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS、Mac OS X系統(tǒng)中編程實(shí)現(xiàn)漢字轉(zhuǎn)拼音的方法(超級(jí)簡(jiǎn)單)
這篇文章主要介紹了iOS、Mac OS X系統(tǒng)中編程實(shí)現(xiàn)漢字轉(zhuǎn)拼音的方法(超級(jí)簡(jiǎn)單),本文講解的方法不僅支持中文,還支持日文、韓文等,需要的朋友可以參考下2015-04-04ios使用NSProxy實(shí)現(xiàn)消息轉(zhuǎn)發(fā)
本文主要介紹了ios使用NSProxy實(shí)現(xiàn)消息轉(zhuǎn)發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線
本篇文章主要介紹了iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05IOS計(jì)步器功能實(shí)現(xiàn)之Healthkit和CMPedometer
現(xiàn)在越來越多的人關(guān)注運(yùn)動(dòng)和健康,iOS系統(tǒng)也在很早的時(shí)候就自帶了健康A(chǔ)PP,下面詳細(xì)描述一下在我們開發(fā)中,怎么實(shí)現(xiàn)計(jì)步器功能。2016-08-08ios10以下safari設(shè)置style無效的解決方法
這篇文章主要介紹了ios10以下safari設(shè)置style無效的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09iOS中UIWebView網(wǎng)頁加載組件的基礎(chǔ)及使用技巧實(shí)例
UIWebView是開發(fā)中很常用的應(yīng)用內(nèi)調(diào)用網(wǎng)頁瀏覽的控件,這里整理了一些iOS中UIWebView網(wǎng)頁加載組件的基礎(chǔ)及使用技巧實(shí)例 ,需要的朋友可以參考下2016-06-06iOS開發(fā)中WebView的基本使用方法簡(jiǎn)介
這篇文章主要介紹了iOS開發(fā)中WebView的基本使用方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11