App審核被拒——Ipv6相關
? ? ? ? 首先具则,檢測App是否支持IPv6。
? ? ? ? 教程1:連網線建立ipv6測試環(huán)境啦撮。
? ? ? ? 教程2:無網線建立ipv6測試環(huán)境
? ? ? ? 官方文檔:連網線建立ipv6測試環(huán)境谭网。
? ? ? ? 若是測試通過,則說明客戶端應用在IPv6網絡下赃春,是(基本)沒有問題的愉择。但是此操作無法驗證服務器能夠對IPv6網絡做出正確的響應。
? ? ? ? 若是IPv6測試環(huán)境測試沒有通過织中,解決方案:
? ? ? ? ① 更換第三方的SDK至最新版本锥涕。支付寶支付,微信支付狭吼,第三方登錄层坠、分享,環(huán)信等刁笙。
? ? ? ? ② 老版本的網絡請求函數破花。ASI,AFN疲吸。注意:確認IPv6搭建連接是否正確座每,所有功能是否在IPv6下都測試了,App需安裝在iPhon6以上的機器測試摘悴,iPhon5連不上IPv6 wifi峭梳,搭建IPv6可以使用Mac連接網線(教程1)或Mac連無線(教程2)。
? ? ? ? ③ socket請求適配IPv6蹂喻,我們這暫時沒有使用這方面葱椭,可略過此操作捂寿。參考。
? ? ? ? ④?在IPv6下挫以,測試App所有界面者蠕,哪里網絡連接失敗就換或者改對應的代碼窃祝。
? ? ? ? 一般掐松,這些操作后,App通過IPv6測試是沒問題的粪小。
? ? ? ?還需要檢測服務器是否支持IPv6大磺。打開終端,執(zhí)行dig +nocmd +nostats 域名 AAAA
? ? ? ? 若執(zhí)行后探膊,status對應的碼是NOERROR杠愧,則基本沒問題。如果返回的響應是SERVFAIL逞壁,在已經驗證了客戶端沒有問題前提下流济,剩下的就是運維、后臺的工作了腌闯,需要服務器更改DNS配置绳瘟,直到穩(wěn)定返回NOERROR。
? ? ? ? 以上操作跑一遍后姿骏,提交審核糖声,還是并不能保證審核百分之百能過。對策:
? ? ? ? ① 運維/服務器參考:針對蘋果官方ipv6審核的綜合解決方案?及內部鏈接分瘦;
? ? ? ? ② 拍視頻給審核人員蘸泻,視頻內容需詳細:搭建環(huán)境的過程(上面教程1或者2的操作過程)。手機打開飛行模式嘲玫,正確連接電腦wifi的過程悦施,所有標記搭建IPv6環(huán)境搭建成功的畫面,App所有界面(都可以加載數據)運行良好的狀態(tài)的畫面去团。視頻展示給審核人員的方法:① 視頻傳到youtwobe歼争,把視頻鏈接Reply給蘋果。② 直接Reply視頻文件壓縮打包給蘋果渗勘。我在用戶端1.0版提交審核時使用過這個方法沐绒,審核通過(注:我們的用戶端1.0被拒,蘋果給出的不是IPv6)旺坠。
? ? ? ? 客戶端代碼部分是咱們開發(fā)者自己解決乔遮。至于服務器端無法解決,有必要找專業(yè)人員參與取刃。
? ? ? ? 最后蹋肮,IPv6的整體流程:
? ? ? ? 1)先搭建IPv6測試環(huán)境出刷;
? ? ? ? 2)確保服務器支持IPv6;
? ? ? ? 3)再把每個界面點一下,觀察所有的網絡是否有異常坯辩,哪里不會(對)點(修改或者更換)哪里馁龟;
? ? ? ? 4)服務器端無法解決,有必要找專業(yè)人員參與漆魔。
? ? ? ? ?一個情況坷檩,我們的用戶端App 2.0第一次提交審核被拒,蘋果給出原因IPv6改抡。情況分析:2016年12月31日提交審核矢炼,在提交審核之前,測試所有流程均可跑通阿纤。2017年1月6日句灌,蘋果給出審核結果,是IPv6欠拾,登錄界面無法登錄進入App胰锌。測試后發(fā)現:在iOS10.0的真機上,所有流程還是沒問題藐窄。在10.3的模擬器或者真機上出現問題资昧。糾結一番后,向后臺要來證書枷邪,xxx.crt榛搔。需要把這個.crt文件轉成.cer或者.der文件。打開終端:
.crt轉.der:openssl x509 –in xxx.crt文件路徑-out xxx.der文件路徑-outform DER
.crt轉.cer:openssl x509 -in xxx.crt文件路徑-out xxx.cer文件路徑-outform DER
當我把證書轉換后东揣,在“鑰匙串訪問”中查看此證書践惑,可以看到:
? ? ? ? 也就是由不被信任的簽發(fā)者簽名頒發(fā)的。查一下StartCom嘶卧,這是被沃通收購的機構(http://digi.163.com/16/1102/09/C4RVPJA1001687H3.html)尔觉。沃通和StartCom由于涉及到一些非法簽名的案例,先后被蘋果和谷歌取消信任芥吟,等待其悔過自新……至于什么時候能恢復信任侦铜,還是未知數;
? ? ? ? 把請求的https://ssl.heartbook.com.cn放到Safari里钟鸵,第一次有“此網址不被信任钉稍,是否繼續(xù)”的提示;
? ? ? ?另外棺耍,檢測HTTPS服務器是否符合ATS特性中的要求:終端執(zhí)行:nscurl --ats-diagnostics --verbose?https://xxx.com
? ? ? ? 截圖是檢測我們的HTTPS服務器贡未,TLSv1.0 /1.1 /1.2,result均為FAIL。原因:不受信任的證書俊卤,通不過ATS的檢測嫩挤。
? ? ? ? 那么,我們的用戶端App2.0審核被拒的原因消恍,是服務器證書不被信任造成的岂昭。
? ? ? ? 解決此問題的方法:
? ? ? ? ① 通過代碼來調整,信任服務器的證書(我的解決辦法是使用的這個方法)狠怨。個人覺得壞處是:以后的每個App里面都要這么設置约啊,或者蘋果又要修改什么后會有未知情況發(fā)生,影響已上線的App取董,需要重新發(fā)版本才能修復線上棍苹,但重新發(fā)版本又需要一定的審核時間无宿。
? ? ? ? 首先茵汰,按上文步驟,向服務器要證書孽鸡,轉成.cer蹂午,把.cer文件拖到工程里。我們的請求工具是用AFnetworking封裝的類彬碱,修改此類豆胸,添加代碼。關鍵代碼:在AFHTTPSessionManager實例化前巷疼,設置securityPolicy.allowInvalidCertificates = YES;(截圖中handle是AFHTTPSessionManager)晚胡。
? ? ? ? ② 服務器端使用受信任嚼沿、合法的證書估盘。使用這個解決方案,可以說治標治本骡尽。App端基本什么都不用管遣妥,http改成https就OK。個人覺得好處:如果蘋果官方做有關這方面的改動攀细,對已上線的App影響不會太大箫踩。起碼出問題受影響的線上App不用重新發(fā)版本,只需服務器端做相應的修改谭贪,即可修復境钟。
? ? ? ? 補充一點:解決Mac Pro無法插網線上網( 不是廣告 *(→ _ ←)* )。
? ? ? ? 由于Mac自身機身厚度的限制俭识,使機身本身無法直接連接網線慨削。那么就需要一個外接網線轉換頭,我使用的是綠聯的產品(綠聯USB百兆網卡)。
? ? ? ? 如果Mac是第一次是使用這個產品理盆,需要安裝驅動痘煤。驅動下載連接:http://www.lulian.cn/download/26-cn.html。下載時選擇Mac OX 10.*對應的驅動猿规。驅動安裝是類似Windows傻瓜式的安裝方式衷快,一路下一步,最后“完成”姨俩,重啟電腦蘸拔。
? ? ? ? 重啟后,插上設備环葵,連上網線调窍,打開系統偏好設置–網絡–點擊左下角的“+”號–點開接口(可以發(fā)現別安裝驅動前多了一個選項:USB以太網,選之)-服務名稱(自己起個名字)-創(chuàng)建即可张遭。
參考: