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。
舉例說明上面的內容:
- 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。
?
轉載于:https://www.cnblogs.com/csj222/p/5972178.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的AppStore IPv6-only审核被拒原因分析及解决方案-a的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的android studio
- 下一篇: iOS开发网络篇—数据缓存