AppStore IPv6-only審覈被拒緣由分析及解決方案-a

Apple關於IPV6規定

 日前,蘋果公司向開發者發出提醒,公司將會修改應用商店App Store的相關規定,全部IOS應用必須包含對IPv6-only標準的支持。據悉,該規定在6月1日生效,全部提交至蘋果App Store的應用申請必需要兼容面向硬件識別和網絡路由的最新互聯網協議--IPv6-only標準。而蘋果的這一舉措也將有助於IPv6的加速普及。編程

1.只須要在蘋果最新的系統上保證IPV6的兼容性便可。
2.NSURLConnection CFNetWork NSURLSession都是支持IPV6的在iOS9設備上。
3.AFNetworking,因爲歷史緣由,應用代碼基本上都深度引用了AFHTTPRequestOperation類,因此目前API網絡請求均須要經過NSURLConnection發送出去,通過測試NSURLConnection在最新的iOS9系統上是支持IPV6的。
4.Reachability在程序中被大量應用判斷網絡狀態,可是在裏面卻使用了IPV4專用的API,通過測試,在iOS9以上系統IPV4和IPV6網絡環境都可使用,但在iOS8上IPV4和IPV6切換的時候沒法監測網絡狀態的改變,多是由於蘋果在iOS8上尚未對IPV6進行相關的支持相關,可是這仍然知足蘋果要求在最新系統版本上支持IPV6的需求,其實蘋果在iOS9以上對zero Address進行了處理,Reachability在iOS9上能夠支持IPV6和IPV4,但在iOS9一下存在bug,監測網絡會有問題。

服務器

避免被拒的措施

  • 使用網絡通信框架;

也就是是說推薦你使用 iOS SDK 自帶的,構建於 socket 上層的網絡通信框架,或是第三方的網絡通信框架。這樣,使用網絡通信框架的話,上面的第 2 條大致上是不用操心的。若是你使用的是第三方的網絡通信框架的話,必定記得詢問該框架的開發商:「大家支持 IPv6 嗎?」
做爲網絡通信框架其中之一的 ProudNet™ 是支持 IPv6 的喲。自 2015 年 12 月的更新版本開始支持。ProudNet 的使用者若是要想支援 IPv6 的話,應該使用 2015 年 12 月版本,或更高的版本。網絡


  • 避免使用 IPv4 專用的 API;

若是你親自編程 socket 層的話,記得不能使用 IPv4 專用 API。好比說,你不能使用以下這些 API (光是使用這些函數自己,是否會成爲蘋果方面拒絕經過應用審覈的事由,目前還不清楚。反正 ProudNet 目前是全然不使用這些函數的)。
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
若是要測試在 IPv6 的環境下是否運轉正常,你須要構建 IPv6 only 的網絡環境。方法有不少種。咱們使用的是經過 Mac 機器的方法。框架

避免使用硬編碼地址(IP地址)

蘋果使用的是「硬編碼地址」這樣的術語。不過這大致上只是對大衆友好的簡化說法。正確的學名其實應該叫 IP literal。比方說形如 「11.22.33.44」 這種啦。
另外一方面,咱們一般所說的 「hostname」,比方說「server1.mygame.com」這種,學名叫 FQDN (fully qualified domain name)。
你問,經過「硬編碼地址」,也就是咱們所說的 IP literal 連入服務器的話會有什麼樣的後果呢?一些 IPv6 網絡下的客戶端會連不上 IPv4 網絡下的服務器(雖然說 iOS 9.2 之後這個問題會部分解決,可是無法保證在全部 IPv6 網絡下都沒問題)。
反之亦然—客戶端在 IPv4 下,服務器 IPv6。
至於連不上的緣由嗎,要從 NAT64 / DNS64 的聯動關係提及。由於內容有點長,這裏就不贅述了。
那麼應該腫麼辦呢?乖乖地遵從蘋果大人所「指示」(?)的。經過 FQDN 而不是 IPv4 literal 的連入的狀況下,服務器要可以接收。客戶端鏈接服務器時則要使用 FQDN。dom

舉例說明上面的內容:socket

- 11.22.33.44 ==> 蘋果會屏蔽你 - server.mygame.com ==> Ok - 11:22:33:44:55:66:77:88 ==> 蘋果會屏蔽你

關於IPV6

隨着互聯網的迅速發展,各類聯網設備總數的不斷增長,傳統的IPv4地址耗盡已是能夠預見的將來,所以,用於替代現行版本IP協議(IPv4)的下一代IP協議,IPv6技術已成爲將來的主流IP技術。
據蘋果在開發者網站發佈的消息稱,現有的不少應用已經兼容IPv6-only協議了,由於該協議已經獲得NSURLSession和CFNetwork API的支持。使用IPv4 API或硬件編碼IP地址的開發者須要修改應用代碼才能兼容這項新政策。
除了蘋果以外,整個行業也在慢慢接受IPv6-only協議,尤爲是提供手機網絡服務的運營商。隨着各類連網設備總數的增長,以及新手機推出的速度愈來愈快,IPv4地址將迅速耗盡。做爲後續技術,IPv6將在不遠的未來徹底取代IPv4。函數

相關文章
相關標籤/搜索