![【移動應(yīng)用開發(fā)技術(shù)】iOS 9適配中會遇到的問題有哪些_第1頁](http://file4.renrendoc.com/view/79326ef9badd3ecd7c260a52b8359493/79326ef9badd3ecd7c260a52b83594931.gif)
![【移動應(yīng)用開發(fā)技術(shù)】iOS 9適配中會遇到的問題有哪些_第2頁](http://file4.renrendoc.com/view/79326ef9badd3ecd7c260a52b8359493/79326ef9badd3ecd7c260a52b83594932.gif)
![【移動應(yīng)用開發(fā)技術(shù)】iOS 9適配中會遇到的問題有哪些_第3頁](http://file4.renrendoc.com/view/79326ef9badd3ecd7c260a52b8359493/79326ef9badd3ecd7c260a52b83594933.gif)
![【移動應(yīng)用開發(fā)技術(shù)】iOS 9適配中會遇到的問題有哪些_第4頁](http://file4.renrendoc.com/view/79326ef9badd3ecd7c260a52b8359493/79326ef9badd3ecd7c260a52b83594934.gif)
![【移動應(yīng)用開發(fā)技術(shù)】iOS 9適配中會遇到的問題有哪些_第5頁](http://file4.renrendoc.com/view/79326ef9badd3ecd7c260a52b8359493/79326ef9badd3ecd7c260a52b83594935.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】iOS9適配中會遇到的問題有哪些
這篇文章主要介紹iOS9適配中會遇到的問題有哪些,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!一、NSAppTransportSecurityiOS9讓所有的HTTP默認(rèn)使用了HTTPS,原來的HTTP協(xié)議傳輸都改成TLS1.2協(xié)議進(jìn)行傳輸。直接造成的情況就是App發(fā)請求的時候彈出網(wǎng)絡(luò)無法連接。解決辦法就是在項目的info.plist文件里加上如下節(jié)點(diǎn):NSAppTransportSecurity-NSAllowsArbitraryLoads這個子節(jié)點(diǎn)的意思是:是否允許任性的加載?!設(shè)為YES的話就將禁用了AppTransportSecurity轉(zhuǎn)而使用用戶自定義的設(shè)置,這個問題就解決了。上面說是蘋果限制了HTTP協(xié)議,但是也并不是說所有的HTTPS都能***適配iOS9了。舉個栗子,從app內(nèi)起webView加載https的網(wǎng)頁。新建個項目寫幾行起網(wǎng)頁的代碼-
(void)loadView{
UIWebView
*web
=
[[UIWebView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
self.view
=
web;
}
-
(void)viewDidLoad
{
[super
viewDidLoad];
UIWebView
*web
=
(UIWebView
*)self.view;
//董鉑然
NSURL
*url
=
[NSURL
URLWithString:@"/"];
NSURLRequest
*request
=
[NSURLRequest
requestWithURL:url];
[web
loadRequest:request];
}中間的url就是我們想要加載的https地址,用/和/分別試一下,結(jié)果不同github的網(wǎng)頁能打開,百度的網(wǎng)頁打不開,下面打印了一行l(wèi)ogNSURLSession/NSURLConnection
HTTP
load
failed
(kCFStreamErrorDomainSSL,
-9802)原因是蘋果的官方資料說首先必須要基于TLS1.2版本協(xié)議。然后證書的加密的算法還需要達(dá)到SHA256或者更高位的RSA密鑰或ECC密鑰,如果不符合,請求將被中斷并返回nil.在瀏覽器中是可以直接查看這個網(wǎng)站的加密算法的,先點(diǎn)綠鎖再點(diǎn)證書信息。從右邊兩張圖可以看出,github帶RSA加密的SHA-256符合蘋果的要求,所以才可以展示。針對百度的情況可以在info.plist中配置如下,如果網(wǎng)站引用的比較多應(yīng)該是需要針對每個網(wǎng)站進(jìn)行配置。NSAppTransportSecurity,NSExceptionDomains,NSIncludesSubdomains,NSExceptionRequiresForwardSecrecy,NSExceptionAllowInsecureHTTPLoads寫在下面便于復(fù)制。其中的ForwardSecrecy理解為超前的密碼保護(hù)算法,在官方資料里有寫,一共是11種。配置完畢百度可以訪問。二、Bitcodebitcode的理解應(yīng)該是把程序編譯成的一種過渡代碼,然后蘋果再把這個過渡代碼編譯成可執(zhí)行的程序。bitcode也允許蘋果在后期重新優(yōu)化我們程序的二進(jìn)制文件,有類似于App瘦身的思想。用了xcode7的編譯器編譯之前沒問題的項目可能會出現(xiàn)下列報錯。XXXX’
does
not
contain
bitcode.
You
must
rebuild
it
with
bitcode
enabled
(Xcode
setting
ENABLE_BITCODE),
obtain
an
updated
library
from
the
vendor,
or
disable
bitcode
for
this
target.
for
architecture
arm64問題的原因是:某些第三方庫還不支持bitcode。要不然是等待庫的開發(fā)者升級了此項功能我們更新庫,要不就是把這個bitcode禁用。禁用的方法就是找到如下配置,選為NO.(iOS中bitcode是默認(rèn)YES,watchOS中bitcodes是不讓改的必須YES。)三、設(shè)置信任這一條只和企業(yè)級應(yīng)用或inhose有關(guān),和AppStore渠道的應(yīng)用無關(guān)。在iOS8只是彈出一個窗問你是否需要讓手機(jī)信任這個應(yīng)用,但是在iOS9卻直接禁止,如果真的想信任需要自己去手動開啟。類似于Mac系統(tǒng)從未知開發(fā)者處下載的dmg直接打不開,然后要到系統(tǒng)偏好設(shè)置的安全性與隱私手動打開。下圖展示左邊iOS8,右邊iOS9用戶需要去設(shè)置》通用》描述文件里面自行添加信任。這種問題的處理方法也就兩種:1.提前周知暫時不要升級iOS9
2.大多是公司員工使用的企業(yè)級應(yīng)用,群發(fā)一個指導(dǎo)郵件。四、字體iOS8中,字體是Helvetica,中文的字體有點(diǎn)類似于“華文細(xì)黑”。只是蘋果手機(jī)自帶渲染,所以看上去可能比普通的華文細(xì)黑要美觀。iOS9中,中文系統(tǒng)字體變?yōu)榱藢橹袊O(shè)計的“蘋方”有點(diǎn)類似于一種word字體“幼圓”。字體有輕微的加粗效果,并且最關(guān)鍵的是字體間隙變大了!所以很多原本寫死了width的label可能會出現(xiàn)“...”的情況。上面這兩張圖也可以直觀的看出同一個界面,同一個label的變化。所以為了在界面顯示上不出錯,就算是固定長度的文字也還是建議使用sizetofit或者ios向上取整ceilf()或者提前計算CGSize
size
=
[title
sizeWithAttributes:@{NSFontAttributeName:
[UIFont
systemFontOfSize:14.0f]}];
CGSize
adjustedSize
=
CGSizeMake(ceilf(size.width),
ceilf(size.height));五、URLschemeURLscheme一般使用的場景是應(yīng)用程序有分享或跳其他平臺授權(quán)的功能,分享或授權(quán)后再跳回來。在iOS8并沒有做過多限制,但是iOS9需要將你要在外部調(diào)用的URLscheme列為白名單,才可以完成跳轉(zhuǎn)如果iOS9沒做適配會報如下錯誤canOpenURL:
failed
for
URL
:
"mqzone://qqapp"
-
error:
"This
app
is
not
allowed
to
query
for
scheme
mqzone"具體的解決方案也是要在info.plist中設(shè)置LSApplicationQueriesSchemes類型為數(shù)組,下面添加所有你用到的scheme六、statusbar這個還好只是報一個警告,如果就是不管他,也不會出現(xiàn)問題。<Error>:
CGContextSaveGState:
invalid
context
0x0.
If
you
want
to
see
the
backtrace,
please
set
CG_CONTEXT_SHOW_BACKTRACE
environmental
variable.以前我們?yōu)榱四軌驅(qū)崟r的控制頂部statusbar的樣式,可能會在喜歡使用[[UIApplication
sharedApplication]
setStatusBarStyle:UIStatusBarStyleLightContent]
[[UIApplication
sharedApplication]setStatusBarHidden:YES];但是這么做之前需要將info.plist里面加上Viewcontroller-basedstatusbarappearance
BOOL值設(shè)為NO,就是把控制器控制狀態(tài)欄的權(quán)限給禁了,用UIApplication來控制。但是這種做法在iOS9不建議使用了,建議我們使用吧那個BOOL值設(shè)為YES,然后用控制器的方法來管理狀態(tài)欄比如。-
(UIStatusBarStyle)preferredStatusBarStyle
{
return
UIStatusBarStyleLightContent;
}點(diǎn)進(jìn)頭文件可以驗證剛才說法:@property(readwrite,
nonatomic,getter=isStatusBarHidden)
BOOL
statusBarHidden
NS_DEPRECATED_IOS(2_0,
9_0,
"Use
-[UIViewController
prefersStatusBarHidden]");七、didFinishLaunchingWithOptions如果運(yùn)行的時候報下列錯誤,那就是你的didFinishLaunchingWithOptions寫的不對了*****
Assertion
failure
in
-[UIApplication
_runWithMainScene:transitionContext:completion:],
/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**iOS9不允許在didFinishLaunchingWithOptions結(jié)束了之后還沒有設(shè)置window的rootViewController。也許是xcode7的編譯器本身就不支持。解決的方法當(dāng)然就是先初始化個值,之后再賦值替換掉UIWindow
*window
=
[[UIWindowalloc]
initWithFrame:[UIScreenmainScreen].bounds];
window.rootViewController
=
[[UIViewController
alloc]init];八、tableView雖然現(xiàn)在的iOS9已經(jīng)推送正式版了,但是iOS9使用時還是會感覺到App比以前更加卡頓了,tableView拖動時卡頓顯示的最為明顯。并且之前遇到一個bug,原本好的項目用xcode7一編譯,tableView刷新出了問題,[tableViewreloadData]無效有一行cell明明改變了但
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初級銀行管理-銀行專業(yè)初級《銀行管理》點(diǎn)睛提分卷5
- 探索供求匹配的智能化解決方案
- 2024-2025學(xué)年北京市通州區(qū)高三(上)期末地理試卷
- 2024-2025學(xué)年山西省太原市常青藤中學(xué)校、李林中學(xué)高一上學(xué)期10月聯(lián)考物理試題(解析版)
- 純收益投資協(xié)議合同(2篇)
- 山東省濰坊市四縣市聯(lián)考2024-2025學(xué)年高二上學(xué)期期中質(zhì)量監(jiān)測物理試題(解析版)
- 法院生活費(fèi)申請書
- 現(xiàn)代企業(yè)管理培訓(xùn)體系的構(gòu)建與優(yōu)化
- 智能插座項目可行性研究報告
- 四川省成都市2024年七年級《數(shù)學(xué)》上冊月考試卷與參考答案
- 煤礦技術(shù)員必須會的知識
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- 2024年山東藥品食品職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 《行政倫理學(xué)教程(第四版)》課件 張康之 第8-13章 行政組織倫理-技術(shù)時代的行政倫理
- 進(jìn)出潔凈室培訓(xùn)
- 2024年高考語文標(biāo)點(diǎn)符號的基本用法大全(新標(biāo)準(zhǔn))
- 2024ABB IRB IRB6700Inv IRB6700I產(chǎn)品手冊指南
- 認(rèn)識職業(yè):醫(yī)生
- 外貿(mào)進(jìn)出口基礎(chǔ)知識培訓(xùn)課件
- 2023年四川省資陽中考英語真題(含答案)
- 中國心力衰竭診斷與治療指南解讀
評論
0/150
提交評論