關於IPV6稽核被拒的完整分析
自從去年6月1號Apple明文規定所有開發者提交新版本都必須支援IPV6-Only的網路,估計很多iOS開發者都遇到由於IPV6網路不支援造成的稽核被拒的情況, 我被坑的不輕啊, 下面就來分析一下IPV6問題如何解決。
首先附一個稽核被拒的原文:
Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app when reviewed on iPad running iOS 10.3.2 on Wi-Fi connected to an IPv6 network.
Specifically, the app launched to a blank page.
Please see attached screenshots for details.
Next Steps
To resolve this issue, please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify any issues, then revise and resubmit your app for review.
If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.
For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.
大意是在iPad上執行iOS 10.3.2 wi - fi連線到IPv6網路, 應用程式啟動是一個空白頁。請在裝置上執行您的應用程式,連線到IPv6網路, 然後修改並重新提交你的應用程式進行審查。
一. 簡單介紹一下IPV6以及如何搭建檢測環境
首先IPV6,是對IPV4地址空間的擴充。目前當我們用iOS裝置連線上Wifi、4G、3G等網路時,裝置被分配的地址均是IPV4地址,但是隨著運營商和企業逐漸部署IPV6 DNS64/NAT64網路之後,裝置被分配的地址會變成IPV6的地址,而這些網路就是所謂的IPV6-Only網路,並且仍然可以通過此網路去獲取IPV4地址提供的內容。簡單來說就是IPV4不夠用了, 要換IPV6, 這從蘋果一向的以使用者體驗為主出發, 其實也是為了讓使用者能用著舒服;
測試是否支援IPV6網上已有更多詳細的方法, 照著搭建就行, 下方附搭建環境的方法:
二. 解決辦法
總的來說有三個方面的問題:
- 伺服器不支援IPV6
- 專案中匯入的第三方SDK不支援IPV6
- 專案中涉及到的網路請求不支援IPV6
除了這些, 還有些其他因素, 比如蘋果正在稽核, 而你們的後臺在部署介面, 這種才是真的坑爹?啊, 不多說, 感覺眼淚止不住往下流了;
1. 伺服器
①檢測伺服器是否支援IPV6
終端輸入以下程式碼:(參照網上方法)
dig +nocmd + nostats 你的域名 AAAA
這是看看你們的伺服器在IPV6下是否有回應。
有錯誤的話, 對照下面的表:
改變DNS的配置,直到穩定返回 NOERROR 為止。
②更改伺服器配置
阿里雲 Ubuntu 支援 IPv6 的完整步驟
2. 第三方SDK
這些問題一般會出現在那些維護的APP裡面, 由於是初次開發APP的人所處的時間相對較遠, 所以專案裡所用的SDK會有一些功能缺失; 下面介紹幾個第三方SDK的問題;
①Reachability
蘋果都發話, 這個當然要改了;
新的sdk包將這個方法幹掉了:reachabilityForLocalWiFi,只要自己的程式碼中幹掉就行了,沒什麼影響。
原因如下介紹:
#pragma mark reachabilityForLocalWiFi
//reachabilityForLocalWiFi has been removed from the sample. See ReadMe.md for more information.
//+ (instancetype)reachabilityForLocalWiFi;
②JPush極光推送(v2.1.7開始支援)
這個是我們專案裡遇到的問題, SDK版本低了, 不支援IPV6;
從圖中可以看出, 2.1.7版本才開始支援IPV6, 而我們版本是2.1.0; 唉?, 乖乖升級咯;
附:
極光文件地址
③微博SDK(v3.1.4開始支援)
而且從官方文件上發現, 更新SDK, 實際上是更新Reachability庫;
附:
微博SDK文件地址
④友盟(v5.2.1開始支援)
附:
友盟文件地址
⑤微信(v1.5開始支援)
有簡友說微信的sdk包是支援ipv6的,但是微信本身並不支援ipv6,所以說,即便你替換了最新的sdk包,在ipv6網路下還是不能用微信分享,因為你的app應用在ipv6網路環境下調不起微信,也就分享不了了,這個問題微信應該意識到了,估計後邊的版本應該也是支援ipv6, 這個大家可以注意下;
附:
微信文件地址
⑥QQ(未說明)
從變更歷史也看不出從哪個版本開始支援的, 估計是覺得這點玩意兒不值得說吧. 大佬們的世界真是看不懂, 大家就按時間來估計吧;
附:
QQ文件地址
⑦支付寶(未說明)
看下載的demo裡面, 版本更新歷史對具體哪個版本更新的未說明, 萬一是最近被蘋果打壓的才更新的, 也不一定, 反正最新版本肯定是有了, 而且還多了些其他功能;
附:
支付寶文件地址
⑧百度地圖(v3.0.0開始支援)
附:
百度地圖文件地址
⑨環信(v3.1.3開始支援)
附:
環信文件地址
⑩科大訊飛語音(v1.133開始支援)
附:
科大訊飛語音文件地址
當然還有很多其他的SDK, 這裡就不一一列舉了, 根據專案裡用了哪些, 看下官方文件SDK版本歷史比對一下就行;
3. 網路請求
其實對於ipv6_Only的處理,從兩大方面進行自己稽核:自身網路請求和三方涉及網路請求, 畢竟是由於網路問題;
關於AFNetworking是否支援IPV6, 下面是一網友的說法:
而版本支援是在3.0以後;
當然, 聽說網友還遇到了其他的問題:(這個我沒遇到, 不過還是在這裡記一下?)
內網的訪問下是不可能連線到自己的伺服器,後面測試一下公網阿里雲的伺服器,能夠正常連線,這個可能是DNS64在搜尋ipv6的過程中,並沒有搜尋內網的網路,導致內網連線失敗;
如果這些還是沒能解決你的問題, 可以看看下面這篇文章:
http://www.jianshu.com/p/a6bab07c4062
最後感謝參考文章作者的分享, 希望攻城獅們早日解決bug, 繼續擼程式碼, O(∩_∩)O哈哈~
本文參考文章:
iOS 被拒6次的ipv6
Ipv6_Only 簡單的理解(已驗證,專案已經上線)
推薦閱讀文章:
iOS應用支援IPV6,就那點事兒
相關文章
- iOS上線IPv6被拒iOS
- iOS 稽核被拒解決方案總結iOS
- App Store 9月稽核被拒的原因有哪些 ?APP
- iOS APP上架被拒重新提交稽核流程iOSAPP
- iOS APP上架被拒重新提交稽核教程iOSAPP
- 金融 App 稽核被拒原因及解決方案彙總APP
- AppStore稽核被拒原因及解決辦法APP
- 告別被拒,如何提升iOS稽核通過率(上篇)iOS
- IOS - 如何新增自動續費訂閱,避免稽核被拒iOS
- 蘋果稽核被拒——第三方QQ登入的五種情形蘋果
- 蘋果 App Review 團隊稽核機制曝光!40% App 將被拒審?!蘋果APPView
- 蘋果稽核App被拒——iPhone 應用在 iPad 上不能正常顯示蘋果APPiPhoneiPad
- iOS 最新稽核被拒及解決方案 (包括2.1大禮包)iOS
- 精華閱讀第 12 期 | 最新 App Store 稽核指南與10大被拒理由?APP
- 關於廣電釋出關於APP需要版本稽核APP
- 程式被拒絕的原因
- iOS稽核拒絕蘋果官方原因詳解iOS蘋果
- 對於putty連線ubuntu被拒絕的一個解決方法Ubuntu
- IBM最終被拒。。。。。IBM
- 蘋果稽核ipv6海外解決思路-About APP Store蘋果APP
- Oracle基於值的稽核Oracle
- IPv6,AppStore 稽核不是唯一選擇它的原因APP
- APP後設資料被拒APP
- PhpMyAdmin訪問被拒絕PHP
- 網上平臺網賭客服說我注單異常提款一直稽核被拒怎麼辦?
- 關於Partition列被更新的問題
- 針對蘋果最新稽核要求為應用相容IPv6蘋果
- 芻議IPv6的安全問題關鍵主機易被駭客看中(轉)
- 關於jsp拒絕訪問的問題,謝謝大家JS
- mac關ipv6Mac
- MacBook上使用ssh localhost被拒絕Maclocalhost
- websocket連線mina被拒絕Web
- ios資料被拒,神級操作~~iOS
- 最近被蘋果拒絕的條款和解決方法蘋果
- 關於運營商、CDN、LTE等IPv6的發展狀況
- 因為這理由面試被拒,我不服!面試
- 接專案被拒,不代表私人恩怨
- 關於root(其他)使用者拒絕登陸mysql的處理方法MySql