1. 程式人生 > >關於IOS必須支援ipv6網路的爬坑經歷

關於IOS必須支援ipv6網路的爬坑經歷

前不久,ios稽核規定,APP一定要在ipv6的網路上執行才能通過稽核。(以本人多年的開發經驗,已經預想到前方必定有大坑!!   於是查了一下ipv6的定義:    什麼是IPv6    引自維基百科:“網際網路協議第六版(IPv6)是最新版的網際網路協議(IP),這個通訊協議提供了身份驗證和計算機在網路上的定位系統以及因特網傳輸。”裝置可   以運轉在IPv4-only(先前的標準)或IPv6-only的網路上,或者同時支援兩者。蘋果的新的要求意味著應用必須能夠運轉在一個IPv6-only的網路上。   好吧!也不過如此(其實作者內心一臉懵逼,這是啥??????)   還有unity官方也發出申明,他們是支援ipv6網路的!詳細地址參考:https://blogs.
unity3d
.com/cn/2016/05/10/unity-and-ipv6-support/
  作者也就沒太在意,可能是自己想多了....... 然後坐等APP通過稽核,但是結果是: apple發來郵件,“您的APP不支援IPV6網咯,請您解決問題後再提交稽核.....”,   (好吧,肯定沒那麼簡單)   然後檢測在unity使用httpwebrequest 這個類時,伺服器一直無法連線到.........    怎麼辦好呢?只能把有關於httpwebrequest 的程式碼換成WWW或者UnityWebRequest的寫法了,我用的是unity5.2版本,這兩個方法是可以在ipv6網路下面使用的,但是坑來了,由於專案中我們涉及到斷點續傳功能,這個功能
WWW或者UnityWebRequest是無法寫的......(天啊!!),所以換種寫法這個想法已經被否決了,那怎麼辦了?
  於是作者查閱了各種文件,翻閱了各個網站,終於在一個偏僻的外國網站看到一個哥們和我遇到了相同的問題,然而。。。。帖子下面並沒有人回覆。。。   後來,看了官方的解釋,好像是unity版本的問題,所以作者決定更新unity版本,更新到unity5.3.5,(現在蘋果更新unity,網路不好,網路經常斷,下了很久才下載好),這下應該解決問題了吧?   作者還是太天真了,因為我們訪問伺服器用的是固定的IPV4地址,如xx.xx.xx.xx,所以還是無法訪問,然後我這才去申請了伺服器的域名,該為用域名訪問伺服器,這下才真的可以用
httpwebrequest來做斷點續傳的下載!
  很多人以為這就解決問題了吧!其實後面有個更大的坑來了........   由於更新了unity,所以之前用5.2打包的Assetbundle的shader全部丟失了,必須要用5.3.5同版本的unity 再重新打包一次才行(不要和我說什麼高版本可以相容低版本的鬼話,這個unity官方也說了會存在這個問題)   所以我們成千上萬個Assetbundle都重新打包,上傳.........   好吧,終於解決了,等等!為什麼我們的音訊檔案都發不出聲............................   unity5.3.5還有一個驚天巨坑,那就是如果你用Assetbundle.LoadAsyncAsset非同步載入資源的方式去載入資源包,無論怎樣都載入不了資源,而我們載入音訊時都是用非同步載入的方法(此時作者內心已經奔潰!!!!!!!!!)  只能把程式碼裡面所有用非同步載入的指令碼都改成同步載入了!!   最終,到此才正真解決問題!!!   希望這篇文章對有類似情況的同行有所幫助,因為這個情況網上真的沒有相關介紹,哥哥也只能幫你們到這了。