国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

iOS 9 適配中一定會遇到的大坑合集

移動開發(fā) Android
本文主要是說一些iOS9適配中出現(xiàn)的坑,如果只是要單純的了解iOS9新特性可以看瞄神的開發(fā)者所需要知道的 iOS 9 SDK 新特性。9月17日凌晨,蘋果給用戶推送了iOS9正式版,隨著有用戶陸續(xù)升級iOS9,也就逐漸的衍生出了一系列的問題,筆者也在趕忙為自己維護的App做適配,本文寫的一些坑基本都是親身體驗了。

[[151640]]

本文主要是說一些iOS9適配中出現(xiàn)的坑,如果只是要單純的了解iOS9新特性可以看瞄神的開發(fā)者所需要知道的 iOS 9 SDK 新特性。9月17日凌晨,蘋果給用戶推送了iOS9正式版,隨著有用戶陸續(xù)升級iOS9,也就逐漸的衍生出了一系列的問題,筆者也在趕忙為自己維護的App做適配,本文寫的一些坑基本都是親身體驗了。
一、NSAppTransportSecurity

iOS9讓所有的HTTP默認使用了HTTPS,原來的HTTP協(xié)議傳輸都改成TLS1.2協(xié)議進行傳輸。直接造成的情況就是App發(fā)請求的時候彈出網(wǎng)絡(luò)無法連接。解決辦法就是在項目的info.plist 文件里加上如下節(jié)點:

NSAppTransportSecurity - NSAllowsArbitraryLoads

這個子節(jié)點的意思是:是否允許任性的加載?! 設(shè)為YES的話就將禁用了AppTransportSecurity轉(zhuǎn)而使用用戶自定義的設(shè)置,這個問題就解決了。

 

上面說是蘋果限制了HTTP協(xié)議,但是也并不是說所有的HTTPS都能***適配iOS9了。

舉個栗子,從app內(nèi)起webView加載https的網(wǎng)頁。新建個項目寫幾行起網(wǎng)頁的代碼
 

  1. - (void)loadView{ 
  2. UIWebView *web = [[UIWebView alloc]initWithFrame:[UIScreen mainScreen].bounds]; 
  3. self.view = web; 
  4. - (void)viewDidLoad { 
  5. [super viewDidLoad]; 
  6.  
  7. UIWebView *web = (UIWebView *)self.view; //董鉑然 
  8. NSURL *url = [NSURL URLWithString:@"https://github.com/"]; 
  9. NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
  10. [web loadRequest:request]; 

中間的url就是我們想要加載的https地址,用https://baidu.com/ 和 https://github.com/ 分別試一下,結(jié)果不同

github的網(wǎng)頁能打開,百度的網(wǎng)頁打不開,下面打印了一行l(wèi)og

  1. NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802

原因是蘋果的官方資料說首先必須要基于TLS 1.2版本協(xié)議。然后證書的加密的算法還需要達到SHA256或者更高位的RSA密鑰或ECC密鑰,如果不符合,請求將被中斷并返回nil.

在瀏覽器中是可以直接查看這個網(wǎng)站的加密算法的,先點綠鎖再點證書信息。

從右邊兩張圖可以看出,github帶RSA加密的SHA-256符合蘋果的要求,所以才可以展示。

針對百度的情況可以在info.plist中配置如下,如果網(wǎng)站引用的比較多應該是需要針對每個網(wǎng)站進行配置。

NSAppTransportSecurity,NSExceptionDomains,NSIncludesSubdomains,NSExceptionRequiresForwardSecrecy,NSExceptionAllowInsecureHTTPLoads 寫在下面便于復制。

其中的ForwardSecrecy理解為超前的密碼保護算法,在官方資料里有寫,一共是11種。配置完畢百度可以訪問。

 


二、Bitcode

bitcode的理解應該是把程序編譯成的一種過渡代碼,然后蘋果再把這個過渡代碼編譯成可執(zhí)行的程序。bitcode也允許蘋果在后期重新優(yōu)化我們程序的二進制文件,有類似于App瘦身的思想。

用了xcode7的編譯器編譯之前沒問題的項目可能會出現(xiàn)下列報錯。
 

  1. 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是默認YES,watchOS中bitcodes是不讓改的必須YES。)


三、設(shè)置信任

這一條只和企業(yè)級應用或inhose 有關(guān),和AppStore渠道的應用無關(guān)。

在iOS8只是彈出一個窗問你是否需要讓手機信任這個應用,但是在iOS9卻直接禁止,如果真的想信任需要自己去手動開啟。類似于Mac系統(tǒng)從未知開發(fā)者處下載的dmg直接打不開,然后要到系統(tǒng)偏好設(shè)置的安全性與隱私手動打開。 下圖展示左邊iOS8,右邊iOS9

用戶需要去 設(shè)置---》通用---》描述文件 里面自行添加信任。

這種問題的處理方法也就兩種:1.提前周知暫時不要升級iOS9 2.大多是公司員工使用的企業(yè)級應用,群發(fā)一個指導郵件。


四、字體

iOS8中,字體是Helvetica,中文的字體有點類似于“華文細黑”。只是蘋果手機自帶渲染,所以看上去可能比普通的華文細黑要美觀。iOS9中,中文系統(tǒng)字體變?yōu)榱藢橹袊O(shè)計的“蘋方” 有點類似于一種word字體“幼圓”。字體有輕微的加粗效果,并且最關(guān)鍵的是字體間隙變大了!

所以很多原本寫死了width的label可能會出現(xiàn)“...”的情況。

上面這兩張圖也可以直觀的看出同一個界面,同一個label的變化。

所以為了在界面顯示上不出錯,就算是固定長度的文字也還是建議使用sizetofit 或者ios向上取整 ceilf() 或者提前計算

  1. CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}]; 
  2. CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height)); 


五、URL scheme

URL scheme一般使用的場景是應用程序有分享或跳其他平臺授權(quán)的功能,分享或授權(quán)后再跳回來。

在iOS8并沒有做過多限制,但是iOS9需要將你要在外部調(diào)用的URL scheme列為白名單,才可以完成跳轉(zhuǎn)

如果iOS9沒做適配 會報如下錯誤

  1. 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)問題。

  1. <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的樣式,可能會在喜歡使用

  1. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent] 
  2. [[UIApplication sharedApplication]setStatusBarHidden:YES]; 

但是這么做之前需要將 info.plist 里面加上View controller-based status bar appearance BOOL值設(shè)為NO,就是把控制器控制狀態(tài)欄的權(quán)限給禁了,用UIApplication來控制。但是這種做法在iOS9不建議使用了,建議我們使用吧那個BOOL值設(shè)為YES,然后用控制器的方法來管理狀態(tài)欄比如。

  1. - (UIStatusBarStyle)preferredStatusBarStyle 
  2. return UIStatusBarStyleLightContent; 

點進頭文件可以驗證剛才說法:

  1. @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]"); 


七、didFinishLaunchingWithOptions

如果運行的時候報下列錯誤,那就是你的didFinishLaunchingWithOptions寫的不對了
 

  1. ***** 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的編譯器本身就不支持。

解決的方法當然就是先初始化個值,之后再賦值替換掉
 

  1. UIWindow *window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; 
  2. window.rootViewController = [[UIViewController alloc]init]; 


八、tableView

雖然現(xiàn)在的iOS9已經(jīng)推送正式版了,但是iOS9使用時還是會感覺到App比以前更加卡頓了,tableView拖動時卡頓顯示的最為明顯。 并且之前遇到一個bug,原本好的項目用xcode7一編譯,tableView刷新出了問題 ,[tableView reloadData]無效 有一行cell明明改變了但是刷新不出來。 感覺可能是這個方法和某種新加的特性沖突了,猜測可能是reloadData的操作被推遲到下一個RunLoop執(zhí)行最終失效。

解決的方法是,注釋[tableView reloadData],改用局部刷新,問題居然就解決了。

  1. [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; 

 

如果你不是在董鉑然博客園看到本文,請點擊查看原文。

暫時遇到這些問題,感覺iOS9的出現(xiàn)讓所有iOS開發(fā)都是菊花一緊,希望蘋果這種大刀闊斧做改變,特立獨行的風格發(fā)展下去以后別和government 產(chǎn)生矛盾,然后公司倒閉 導致開發(fā)人員失業(yè),也許是我想多了。預祝所有的iOS都能及時的做好適配改完bug,下個版本一上線,所有問題都解決。

責任編輯:chenqingxiang 來源: 董鉑然的博客
相關(guān)推薦

2017-11-14 15:22:06

ReactNativeAppBugly

2023-12-18 13:10:00

finally死鎖JVM 崩潰

2025-04-03 09:51:37

2024-06-20 12:38:07

2022-04-02 06:43:44

CLI 工具Fig終端自動補全

2015-04-16 09:48:12

APP測試

2022-02-07 09:02:00

汽車智能技術(shù)

2015-07-13 16:56:40

IOS 9適配教程

2009-03-10 19:04:58

服務器虛擬化IDC

2010-11-17 11:11:44

跳槽

2023-12-30 10:59:03

MySQLupdate數(shù)據(jù)庫

2013-09-26 09:22:14

2010-11-03 10:55:39

求職

2020-04-24 20:05:16

VueAxios前端

2015-07-06 11:28:40

2015-07-30 17:00:01

喬老爺

2019-10-18 12:57:38

邊緣計算云計算安全

2019-08-07 06:16:28

物聯(lián)網(wǎng)IOT技術(shù)

2017-10-25 11:02:14

CIO企業(yè)云業(yè)務

2025-02-14 10:03:40

點贊
收藏

51CTO技術(shù)棧公眾號

free性m.freesex欧美| 国产精品免费观看高清| 午夜亚洲性色福利视频| 视色视频在线观看| 在线日韩欧美视频| 在线国产中文字幕| 中国av一区二区三区| 成入视频在线观看| 国产精选在线观看91| 一区二区三区国产豹纹内裤在线| 中国字幕a在线看韩国电影| 成人综合色站| 一区二区三区免费看视频| 精品视频在线一区| 97在线免费视频观看| 日韩大片免费观看视频播放| 狠狠综合久久| 免费看av大片| 日韩女在线观看| 久久久精品2019中文字幕之3| 中文字幕在线看片| 91麻豆天美传媒在线| 欧美va亚洲va在线观看蝴蝶网| 欧美影视一区| www.黄在线观看| 91夜夜未满十八勿入爽爽影院 | 日韩av网站导航| 亚洲黄页一区| 可以免费看污视频的网站在线| 国产精品视频地址| 亚洲最新视频在线观看| 要久久爱电视剧全集完整观看 | 久久av资源站| 亚洲天堂免费电影| 亚洲人成人77777线观看| 制服丝袜成人动漫| 99精品欧美| 日本暖暖在线视频| 久草精品电影| 6080日韩午夜伦伦午夜伦| 人禽交欧美网站| 国产精品原创| 中文字幕欧美日韩一区二区三区 | 日韩av手机在线看| 竹菊久久久久久久| 99久久精品国产精品久久| 亚洲成人天堂| 欧美色视频日本高清在线观看| 国产一区二区三区天码| 亚洲一区自拍偷拍| 另类在线视频| 女同互忝互慰dv毛片观看| 91超碰在线免费观看| 欧美三级三级三级爽爽爽| 日韩午夜黄色| 久久91导航| 国产日韩一区二区在线观看| 97视频在线观看免费| 亚洲精品一二三| 忘忧草精品久久久久久久高清| 国产www.大片在线| 天堂资源在线亚洲资源| 亚洲视频精品在线| 国产女同性恋一区二区| 成人免费看片39| 9色在线视频| 亚洲一区二区三区涩| 日韩一区二区福利| 一区二区三区中文字幕电影| 四季av一区二区凹凸精品| 精品亚洲综合| 成人激情直播| 日韩精品一区二区三区视频播放 | 97在线资源在| 国产精品黄视频| 欧美性猛交xxxx| 水蜜桃久久夜色精品一区的特点| 成人小电影网站| 羞羞的视频免费| 国产精品xxxx| 亚洲人午夜精品| 亚洲欧洲精品一区二区三区不卡| 亚洲精品一二三区区别| av中文资源在线资源免费观看| 欧美 日韩精品| 国产日韩亚洲欧美| 3d动漫精品啪啪1区2区免费 | 麻豆成人综合网| 北条麻妃在线一区二区免费播放 | 海角社区69精品视频| 超级白嫩亚洲国产第一| 亚洲欧美日本国产专区一区| 久久九九全国免费| 性欧美暴力猛交69hd| 欧美熟乱15p| 中文字幕精品—区二区四季| 欧美日韩黄色大片| 综合精品一区| 欧美日韩国产影片| 日韩有码在线视频| 中文字幕免费一区二区| 波多野结依一区| 黄网免费视频| 精品一区国产| 久久精品一本久久99精品| 亚洲 欧美综合在线网络| 麻豆国产精品官网| 黑人操亚洲人| 色综合一本到久久亚洲91| 神马午夜dy888| 国产女人18毛片| 91精品视频在线看| 欧美另类极品videosbestfree| 欧美三级视频在线| 欧美国产一区视频在线观看| 久久婷婷麻豆| av亚洲在线观看| www.久久爱.cn| 中国色在线观看另类| 国产一级久久| 日本成人中文| 成人免费高清观看| 久久白虎精品| 国产91xxx| 久精品国产欧美| 日本精品久久电影| 在线视频欧美日韩| 91精品国产丝袜白色高跟鞋| 亚洲天堂网中文字| 国产盗摄一区二区三区| 国语对白精品一区二区| 高潮久久久久久久久久久久久久| 呦呦在线视频| 夜色福利刺激| www.国产区| 懂色av一区二区三区四区五区| 97超碰人人看人人| 668精品在线视频| 永久免费精品影视网站| 91精品国产综合久久久久久| 一区二区久久久久| 久久综合色综合88| 狠狠色综合日日| 欧美三级午夜理伦三级中文幕| 国产成人精品福利| 日本精品在线中文字幕| xvideos国产在线视频| 在线观看国产高清视频| 国产淫片av片久久久久久| 一区二区三区四区五区精品 | 久久影院一区二区三区| 午夜在线播放| 福利在线国产| 亚洲欧美自偷自拍另类| 50度灰在线观看| 欧美黄色免费| 日本在线精品| 超级白嫩亚洲国产第一| 欧美亚洲天堂| 国产后进白嫩翘臀在线观看视频 | 国产精品丝袜久久久久久高清| 91av网站在线播放| 91国在线精品国内播放| 97超碰蝌蚪网人人做人人爽| 97色伦亚洲国产| 26uuu亚洲伊人春色| 欧美一区二区三区免费视| 欧洲午夜精品久久久| 国产99久久精品一区二区永久免费| 97国产一区二区精品久久呦| 欧美激情在线观看视频| 97在线免费视频| 欧美在线中文字幕| 国产精品视频永久免费播放| 91精品视频在线看| 国内一区在线| 亚洲一区二区三区午夜| av中文字幕av| 69堂免费视频| 国产又大又黄又猛| 成人在线小说| eeuss影院在线播放| 四虎影视成人| 免费观看亚洲| 老司机亚洲精品一区二区| 日韩美脚连裤袜丝袜在线| 99久久.com| 免费日韩精品中文字幕视频在线| 日韩精品一二三区| gogo大胆日本视频一区| 中文字幕乱码亚洲精品一区| 亚洲成人综合视频| 欧美日韩国产片| 欧美精品一区二区三区蜜桃| 日韩亚洲综合在线| 国产精品一二区| 人偷久久久久久久偷女厕| 免费看黄在线看| 天堂中文字幕| 天堂亚洲精品|