蘋果應(yīng)用商店拒絕不支援 IPv6 的應(yīng)用的解決方法

新聞鏈接:
http://www.internetsociety.org/deploy360/blog/2015/06/apple-will-require-ipv6-support-for-all-ios-9-apps/

cocoachina上的討論鏈接:
http://www.cocoachina.com/bbs/read.php?tid=458416

原文如下:
蘋果應(yīng)用商店拒絕不支援 IPv6 的應(yīng)用的解決方法

written by: imays
translated by: coolspeed (weibo.com/coolspeed)

大家新年快樂!

話說這蘋果是從新年第一天起就開始了恐怖活動啊……雖然是去年已經(jīng)預(yù)告了的恐怖活動……—那就是“你們的應(yīng)用必須支援 IPv6煤搜,不然的話就拒絕通過審核葛作,嘿嘿”

直奔主題篮洁。如果不想被拒,你應(yīng)該這樣做才行:

  1. 使用網(wǎng)絡(luò)通訊框架磷斧;
  2. 避免使用 IPv4 專用的 API贝搁;
  3. 避免使用硬編碼地址。

來源:點擊鏈接跳轉(zhuǎn)

現(xiàn)在讓我們來逐條展開:


  1. 使用網(wǎng)絡(luò)通訊框架幅垮;

也就是是說推薦你使用 iOS SDK 自帶的,構(gòu)建于 socket 上層的網(wǎng)絡(luò)通訊框架尾组,或是第三方的網(wǎng)絡(luò)通訊框架忙芒。這樣,使用網(wǎng)絡(luò)通訊框架的話讳侨,上面的第 2 條大體上是不用操心的呵萨。如果你使用的是第三方的網(wǎng)絡(luò)通訊框架的話,一定記得詢問該框架的開發(fā)商:“你們支援 IPv6 嗎跨跨?”

作為網(wǎng)絡(luò)通訊框架其中之一的 ProudNet? 是支持 IPv6 的喲潮峦。自 2015 年 12 月的更新版本開始支持。ProudNet 的使用者如果要想支援 IPv6 的話,應(yīng)該使用 2015 年 12 月版本忱嘹,或更高的版本嘱腥。


  1. 避免使用 IPv4 專用的 API;

如果你親自編程 socket 層的話拘悦,記得不能使用 IPv4 專用 API爹橱。比如說,你不能使用如下這些 API (光是使用這些函數(shù)本身窄做,是否會成為蘋果方面拒絕通過應(yīng)用審核的事由,目前還不清楚慰技。反正 ProudNet 目前是全然不使用這些函數(shù)的)椭盏。

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()

如果要測試在 IPv6 的環(huán)境下是否運轉(zhuǎn)正常,你需要構(gòu)建 IPv6 only 的網(wǎng)絡(luò)環(huán)境吻商。方法有很多種掏颊。我們使用的是通過 Mac 機器的方法。


  1. 避免使用硬編碼地址艾帐。

蘋果使用的是“硬編碼地址”這樣的術(shù)語乌叶。不過這大體上只是對大眾友好的簡化說法。正確的學名其實應(yīng)該叫 IP literal柒爸。比方說形如 “11.22.33.44” 這種啦准浴。

另一方面,我們通常所說的 “hostname”捎稚,比方說“server1.mygame.com”這種乐横,學名叫 FQDN (fully qualified domain name)。

你問今野,通過“硬編碼地址”葡公,也就是我們所說的 IP literal 連入服務(wù)器的話會有什么樣的后果呢?一些 IPv6 網(wǎng)絡(luò)下的客戶端會連不上 IPv4 網(wǎng)絡(luò)下的服務(wù)器(雖說 iOS 9.2 以后這個問題會部分解決条霜,但是沒法保證在所有 IPv6 網(wǎng)絡(luò)下都沒問題)催什。

反之亦然—客戶端在 IPv4 下,服務(wù)器 IPv6宰睡。

至于連不上的原因嗎蒲凶,要從 NAT64 / DNS64 的聯(lián)動關(guān)系說起。因為內(nèi)容有點長拆内,這里就不贅述了豹爹。

那么應(yīng)該腫么辦呢?乖乖地聽從蘋果大人所“指示”(矛纹?)的臂聋。通過 FQDN 而不是 IPv4 literal 的連入的情況下,服務(wù)器要能夠接收『⒌龋客戶端連接服務(wù)器時則要使用 FQDN艾君。

舉例說明上面的內(nèi)容:

  • 11.22.33.44 ==> 蘋果會屏蔽你
  • server.mygame.com ==> Ok
  • 11:22:33:44:55:66:77:88 ==> 蘋果會屏蔽你

運維人員則要對每臺服務(wù)器設(shè)置 DNS 使每臺機器均有 FQDN 是吧?客戶端方面則要在連入服務(wù)器時使用 FQDN 而不是 IP literal 是吧肄方。

如果現(xiàn)階段對每臺機器賦予 FQDN 比較困難的話冰垄,ProudNet 提供如下的的應(yīng)急方案。

連入基于 ProudNet 的服務(wù)器時使用 IP literal权她,并額外輸入另一臺 IPv4 下的服務(wù)器 X 的FQDN虹茶,就行啦。服務(wù)器 X 并不會真的連入隅要,只是作為 DNS 檢索對象蝴罪,所以請放心。有了這個步清,就可以光用 IPv4 literal 也能連入服務(wù)器啦要门,雖然不能保證 100% 管用 [1]。

CNetClient* nc = CNetClient::Create();
p.m_serverIP = "11.22.33.44";
p.m_publicDomainName1 = "www.nettention.com";
p.m_publicDomainName2 = "www.baidu.com";
nc->Connect(p);

(C#也是可以的廓啊,這里不再贅述)

為什么光用 IPv4 literal 也能連上呢欢搜?因為實現(xiàn)了 NAT64 的“地址組合算法”。這個說來也比較長谴轮,這里也是略過 ^^

不管怎么說炒瘟,使用上述 API 始終只是緩兵之計,應(yīng)急措施第步。要徹底解決的話還是要聽從蘋果大人“指示”(唧领?)的那樣子,“”雌续。


番外:等到 IPv6 大量普及了以后斩个,路由器是不是就可以消失了?

如果 IPv6 大量普及了的話驯杜,路由器“在理論上”確實可以扔進歷史的回收站了受啥。路由器本身就是用來解決互聯(lián)網(wǎng)地址總數(shù)不夠用這個問題的其中一種方法而已。

但是鸽心。作為對每個 IP 地址明碼標價滚局,作為商品出售的網(wǎng)絡(luò)提供商來說,即使是 IPv6顽频,奸商們也不大可能會輕輕松松送你 IP 地址的藤肢。那么設(shè)置路由器的這種事兒也就不可避免啦。對路由器這塊比較強大的 ProudNet 也會繼續(xù)有存在的必要性的糯景。


那祝編程愉快~


2016.7.19
轉(zhuǎn)載上面的文章時嘁圈,IPV6的新規(guī)還沒有正式執(zhí)行省骂,并且到目前為止,已經(jīng)提交了多次審核最住,并且都沒有發(fā)生過問題钞澳;
不過最近一次提審被蘋果拒了,提示在登錄時網(wǎng)絡(luò)故障涨缚;重復(fù)提交一次轧粟,結(jié)果還是相同的問題被打回;
(這個問題很多人應(yīng)該都遇見過脓魏,在本地進行IPV6環(huán)境測試兰吟,都OK的,但是送到蘋果審核就連不上網(wǎng)絡(luò))
我的解決方法是:在被拒絕的通知下直接回回復(fù)自己測試ok的茂翔,并附上視頻片段混蔼;
結(jié)果第二天還真的通過了。這說明檩电,蘋果那邊還是會盡量協(xié)助開發(fā)者的。

另外府树,在網(wǎng)上收集了一些相關(guān)的討論:

阿里云技術(shù)論壇:
https://bbs.aliyun.com/read/284699.html?spm=5176.bbsr284699.0.0.yehNue

來自cocoachina上的討論:
http://www.cocoachina.com/bbs/read.php?tid-1684570-page-1.html

[1]: 在包括 Mac 機器在內(nèi)的部分客戶端 IPv6 路由器下正常工作俐末。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奄侠,隨后出現(xiàn)的幾起案子卓箫,更是在濱河造成了極大的恐慌,老刑警劉巖垄潮,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烹卒,死亡現(xiàn)場離奇詭異,居然都是意外死亡弯洗,警方通過查閱死者的電腦和手機旅急,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牡整,“玉大人藐吮,你說我怎么就攤上這事√颖矗” “怎么了谣辞?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沐扳。 經(jīng)常有香客問我泥从,道長,這世上最難降的妖魔是什么沪摄? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任躯嫉,我火速辦了婚禮纱烘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘和敬。我一直安慰自己凹炸,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布昼弟。 她就那樣靜靜地躺著啤它,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舱痘。 梳的紋絲不亂的頭發(fā)上变骡,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音芭逝,去河邊找鬼塌碌。 笑死,一個胖子當著我的面吹牛旬盯,可吹牛的內(nèi)容都是我干的台妆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼胖翰,長吁一口氣:“原來是場噩夢啊……” “哼接剩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萨咳,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤懊缺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后培他,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹃两,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年舀凛,在試婚紗的時候發(fā)現(xiàn)自己被綠了俊扳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡猛遍,死狀恐怖拣度,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情螃壤,我是刑警寧澤抗果,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站奸晴,受9級特大地震影響冤馏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寄啼,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一逮光、第九天 我趴在偏房一處隱蔽的房頂上張望代箭。 院中可真熱鬧,春花似錦涕刚、人聲如沸嗡综。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽极景。三九已至,卻和暖如春驾茴,著一層夾襖步出監(jiān)牢的瞬間盼樟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工锈至, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晨缴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓峡捡,卻偏偏與公主長得像击碗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子们拙,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于IPV6 隨著互聯(lián)網(wǎng)的迅速發(fā)展稍途,各種聯(lián)網(wǎng)設(shè)備總數(shù)的不斷增加,傳統(tǒng)的IPv4地址耗盡已經(jīng)是可以預(yù)見的未來睛竣,因此耗拓,...
    laitys閱讀 4,936評論 3 7
  • 一铐望、背景 WWDC2015蘋果宣布在iOS9支持純IPv6的網(wǎng)絡(luò)服務(wù),并且要求2016年提交到AppStore...
    追風少年周楓楓閱讀 18,293評論 0 12
  • 使用網(wǎng)絡(luò)通訊框架恨憎; 避免使用 IPv4 專用的 API与境; 避免使用硬編碼地址验夯。 1> 使用網(wǎng)絡(luò)通訊框架;也就是是說...
    斌小狼閱讀 1,391評論 0 1
  • 原文地址:http://www.skyfox.org/ios-app-support-ipv6-dns64-nat...
    小霍同學閱讀 4,796評論 0 8
  • 推薦 最近很多人都在關(guān)注支持 IPv6 的事情吧?我們公司也是共屈。也有不少同行使用了我們的 YTKNetwork 網(wǎng)...
    笨笨的考拉_2閱讀 2,435評論 2 9