你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 針對蘋果最新審核要求 為應用兼容IPv6

針對蘋果最新審核要求 為應用兼容IPv6

編輯:IOS開發基礎

CgkB91R0WCmAeWypAACAMt_5RHQ905500.jpg

本文授權轉載,作者:我不是段譽(簡書)

在WWDC2 015上蘋果宣布iOS 9將支持純IPv6的網絡服務。2016年初開始所有提交到App Store的應用必須支持IPv6。而今年5月初,蘋果宣布6月1日後所有應用必須支持IPv6-only網絡。為確保現有的應用是兼容的,我們需要注意下面幾點。

不建議使用底層的網絡API

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

841355-727c46f180e5dd23.jpg

Networking frameworks and API layers

大部分情況下,我們用高級的API完全能夠實現我們的需求,而且高級API封裝的很便於使用,很多底層的像適配IPv6的工作都已經幫我們做好了。而用底層API會有大量的工作要我們自己來做,更容易產生bug。但你如果確實需要用底層的POSIX socket API, 請參照這個RFC4038: Application Aspects of IPv6 Transition的指導。

不要用IP地址

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

841355-70334bd00b2787ef.jpg

SCNetworkReachabilityCreateWithName

這個方法在著名的Reachability中是用到的,我們常用的網絡庫AFNetworking就用了這個。所以用到的同學得好好查一下了,另外這個項目的作者幾天前剛剛就這個問題有一個新的提交,不過最新的release版本中還沒有加進去,可以點下面鏈接先去看看他都改了哪些地方。

Added support for IPv6 to Reachability #3174

檢查不兼容IPv6的代碼

搜一下工程裡有沒有下面的這些API,這些都是只針對IPv4做處理的,有的話就刪了。

  • inet_addr()

  • inet_aton()

  • inet_lnaof()

  • inet_makeaddr()

  • inet_netof()

  • inet_network()

  • inet_ntoa()

  • inet_ntoa_r()

  • bindresvport()

  • getipv4sourcefilter()

  • setipv4sourcefilter()

如果用到了下面左邊的這些IPv4的類型,那麼它們相應的IPv6類型也需要做處理

841355-dd37905d642ca9bd.png

IPv4-IPv6

本地搭建IPv6測試環境

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

我們的要做的其實就是用Mac做一個熱點,然後用iPhone連接這個Wi-Fi,聽起來很容易,我相信大家在公司就是這麼干的吧。

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

841355-bd2a25d779153e4c.jpg

System Preferences

之後在“Sharing”界面中,我們會看到和之前不一樣的地方,就是紅框所標的地方,多了一個叫“Create NAT64 Network”的選框,選中它。

841355-8e5aa1eac3c24a8d.jpg

Sharing

之後就是按照正常的創建熱點的流程走完就行了。

現在我們用iPhone連接上這個剛創建好的熱點就可以測試了,注意此時要把iPhone設成飛行模式,以保證只用Wi-Fi上網。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved