從去年6月份開始,不斷聽說(shuō)有其他公司的iOS版本因IPv6的問(wèn)題被拒,但是由于我們很早就從網(wǎng)絡(luò)層適配了IPv6纵诞,所以將近一年時(shí)間,發(fā)布了20多個(gè)版本培遵,從來(lái)沒(méi)有因此被拒審過(guò)浙芙。直到周二凌晨收到一個(gè)iTunesConnect推送的New Message。
由于是大半夜籽腕,所以看的迷迷糊糊嗡呼,隱約看出是IPv6問(wèn)題,但是當(dāng)時(shí)心里沒(méi)當(dāng)回事皇耗,因?yàn)橛X(jué)得八成是一些Misunderstood問(wèn)題南窗,明天回復(fù)一下就行。
Day1:
在地鐵的時(shí)候郎楼,就把回復(fù)的內(nèi)容撰寫好了万伤,大意如下:
“由于我們的服務(wù)器在中國(guó),可能是你們的網(wǎng)絡(luò)和我們的服務(wù)器間有很大的延遲呜袁,還有可能是凌晨的時(shí)候服務(wù)器瞬時(shí)無(wú)法訪問(wèn)導(dǎo)致的壕翩,請(qǐng)重試”。
另外還截了幾張運(yùn)行Testflight版本沒(méi)有問(wèn)題的圖傅寡。一到公司就Reply給了蘋果Review團(tuán)隊(duì),然后就去干別的去了北救。
晚上10點(diǎn)時(shí)候荐操,突然收到一條iTunesConnect的New Message,打開一看珍策,暈托启,還是老問(wèn)題,于是趕快掏出手機(jī)攘宙,看了一下APP屯耸,一切正常,心里略微有些慌蹭劈,不過(guò)立刻Relpy了一下疗绣,內(nèi)容和上午發(fā)送的大概一樣,就是有些急铺韧,沒(méi)有敬語(yǔ)多矮,也沒(méi)有太關(guān)注語(yǔ)法。然后等待。
晚上11點(diǎn)的時(shí)候塔逃,New Message來(lái)了讯壶,和上一條一模一樣。覺(jué)得情況有些不妙湾盗,于是查閱了相關(guān)資料伏蚊,感覺(jué)這回蘋果動(dòng)真格的了,不但APP要支持IPv6格粪,而且網(wǎng)絡(luò)和服務(wù)器都要支持躏吊。之前一直沒(méi)有被拒難道是運(yùn)氣問(wèn)題?心中有些詫異匀借,不過(guò)轉(zhuǎn)過(guò)頭來(lái)想想別人也遇到類似的問(wèn)題了颜阐,而且網(wǎng)上有一堆方案,總有一款是適合自己的吓肋,所以心里也踏實(shí)了許多凳怨。
Day2:
一到公司,立刻測(cè)試了一下我們的服務(wù)器對(duì)IPv6支持情況:使用的是ipv6-test.com是鬼,結(jié)果果然有問(wèn)題肤舞,DNS這塊就報(bào)錯(cuò)了,于是聯(lián)系運(yùn)維大神出面一塊解決均蜜。
我們討論了一下方案李剖,由于國(guó)內(nèi)除了教育網(wǎng)外,其他網(wǎng)絡(luò)都不支持IPv6囤耳,包括阿里云本身的網(wǎng)絡(luò)也不支持篙顺,最后決定租用一個(gè)國(guó)外的服務(wù)器(Linode)做IPv6的轉(zhuǎn)發(fā),最便宜的機(jī)器一個(gè)月5美金充择,成本很低德玫。
大約1個(gè)小時(shí),整個(gè)DNS和服務(wù)器都OK了椎麦,于是進(jìn)行一系列的測(cè)試:
- ipv6-test.com宰僧,通過(guò)
- Mac Mini做NAT64的轉(zhuǎn)發(fā),通過(guò)
- 6box vpn測(cè)試观挎,通過(guò)
嗯嗯琴儿,看樣子很順利啊,于是再次Relpy給蘋果審核團(tuán)隊(duì)嘁捷,等待結(jié)果造成。
晚上10點(diǎn)的時(shí)候,同樣的推送消息來(lái)了:依然被拒普气,此時(shí)有些沮喪谜疤,趕快掏出手機(jī)在IPv6下測(cè)試,一切正常啊。
穩(wěn)定穩(wěn)定情緒夷磕,聲淚俱下的寫了一個(gè)回復(fù)履肃,懇求蘋果爸爸網(wǎng)開一面。
晚上12點(diǎn)的時(shí)候坐桩,叮咚尺棋,還是熟悉的聲音還是熟悉的味道....,本來(lái)很困了绵跷,但此時(shí)毫無(wú)睡意膘螟,將所有細(xì)節(jié)在腦海里過(guò)了幾遍,突然一個(gè)激靈碾局,我們的客戶端生產(chǎn)環(huán)境都是Https的荆残,Linode上貌似沒(méi)有開443端口也沒(méi)有加Https支持,但是為啥白天測(cè)試時(shí)沒(méi)問(wèn)題呢净当?于是打開手機(jī)看了看内斯,發(fā)現(xiàn)果然是測(cè)試包沒(méi)有開啟Https導(dǎo)致的,低級(jí)失誤啊像啼,不過(guò)還是很高興俘闯,畢竟找到問(wèn)題原因了。
Day3:
一大早將問(wèn)題告知了運(yùn)維大神忽冻,于是把443端口打開真朗,https證書配好,用ipv6-test.com測(cè)試https站點(diǎn)僧诚,一切正常遮婶,用IPv6網(wǎng)絡(luò)訪問(wèn)了一下,稍有些慢湖笨,但是數(shù)據(jù)還是順利加載出來(lái)蹭睡。
上Linode看了看Nginx日志,嗯嗯赶么,都有。心里豁然開朗脊串,整天的工作效率都提升了辫呻。當(dāng)然還是要回復(fù)一下蘋果爸爸的:以最低的姿態(tài),畢恭畢敬寫明的原因琼锋,懇請(qǐng)重新審核放闺。
晚上10點(diǎn),叮咚缕坎,還是New Message怖侦,多么熟悉的配方。一種無(wú)力感從心底油然而生,到底是哪里出的問(wèn)題匾寝?上Linode看了看Nginx日志搬葬,并沒(méi)有任何記錄,也就是說(shuō)蘋果那邊的審核團(tuán)隊(duì)的請(qǐng)求根本就沒(méi)有成功到達(dá)我們的服務(wù)器艳悔!
此時(shí)我非常懷疑是蘋果爸爸的網(wǎng)絡(luò)問(wèn)題急凰,尤其是DNS無(wú)法正常解析到我們的IP地址。于是詢問(wèn)了其他公司的朋友猜年,大家也都遇到過(guò)類似的問(wèn)題抡锈,結(jié)論是蘋果那邊的網(wǎng)絡(luò)有時(shí)候確實(shí)不好,導(dǎo)致無(wú)法正確訪問(wèn)到國(guó)內(nèi)的服務(wù)器乔外。另外滴滴的iOS老大說(shuō)他們也剛剛遇到這個(gè)問(wèn)題床三,后來(lái)沒(méi)辦法,錄了個(gè)操作視頻上傳到Y(jié)outube上杨幼,最后終于通過(guò)了撇簿。呃,這樣也行推汽?有點(diǎn)想罵人补疑,不過(guò)總算還有成功案例,死馬當(dāng)活馬醫(yī)吧歹撒。
Day4:
使用QuickTime莲组,仔細(xì)錄制了一個(gè)視頻,展示如下步驟:
- 從Testflight下載
- 展示一下設(shè)置中的IPv6地址
- 登錄注冊(cè)
- 主要的幾個(gè)頁(yè)面展示
- Apple Pay支付
關(guān)鍵節(jié)點(diǎn)無(wú)一遺漏暖夭,然后把這個(gè)將近100M的視頻傳到Y(jié)outube上锹杈,并仔細(xì)的看了多遍,確保細(xì)節(jié)都關(guān)注到后迈着,懷著忐忑的心情竭望,重新Reply蘋果,大意如下:
“可能是你們美國(guó)的網(wǎng)絡(luò)到中國(guó)大陸延遲很嚴(yán)重裕菠,我們反復(fù)測(cè)試了整個(gè)過(guò)程咬清,確實(shí)沒(méi)有發(fā)現(xiàn)問(wèn)題,有視頻為證奴潘。另外旧烧,我們的用戶主要來(lái)自中國(guó),這邊基本還沒(méi)有IPv6的網(wǎng)絡(luò)画髓,所以不會(huì)存在你們看到的現(xiàn)象等等”
由于周末蘋果不上班掘剪,所以只能等待周一的結(jié)果了,現(xiàn)在做的只能是祈禱(莫名的感覺(jué)要是信個(gè)什么宗教的就好了奈虾,還有祈禱對(duì)象)夺谁。
update
晚上11點(diǎn)廉赔,pending for developer release消息彈出,終于過(guò)審了匾鸥。