V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
iConnect
V2EX  ›  iDev

iOS 应用上架,必须支持 IPv6 线路访问,填坑之路亲测

  •  
  •   iConnect · 2017-10-24 15:51:36 +08:00 · 9632 次点击
    这是一个创建于 2622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    曾经上架 appstore 被各种原因拒到吐血,本以为对苹果的套路早已烂熟于胸,套路嵌套路,防不胜防,这次载到阿里云上了。网络上各种教程没一个靠谱的(没办法,套路常新),还有人靠这个在淘宝上收钱的。这两天又填了一次这个坑,明确两点:

    1、不用任何费用(购买教育网 ipv6 专线当然可行,但没必要)
    2、苹果上架审核亲测可行。

    文章带截图,不重发了,原文在这: https://qingqing.com/post/1021206/time

    25 条回复    2017-10-27 13:05:33 +08:00
    Leafove
        1
    Leafove  
       2017-10-24 16:04:33 +08:00
    支持 ipv6 是说你的应用在 ipv6 环境下也可用,而不是需要你的服务器处于 ipv6 下
    SourceMan
        2
    SourceMan  
       2017-10-24 16:09:16 +08:00
    然而你理解错了?
    1#正解,这个支持应该是相当简单了,分享出一个 ipv6 的 SSID,手机连上去,APP 不崩溃就可以了
    elgae
        3
    elgae  
       2017-10-24 16:10:50 +08:00
    我要喷,我觉得不要把因为不读文档而没做对的事称为“坑”,显得自己有点 stupid。
    mornlight
        4
    mornlight  
       2017-10-24 16:13:30 +08:00
    服务器可以仅支持 IPV4 的,你把方向搞错了。
    jasontse
        5
    jasontse  
       2017-10-24 16:13:44 +08:00 via iPad
    这篇文章完全是错的。只要你不硬编码 IPv4,利用好 DNS64,服务器完全不用去折腾 IPv6。
    iConnect
        6
    iConnect  
    OP
       2017-10-24 16:27:49 +08:00
    @Leafove
    @SourceMan
    那你说说没有 IPv6 隧道代理,苹果的审核人员怎么连你的国内服务器?


    @elgae
    @mornlight
    @jasontse

    国内的服务器都没有 IPv6 地址,所有才有这个必要的。
    hongshaoyuancn
        7
    hongshaoyuancn  
       2017-10-24 16:33:01 +08:00
    挂个国外 vps 做反代
    jasontse
        8
    jasontse  
       2017-10-24 16:36:47 +08:00 via iPad
    @iConnect 苹果审核的环境并不是一个 IPv6 孤岛,它可以通过 NAT64 来访问到 IPv4 网络,你只要满足这种网络兼容环境就行了。
    jasontse
        9
    jasontse  
       2017-10-24 16:37:54 +08:00 via iPad
    简单来说你的这种「代理」其实苹果已经自备
    iConnect
        10
    iConnect  
    OP
       2017-10-24 16:47:28 +08:00
    @jasontse 事实上并不行。
    mornlight
        11
    mornlight  
       2017-10-24 16:48:46 +08:00
    @iConnect #6

    - 为什么 App Store 关于 IPV6 的规则并不强制要求服务器支持 IPV6 地址访问?
    - 因为国内绝大多数服务端都没有 IPV6 地址,他们的 App 也都好好的。

    一个基本的逻辑推导。

    更多的细节,可以参考其他人写的关于这条规则的经验总结。「网络上各种教程没一个靠谱的」更可能的原因是你运气不好或者方式不对。即使你完全符合要求,也有一定概率被这个原因拒掉。
    当然,你的这个思路也是可以解决问题的。
    iConnect
        12
    iConnect  
    OP
       2017-10-24 16:59:07 +08:00
    @mornlight - 因为国内绝大多数服务端都没有 IPV6 地址,他们的 App 也都好好的。

    哪个公有云服务器有提供过 IPv6 地址吗?

    有一点你可能没注意,以前的方案是针对经典网络的,对专有网络的 local 配置是不对的。
    Leafove
        14
    Leafove  
       2017-10-24 17:16:59 +08:00
    iConnect
        15
    iConnect  
    OP
       2017-10-24 17:35:30 +08:00 via Android
    @jasontse

    if you ’ re writing a server-side app or other low-level networking app, you need to make sure your socket code works correctly with both IPv4 and IPv6 addresses.

    这个要怎么通?你今年有上架 server-side 应用实际能过审吗?
    azuis
        16
    azuis  
       2017-10-24 17:48:04 +08:00
    你没有理解苹果的意思。苹果的意思是只要在 NAT64 下面能通就行了。简而言之就是说只要没有 hard code IP 地址或者使用某些不兼容的库,都是能正常访问的。 别说国内了,国外 Azure GCE 也都没 IPv6 地址的。
    azuis
        17
    azuis  
       2017-10-24 17:51:48 +08:00
    苹果的那个回复只是个模板。之前提交的时候提供了错误的测试账号。 也说要检查 IPv6 问题,但是实际上只是测试账号问题,重新提交后即正常过审。
    damondev
        18
    damondev  
       2017-10-24 17:54:05 +08:00
    没必要啊
    jasontse
        19
    jasontse  
       2017-10-24 17:58:30 +08:00 via iPad
    @iConnect
    这么说吧。假设你的服务器是 123.123.123.123 不支持 v6,然后域名是 example.com 没有 AAAA。
    苹果的 NAT64 网络会通过以下流程来兼容:
    当域名被 DNS 服务器解析,发现没有 AAAA 记录,会被「污染」一个 64:ff9b::123.123.123.123 (非严谨写法)。
    这样原本没有 AAAA 的就凭空多了一个 AAAA。
    你完全可以按照原生 v6 的方式去连接这个「捏造」的地址,因为 64:ff9b: 开头的全部指向一个可以透明代理到 v4 的服务器上。
    剩下的就不用动了。
    iConnect
        20
    iConnect  
    OP
       2017-10-24 18:04:30 +08:00 via Android
    @jasontse 我知道哇,理论上没有问题,我本地可访问的测试截图都提交去申诉了,就是不断的被驳回再驳回。

    实际上 App 驳回之后,什么都没改,把隧道调通,就秒过了。
    odirus
        21
    odirus  
       2017-10-24 18:08:26 +08:00
    最近新上架的应用检查比较严格,因为我们也遇到了,我们也不打算去猜测苹果神马意思,所以我们就把 IPV6 弄起来了,随便他测试。

    1) 找一台支持 IPV6 的服务器,在服务器上做一个反向代理到你现在真正服务器即可。
    2) 解析域名的 AAAA 记录到 IPV6 地址。
    3) 记得测试一下从美利坚通过 IPV6 访问时的速度,至少要让延迟能够接受吧,延迟不能接受就买条好点的线路回国。

    备注:
    国内景安网络支持分配 IPV6
    国外很多都支持分配 IPV6,例如 DigitalOcean

    坑:
    我们用的西部数码的 DNS,添加 AAAA 记录后不能自动同步,需要点击 “立即诊断” 才行
    iConnect
        22
    iConnect  
    OP
       2017-10-24 18:08:45 +08:00 via Android
    @jasontse 补充一下,我提交的应用是 sever 端依赖度很高的。
    kylix
        23
    kylix  
       2017-10-25 10:43:07 +08:00
    我司一个 H5 的 APP,服务器就布在公司,企业固定 ip 宽带,没有 ipv6 地址,也没布什么 ipv6,前几天已经上架了。
    (ps: APP 应该是支持 ipv6 环境的)
    Vitta
        24
    Vitta  
       2017-10-26 17:48:36 +08:00
    用电脑创建一个 ipv6 的热点, 手机连, 录屏,打开 app, 随便操作一会, 把视频发到 itunes 里面就过了
    xi_lin
        25
    xi_lin  
       2017-10-27 13:05:33 +08:00
    只是日常审核抽风,你就算搭了也可以会继续被他们说拒
    https://www.v2ex.com/t/357223
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:13 · PVG 18:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.