Ipv6_Only 簡單的理解(已驗證,專案已經上線)
網上好多關於ipv6的資料,說半天ipv6是什麼,怎麼建立測試環境,,,可是沒有看到具體的操作和解決的方案,這裡,為大家提供一種方案,希望給大家帶來幫助吧。
總的來說有三個方面需要進行檢查和修改:
1、專案裡面涉及和網路有關的網路請求是否支援ipv6。
2、專案裡面涉及和網路有關的sdk是否支援ipv6。
3、專案的伺服器是否支援ipv6。
IPv6的簡介
IPv4 和 IPv6的區別就是 IP 地址前者是 .(dot)分割,後者是以 :(冒號)分割的(更多詳細資訊自行搜尋)。
PS:在使用 IPv6 的熱點時候,記得手機開飛航模式哦,保證手機只在 Wi-Fi 下上網,以免手機在連線不到網路時候,會預設跳轉到使用 蜂窩行動網路(即2G、3G、4G流量) 上網。
IPV6,是對IPV4地址空間的擴充。目前當我們用iOS裝置連線上Wifi、4G、3G等網路時,裝置被分配的地址均是IPV4地址,但是隨著運營商和企業逐漸部署IPV6 DNS64/NAT64網路之後,裝置被分配的地址會變成IPV6的地址,而這些網路就是所謂的IPV6-Only網路,並且仍然可以通過此網路去獲取IPV4地址提供的內容。客戶端向伺服器端請求域名解析,首先通過DNS64 Server查詢IPv6的地址,如果查詢不到,再向DNS Server查詢IPv4地址,通過DNS64 Server合成一個IPV6的地址,最終將一個IPV6的地址返回給客戶端。如圖所示:
網上對於蘋果官網上ipv6的文章翻譯很多,附上鍊接,這篇介紹的不錯:iOS應用支援IPV6,就那點事兒
本地 Mac 搭建 IPv6 測試環境
附上鍊接:本地如何搭建IPv6環境測試你的APP
(上邊這些幾乎沒什麼用,網上一搜有很多。。。)
如何判斷自己的專案裡面是否是ipv6、ipv4呢,我們用的方法,就是自己專案裡面涉及和網路有關的進行一一排查。
(文章最後會提到ipv6解決的方案除了上述兩點還有一個關於伺服器的原因。)
我們的app本身支援ipv6是因為我們使用的網路請求是asihttpRequest請求,而asihttpRequest是基於CFNetwork的,蘋果有說明CFNetwork庫是支援IPV6的。而除了自身的網路請求外,我們專案中涉及網路的就是三方庫了,所以歸根到底我們做的只是第三方庫的替換,即:哪些三方庫和網路有關,那麼挨個檢視最新的sdk文件解釋是否描述支援ipv6,如果支援,那就替換。如果沒說支援,那就不換。
(當然,還可以用cocoadpods替換三方庫,關於cocoadpods的學習可以參考本人這篇文章Cocoapods安裝)
這種方案需要驗證,估計需要幾天的時間才能知道上線是否被拒。如果僥倖上線了,我會第一時間在本文裡面續寫一下。如果被拒,我也會第一時間排查原因,進行本文的更新。謝謝大家的支援。
已經上線了,該方案可行。
那麼我們替換了哪些三方庫呢,下邊一一列舉。(文章下部會有各個三方庫的連結)
1、Reachability
按照蘋果開發者中心提示,這個必須換。
新的sdk包將這個方法幹掉了:reachabilityForLocalWiFi,只要自己的程式碼中幹掉就行了,沒什麼影響。
原因如下介紹:
#pragma mark reachabilityForLocalWiFi
//reachabilityForLocalWiFi has been removed from the sample. See ReadMe.md for more information.
//+ (instancetype)reachabilityForLocalWiFi;
2、新浪微博
根據官網提示,這個新的sdk支援了ipv6,所以進行替換。
替換後:
根據比較,新舊sdk只有上述變化,替換後command+B編譯無錯誤提示。應該沒事。
3、連連支付
按照連連支付官方文件
最新的sdk包是支援ipv6的,但是舊包也是支援的。專案中用的是2.4.0,官網上最新包是2.4.7,最後我們做了替換。
替換後報錯了:
原因是在新的sdk包裡將報錯的這兩個方法合成了一個。
在新的方法裡面新增了一個判斷支付型別的引數。
根據專案中報錯的兩個地方,第一個是快捷支付,第二個是認證支付。按照之前的進行了修改。command+B編譯無錯誤提示。應該沒事。
但是實際上還是遇到了崩潰的bug。然後我們換回了2.4.0版本,應為連連支付官網上說之前的版本也支援ipv6,我們之前的版本沒有問題,所以換了回來,看看上線能成功不。
4、友盟
按照友盟官方sdk文件描述,需要更換新的sdk包。
按照需要,勾選瞭如下:
md,搞錯了,專案裡面的友盟是友盟分析,上邊那個是友盟分享。。。
但是根據官方文件,好像我們的不用替換,因為涉及到什麼IDFA,我們專案好像不涉及這個。
5、微信
按照微信最新sdk包1.7版本里面的README.txt,最新的sdk包支援ipv6
而我們專案中的微信是1.5版本的。應該進行替換。command+B編譯無錯誤提示。應該沒事。
比較可笑的是微信的sdk包是支援ipv6的,但是微信本身並不支援ipv6,所以說,即便你替換了最新的sdk包,在ipv6網路下還是不能用微信分享,因為你的app應用在ipv6網路環境下調不起微信,也就分享不了了,這個問題微信應該意識到了,估計後邊的版本應該也是支援ipv6的吧。
6、QQ
官方文件好像也沒有說ipv6的事啊
7、次奧!支付寶sdk支援了ipv6,上午下載的時候沒看見!!!
可是下載的時候總是打不開.zip的壓縮包。。。叫別人幫忙下載了一份
command+B編譯無錯誤提示。應該沒事。
8、百度地圖
根據比較,新的sdk包沒有了bundle檔案。需要將舊包的bundle檔案拷貝進來。
各個sdk下載地址:
總之,對於ipv6_Only的處理就是這樣辦的,從兩大方面進行自己稽核:自身網路請求和三方涉及網路請求。
關於AFNetworking是否支援ipv-6,有網友如是說:
可見,AFNetworking是支援ipv-6的。但是,關於支援ipv6的afn版本有如下說明:
另外有網友遇到這樣一個問題:這裡還遇到一個坑,內網的訪問下是不可能連線到自己的伺服器,後面測試一下公網阿里雲的伺服器,能夠正常連線,這個可能是DNS64在搜尋ipv6的過程中,並沒有搜尋內網的網路,導致內網連線失敗(這裡卡了半天, 切記)(這個問題筆者並沒有遇到,也沒有親測,大家注意一下這個問題,如果遇到了,知道是怎麼回事。)
最後,有的網友上線被拒了,可能是因為app的伺服器端沒有支援ipv6,就此問題,我諮詢了我們的技術經理,技術經理說“後臺(即伺服器)是要做ipv6的支援工作的”。但是具體是誰管,具體怎麼操作的我就不得而知了,這裡大家注意一下吧:不僅僅是客戶端這邊支援ipv6,上線之前最好問一下後臺端是不是做了相應的ipv6的支援。
這裡關於自己的伺服器是否支援ipv6,有網友提供了一個方法,大家可以試一下。(謝謝杭州-托兒索被拒6次的ipv6,爭得托兒索的同意,進行轉發)
前兩條說的就是我們的方案:專案裡面涉及和網路有關的進行一一排查。
第三條是在自己電腦上判斷是否伺服器支援ipv6的。親測,在終端得到下圖:
按照托兒索的說法,上圖的位置那裡顯示NOERROR說明伺服器沒有問題,也是支援ipv6的。如果有錯的話,可以按照下邊提供的表格進行對照。
再看託兒所的結論,我們會得到下邊的結論,涉及支援ipv6的其實是包括三個方面的:
1、專案裡面涉及和網路有關的網路請求是否支援ipv6。
2、專案裡面涉及和網路有關的sdk是否支援ipv6。
3、專案的伺服器是否支援ipv6。
最後,說一下關於托兒索的命令列:終端 dig +nocmd + nostats 你的域名 AAAA,我在網上查了一下發現有這麼個命令列:
為了方便複製:digwww.isc.orgAAAA +short
得到的結果直接就是一個ipv6格式的,不知道不支援ipv6伺服器的是不是列印出來的是不是ip地址(有待驗證)。如果誰驗證了,希望告知我一聲。在此謝謝了。所以也可以用這個命令列側面驗證伺服器是否支援ipv6。
6月14號23:30提的包,6月16號白天查到上線了。說明一點:這樣處理ipv6的方法是可行的。
最後,哪裡不對的地方可以給我留言,我會及時改進的,謝謝大家。
原文連結:http://www.jianshu.com/p/97b205933c15
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。
相關文章
- ODC 3.4.0 現已上線,讓資料庫開發更簡單資料庫
- 如何釋出已經寫好的react專案React
- 如何保證前端專案上線後的安全?webfunny已總結前端最關鍵的12大指標前端Web指標
- 靜態密碼已經”OUT”探索身份驗證新方式密碼
- YII2檔案上傳驗證,簡單封裝封裝
- vue專案中使用token的身份驗證的簡單實踐Vue
- oracle goldengate 證書已經到手OracleGo
- frp內網穿透(已驗證)FRP內網穿透
- Git 忽略已經提交的檔案Git
- 同是網上衝浪的,你竟然不知“同城拓客專案”已經這麼火了?
- 您的檔案加速專車已停穩,請上車!!!
- 面試時如何不簡單de介紹自己的專案經驗?面試
- 李俊版“熊貓燒香”專殺工具已透過公安驗證
- 在 SpringBoot 專案中簡單實現 JWT 驗證Spring BootJWT
- 如何取消 SAP ALE 中已經配置的跨系統主資料驗證
- 請教關於已經完成專案重構的問題!
- 大佬,您的選房系統已上線
- uni-app專案uview的表單驗證在小程式上不生效APPView
- golang版supervisor 已經線上上使用Golang
- CentOS 停服,龍蜥社群已上線解決方案專區CentOS
- Python-PyCharm中的專案移除 已經完全刪除的方法PythonPyCharm
- OpenSSL專案路線圖【已翻譯100%】(2/2)
- git移除已經加入版本控制的檔案Git
- 新ChatGPT搜尋:search.chatgpt.com域與SSL證書已上線ChatGPT
- 由於無法驗證釋出者,所以windows已經阻止此軟體Windows
- 重磅 | 吳恩達Coursera新課已經上線,開啟全民AI時代!吳恩達AI
- 我已經理解了併發和並行的區別並行
- jquery驗證簡單示例jQuery
- 如果ORACLE已經連線不上如果產生一個資料庫級別的systemstate dump檔案Oracle資料庫
- 哪裡可以下載Mac上最好用的前端設計軟體?Zeplin已經上線!Mac前端
- git列出所有已經跟蹤檔案Git
- 口袋無人機DOBBY:我的“人臉識別”已上線無人機
- 聖誕禮物清單:機器學習開源專案及框架已打包好!機器學習框架
- 那些已經逝去的專業軟體研發精神
- Doxygen簡單經驗談。。。
- 【經驗分享】如何守住專案管理的質量“底線”?專案管理
- 【專案經驗】--環保專案
- “Java已死”的簡史Java