針對蘋果最新審覈要求爲應用兼容IPv6

在WWDC2015上蘋果宣佈iOS9將支持純IPv6的網絡服務。2016年初開始全部提交到App Store的應用必須支持IPv6。爲確保現有的應用是兼容的,咱們須要注意下面幾點。html

不建議使用底層的網絡API

 

下圖展現的藍色部分的這些API都是不存在兼容性問題的,而咱們平時本身用的包括那些第三方的網絡庫大部分都是用的這些API。node

Networking frameworks and API layersgit

 

大部分狀況下,咱們用高級的API徹底可以實現咱們的需求,並且高級API封裝的很便於使用,不少底層的像適配IPv6的工做都已經幫咱們作好了。而用底層API會有大量的工做要咱們本身來作,更容易產生bug。但你若是確實須要用底層的POSIX socket API, 請參照這個RFC4038: Application Aspects of IPv6 Transition的指導。github

不要用IP地址

 

好比下面這個API,nodename這個參數不要傳IP地址,而應該用域名網絡

SCNetworkReachabilityCreateWithNamesocket

這個方法在著名的Reachability中是用到的,咱們經常使用的網絡庫AFNetworking就用了這個。因此用到的同窗得好好查一下了,另外這個項目的做者幾天前剛剛就這個問題有一個新的提交,不過最新的release版本中尚未加進去,能夠點下面連接先去看看他都改了哪些地方。測試

Added support for IPv6 to Reachability #3174spa

檢查不兼容IPv6的代碼

 

搜一下工程裏有沒有下面的這些API,這些都是隻針對IPv4作處理的,有的話就刪了。htm

inet_addr()ip

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

若是用到了下面左邊的這些IPv4的類型,那麼它們相應的IPv6類型也須要作處理

IPv4-IPv6

本地搭建IPv6測試環境

 

最後咱們來搭一個IPv6的測試環境吧,你所須要的就是一臺用非Wi-Fi的方式上網的Mac電腦。

咱們的要作的其實就是用Mac作一個熱點,而後用iPhone鏈接這個Wi-Fi,聽起來很容易,我相信你們在公司就是這麼幹的吧。

區別是此次咱們產生的是一個本地的IPv6 DNS64/NAT64網絡,這項功能是OS X 10.11新加的。和咱們之前開啓熱點方式不同的地方在於,咱們在「System Preferences」界面選中「Sharing」的同時,要按住「Option」鍵。

System Preferences

以後在「Sharing」界面中,咱們會看到和以前不同的地方,就是紅框所標的地方,多了一個叫「Create NAT64 Network」的選框,選中它。

Sharing

以後就是按照正常的建立熱點的流程走完就好了。

如今咱們用iPhone鏈接上這個剛建立好的熱點就能夠測試了,注意此時要把iPhone設成飛行模式,以保證只用Wi-Fi上網。


 

文/我不是段譽(簡書做者) 原文連接:http://www.jianshu.com/p/69ed4489762c 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。

相關文章
相關標籤/搜索