蘋果公司規(guī)定6.1號(hào)之后,所有上線的應(yīng)用需要支持IPv6,于是公司就讓我來(lái)適配以前的一個(gè)老項(xiàng)目,這個(gè)項(xiàng)目最新版本是一年之前的汤功,具體官方文檔可查看《適配IPv6:官方文檔(一)》建議兩篇文章一起看效果好點(diǎn)。
這里主要從以下幾個(gè)方面來(lái)寫
一、分析項(xiàng)目中那些東西需要適配
1.網(wǎng)絡(luò)請(qǐng)求
由于項(xiàng)目比較老兽赁,項(xiàng)目中使用的是ASIHttprequest,雖然ASI現(xiàn)在沒(méi)有人維護(hù)了冷守,但還是能在項(xiàng)目中使用刀崖,和AFNetWorking 相比,它是基于CFNetwork,可以直接適配IPv6拍摇,新項(xiàng)目建議直接使用AFN比較好亮钦,AFN2.0以上也是支持IPv6的。
2.網(wǎng)絡(luò)監(jiān)測(cè)這個(gè)庫(kù) reachability
reachability在蘋果官方可以看到最新的版本已經(jīng)是5.0了充活,完全支持IPv6,項(xiàng)目中的還是2.2版本蜂莉,需要進(jìn)行適配處理蜡娶。(IPv6測(cè)試的時(shí)候發(fā)現(xiàn)需要適配)
由于項(xiàng)目中用到了一個(gè)第三方庫(kù),這個(gè)庫(kù)主要是用來(lái)查詢股票的映穗,并且是在他們基礎(chǔ)庫(kù)的基礎(chǔ)上為我們公司單獨(dú)定制的窖张,最不好處理的是reachability這個(gè)類被封裝進(jìn)去了。而提供這個(gè)庫(kù)的公司的代碼也是在不斷更新的蚁滋。(后來(lái)和他們技術(shù)聊知道一個(gè)月8個(gè)小版本)
當(dāng)時(shí)想的思路是直接替換reachability這個(gè)類為最新版本宿接,然后重新打包文件。想想總是簡(jiǎn)單的辕录,這樣主要出現(xiàn)了兩個(gè)問(wèn)題睦霎,一是reachability從2.2到5更新之后,方法什么的有變動(dòng)走诞,庫(kù)里面引用的地方要重新調(diào)用整個(gè)include文件(600個(gè)頭文件)副女。二是他們的老版本找不到了地消,只有最新的版本撵彻,需要在他們最新版本基礎(chǔ)上重新加入以前定制的文件。我也是第一次見(jiàn)include 頭文件除了.h還有很多.m文件梯澜,也許真是為了方便吧姻锁,讓人很難理解枕赵。
其實(shí)一個(gè)很簡(jiǎn)單的問(wèn)題,解決起來(lái)一個(gè)坑接一個(gè)坑位隶,主要是最新sdk和項(xiàng)目中sdk相差太大拷窜,又是定制的〗Щ疲花費(fèi)時(shí)間比較多篮昧,用了兩天時(shí)間。
3.第三方SDK
項(xiàng)目中使用的第三方有笋妥,極光懊昨,友盟和Share,極光和友盟直接去官網(wǎng)下載,重新集成即可春宣。
Share在集成的時(shí)候由于版本分為2.x和3.x,項(xiàng)目中使用的是2.x,3.x最新是支持IPv6,如果剛開(kāi)始直接換成3.x,項(xiàng)目中很多代碼都要改酵颁。 后來(lái)分析的一下,分享主要集成了微信和新浪月帝,我直接更換他們最新的.a文件是否可以躏惋?后來(lái)資訊了share技術(shù),告知這樣做是可以的嚷辅,完美簿姨。其他項(xiàng)目中第三方也一樣。
4.IP地址
為了適配IPv6,項(xiàng)目中要把IP地址換成域名處理
二扁位、搭建并測(cè)試IPv6
這里小小偷懶了下准潭,直接復(fù)制的圖,親測(cè)可行
使用你的MAC建立本地的IPv6 Wi-Fi 網(wǎng)絡(luò)
確認(rèn)你的MAC連接到了互聯(lián)網(wǎng),并且不是通過(guò)Wi-Fi.(插入網(wǎng)線即可)域仇,注意不要是有代理才能上網(wǎng)的刑然,在公司需要設(shè)置代理才可以上網(wǎng),整了一天沒(méi)整好殉簸,回家使用網(wǎng)絡(luò)直接搭建成功。
從Dock中運(yùn)行系統(tǒng)首選項(xiàng)
按住Option按鍵并且同時(shí)點(diǎn)擊共享 ,不要松開(kāi)Option按鍵
打開(kāi)設(shè)置 共享選項(xiàng)
從共享服務(wù)中選擇互聯(lián)網(wǎng)分享選項(xiàng)
配置互聯(lián)網(wǎng)共享
釋放Option按鍵
選中 創(chuàng)建NAT64網(wǎng)絡(luò)復(fù)選框
打開(kāi)本地的IPv6 NAT64 網(wǎng)絡(luò)
選擇一個(gè)提供互聯(lián)網(wǎng)鏈接的網(wǎng)絡(luò)接口, 例如雷電網(wǎng)卡
選擇一個(gè)網(wǎng)絡(luò)接口共享
選擇Wi-Fi 復(fù)選框.
打開(kāi)通過(guò) Wi-Fi共享
點(diǎn)擊 Wi-Fi 選項(xiàng), 配置網(wǎng)絡(luò)名稱與密碼等信息
訪問(wèn)WI-FI設(shè)置選項(xiàng)
設(shè)置本地WI-FI
選擇互聯(lián)網(wǎng)共享復(fù)選框,開(kāi)啟你的本地網(wǎng)絡(luò)
開(kāi)啟互聯(lián)網(wǎng)共享
當(dāng)提示確認(rèn)開(kāi)始分享的時(shí)候,點(diǎn)擊開(kāi)始
開(kāi)始分享
一旦共享處于活動(dòng)狀態(tài)沽讹,你應(yīng)該看到一個(gè)綠色的狀態(tài)指示燈般卑,Internet共享標(biāo)簽:開(kāi)。在無(wú)線網(wǎng)絡(luò)菜單中爽雄,您還將看到一個(gè)小的蝠检,淡淡的箭頭朝上,表明互聯(lián)網(wǎng)共享已啟用挚瘟。你現(xiàn)在有一個(gè)IPv6NAT64網(wǎng)絡(luò)叹谁,并可以從其他設(shè)備,以測(cè)試你的應(yīng)用程序連接到它乘盖。
互聯(lián)網(wǎng)共享標(biāo)識(shí)
手機(jī)連上之后焰檩,DNS就是IPv6網(wǎng)絡(luò)了,運(yùn)行app測(cè)試即可订框。
參考文章地址:
ASI是否支持:http://stackoverflow.com/questions/37063252/does-asihttprequest-support-ipv6-only
Reachability官方:https://developer.apple.com/library/ios/samplecode/Reachability/Listings/LICENSE_txt.html#//apple_ref/doc/uid/DTS40007324-LICENSE_txt-DontLinkElementID_3
DNS64和NAT64
http://www.ipv6bbs.cn/thread-170-1-1.html