iOS9的新特性以及適配方案

新的iOS 9系統比iOS8更穩定,功能更全面,並且還更加開放。iOS 9加入了更多的新功能,包括更加智能的Siri,新加入的省電模式。iOS 9爲開發者提供5000個全新的API。html

1. 限制HTTP協議,所有改用更安全的HTTPS

iOS9讓全部的HTTP默認使用了HTTPS,原來的HTTP協議傳輸都改爲TLS1.2協議進行傳輸。直接形成的狀況就是App發請求的時候彈出網絡沒法鏈接。
對於這個問題的解決方案,網上有一篇博客已經總結的很好了,我在這就簡要的說明怎麼處理這種問題.python

HTTPS和HTTP的區別在於哪裏呢?
舉個簡單的栗子:原來的 HTTP 是塑料水管,容易被戳破;那麼現在新設計的 HTTPS 就像是在原有的塑料水管以外,
再包一層金屬水管。一來,原有的塑料水管照樣運行;二來,用金屬加固了以後,不容易被戳破。

Apple讓你的HTTP採用SSL/TLS協議,就是讓你從HTTP轉到HTTPS.
不使用SSL/TLS的HTTP通訊,就是不加密的通訊!

全部信息明文傳播,帶來了三大風險:
竊聽風險(eavesdropping):第三方能夠獲知通訊內容。
篡改風險(tampering):第三方能夠修改通訊內容。
冒充風險(pretending):第三方能夠冒充他人身份參與通訊。

SSL/TLS協議是爲了解決這三大風險而設計的:
全部信息都是加密傳播,第三方沒法竊聽。
具備校驗機制,一旦被篡改,通訊雙方會馬上發現。
配備身份證書,防止身份被冒充。
  • 在 Info.plist 中聲明,倒退回不安全的網絡請求依然能讓App訪問指定http,甚至任意的http(蘋果不建議這麼作):

   

須要添加的節點

參考 :http://www.cnblogs.com/endtel/p/4810042.html
NSAppTransportSecurity - NSAllowsArbitraryLoads
這個子節點的意思是:是否仍然容許加載?!api

設爲YES的話就將禁用了AppTransportSecurity轉而使用用戶自定義的設置,這個問題就解決了。安全

2. Bitcode

應該有朋友在真機調試的時候發如今使用微博微信等第三方SDK的時候,會提示報錯,微信

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

Xcode默認開啓bitcode模式,bitcode的理解應該是把程序編譯成的一種過渡代碼,而後蘋果再把這個過渡代碼編譯成可執行的程序。bitcode也容許蘋果在後期從新優化咱們程序的二進制文件,能夠直接理解爲App瘦身markdown


解決方式:網絡

    1. 某些第三方庫還不支持bitcode,咱們只能等待庫的開發者升級了此項功能.(這個是咱們所不能掌握的,嘿嘿)
    2. 直接禁用bitcode,禁用的方法就是找到以下配置,選爲NO.注意:iOS中bitcode是默認YES,watchOS中bitcodes是不讓改的必須爲YES。

        

  1. 選爲NO禁用

3. 企業級分發

在iOS8只是彈出一個窗問你是否須要讓手機信任這個應用,可是在iOS9卻直接禁止,若是真的想信任須要本身去手動開啓。相似於Mac系統從未知開發者處下載的dmg直接打不開,而後要到系統偏好設置的安全性與隱私手動打開。
解決方式:app

  • 設置-->通用--->描述文件 自行添加信任.
選擇描述文件
添加信任
這個跟着找一下就找到了。

4. URL scheme

URL scheme通常使用的場景是應用程序有分享或跳其餘平臺受權的功能,分享或受權後再跳回來.
在iOS8並無作過多限制,可是iOS9須要將你要在外部調用的URL scheme列爲白名單,才能夠完成跳轉.
若是iOS9沒作適配 會報以下錯誤 :字體

canOpenURL: failed for URL : "[mqzone://qqapp](mqzone://qqapp)" - error: "This app is not allowed to query for scheme mqzone"

例如在實現第三方登陸時,不能直接跳轉到相應的app直接獲取權限.
解決方式爲:優化

  • 設置應用白名單 不然不能直接關聯上你手機裏的應用
    在info.plist中加入
    <key>LSApplicationQueriesSchemes</key> <array> <!-- 微信 URL Scheme 白名單--> <string>wechat</string> <string>weixin</string> <!-- 新浪微博 URL Scheme 白名單--> <string>sinaweibohd</string> <string>sinaweibo</string> <string>sinaweibosso</string> <string>weibosdk</string> <string>weibosdk2.5</string> <!-- QQ、Qzone URL Scheme 白名單--> <string>mqqapi</string> <string>mqq</string> <string>mqqOpensdkSSoLogin</string> <string>mqqconnect</string> <string>mqqopensdkdataline</string> <string>mqqopensdkgrouptribeshare</string> <string>mqqopensdkfriend</string> <string>mqqopensdkapi</string> <string>mqqopensdkapiV2</string> <string>mqqopensdkapiV3</string> <string>mqzoneopensdk</string> <string>wtloginmqq</string> <string>wtloginmqq2</string> <string>mqqwpa</string> <string>mqzone</string> <string>mqzonev2</string> <string>mqzoneshare</string> <string>wtloginqzone</string> <string>mqzonewx</string> <string>mqzoneopensdkapiV2</string> <string>mqzoneopensdkapi19</string> <string>mqzoneopensdkapi</string> <string>mqzoneopensdk</string> <!-- 支付寶 URL Scheme 白名單--> <string>alipay</string> <string>alipayshare</string></array>

5. statusBar

之前咱們爲了可以實時的控制頂部statusbar的樣式,可能會在喜歡使用

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent] [[UIApplication sharedApplication]setStatusBarHidden:YES];

可是這麼作以前須要將 info.plist 裏面加上View controller-based status bar appearance BOOL值設爲NO,就是把控制器控制狀態欄的權限給禁了,用UIApplication來控制。
可是這種作法在iOS9不建議使用了,建議咱們使用把那個BOOL值設爲YES,而後用控制器的方法來管理狀態欄好比。

- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }

6. 字體

iOS9中,中文系統字體變爲了專爲中國設計的「蘋方」,字體有輕微的加粗效果,而且最關鍵的是字體間隙變大了!
因此不少本來寫死了width的label可能會出現「...」的狀況。
包括在不少時候咱們自動計算行高行寬的時候出現誤差,致使一些不可知的錯誤
解決方式:

// 字體的大小
CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
加上向上取整 ceilf()就能解決了.

7. AFNetworking

爲了迎合iOS新版本的升級, AFNetworking在3.0版本中刪除了基於 NSURLConnection API的全部支持。

若是你的項目之前使用過這些API,建議當即升級到基於 NSURLSession 的API的AFNetworking的版本。

相關文章
相關標籤/搜索