iOS上線IPv6被拒

weixin_34208283發表於2016-12-22

蘋果公司規定從2016年6月1日開始所有新上架的app開始稽核IPv6的支援,至於原因大家都知道。從5月份開始我們的app就開始為了這個規定修改網路請求,值得慶幸的是一直上線都很順利。從8月份開始陸陸續續的就有朋友說他們的app因為IPv6的原因被拒了,當時我還一直以為是因為他們的伺服器不支援IPv6的原因,不過他們一般都是第二天重新提交就會通過,總之就是稀裡糊塗的就上線了,我們的專案在最近一次提審終於也因為IPv6被拒了。可是我們從6月份開始就一直沒有修改過網路請求啊,為什麼以前都沒事,只有這次被拒啦,不可能是因為以前蘋果稽核沒有稽核這個方面的,於是開始各種查資料,各種研究,終於發現了原因。

首先說一下app網路請求的過程:

2889808-e5f4632a128eaee2.png
圖片.png

這個官網上給出的一個流程圖,首先app傳送一個IPv6的網路請求,然後在DNS伺服器會先解析你這個IPv6看看路由裡面有沒有這個IPv6的地址,如果有的話會直接找到這個地址並且連結,如果沒有找到這個地址的話DNS64會自動把這個IPv6的地址轉換成IPv4的地址,如果能找到就會把這個當成你要訪問的地址,如果還是找不到的話就會返回找不到地址。
那麼為什麼蘋果公司稽核有的時候能夠通過,而有的時候不能通過呢?那是因為我們們的DNS都是在國內的,而蘋果是在美國的IPv6環境上測試的,當他們的ATS向你的DNS傳送請求時,如果連結不通,那麼蘋果稽核人員就會認為是你的不支援IPv6,所以就會被拒,這種情況下你只需要再次提交稽核就好了。
那麼說了這麼多我們們需要做什麼呢,首先你要把連結都換成域名形式的,不要寫成IP地址的,這是為了確保DNS可以轉換,如果網路請求你是用的第三方,比如AFNetworking,那麼你只需要升級成最新版本就可以了,如果是自己寫的那麼請用NSURLSession。


2889808-5139d01920723be7.png
圖片.png

官網上關於這方面是這樣寫的,只說了NSURLSession和CFNetwork,網上有的人說NSURLConnection在ISO9下是支援IPv6的,不過為了保險起見還是用NSURLSession。
網上的資料都是說NSURLSession支援IPv6,NSURLConnection不支援,但是我當時就是不知道支援部支援表現在哪方面,又為什麼不支援,是因為NSURLSession和CFNetwork可以把IPv4合成IPv6。
我們客戶端需要做的就是這些了。
最後你需要搭建一個IPv6的環境測試你的部署是否正確,搭建環境請自己百度,友情提示,如果你的電話連不上馬Mac熱點,提示連結失敗或者密碼錯誤,那麼不要懷疑自己,請重新啟動電腦,在按照流程重新建立一個NAT64的熱點,如果還是連不上那麼就換臺電腦吧,千萬不要懷疑自己,不要認為蘋果公司做了這麼多年的電腦,一個熱點肯定不會有問題,呵呵,這個真的是蘋果公司的問題。。。。

相關文章