美文网首页搬砖AppStore审核
iOS上线之日了狗的IPv6

iOS上线之日了狗的IPv6

作者: 英俊神武 | 来源:发表于2018-01-11 17:50 被阅读4222次

    简书

    镇景雄

    路漫漫其修远兮,吾将上下而求索!

    • 坦白讲,小编一向是以文雅自居,思索了很久才决定用这个标题的,大概只有这个标题才能精准的表达此刻的心情,如果说攻城狮的烦恼是敲不完的代码,改不完的bug,那么作为一名iOS开发攻城狮那就是敲不完的代码,改不完的bug,逃不过的被拒。苹果作为高科技的话事人一向对苹果app审核是很严的,有时候辛辛苦苦写了几个月的代码,就在审核的时候,被拒n次,拒到你怀疑人生,今天我们来聊聊这日了狗的IPv6!

    首次被拒

    小编最近上线公司云风商城app,测得差不多了,就发布上线了,本想着,既不是游戏类app,又不是体彩类app,上个线不是so easy,但是我以为的只是我以为的我以为的而已,下面是被拒时候苹果给出的附件截图。 C9E995C5FC4942A8E5F685C7BCCD097F.png

    当看个这个截图的时候,小编第一个反应是,此事必要蹊跷,掐指算一算,大概有两点原因

    1. 难道是苹果审核的时候,恰好这个时候,服务端小伙伴在部署环境,重启服务器,导致苹果审核人员登录不上去,然后被打回来了,这未免太巧了!
    2. 或许是测完人员修改iTunes Connect中测试账号的密码,导致登录不上去!
      基于这两点猜想,周六小编冒着天寒地冻前往公司,用iTunes Connect中测试账号登录了一下,没有问题,于是,打包重新提交审核了,并且还给苹果写了一封加急邮件,想着明天能上线,就很开心的回去了!

    二次被拒

    等到晚上睡觉之前去iTunes Connect查看,发现又被拒了,这次苹果给出的截图是一个空白页,弄得小编很懵逼,不过它在全文提到IPv6这个关键词比较多.

    3EB4F1BD2CB40B76857953AF2B833F65.png
    说起IPv6这个东西,对于iOS开发的小伙伴来说一定不陌生,2016年5月份横空出世,掀起了一段适配IPv6的浪潮,所有提交至苹果App Store的iOS应用申请必须要支持IPv6-only下一代互联网标准。要搞懂这个问题,我们就不得不说说IPv4IPv6这两个概念了
    IPv4的定义
    • 目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。 IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上。 近十年来由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,各项资料显示全球IPv4位址可能在2005至2008年间全部发完。
    IPv6的定义
    • IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。
    IPv6跟IPv4相比,有哪些优势
    1. 从地址空间的角度讲,IPv4中规定IP地址长度为32,即有232-1个地址;而**IPv6**中IP地址的长度为128,即有2128-1个地址。
    2. 从路由表的角度讲,IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
    3. 增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台
    4. 加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷. 更高的安全性.在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全
      当然了,这些理论性的东西,小编觉得稍微看下,了解下个大概就可以,如果你有时间深入研究也是可以的。
    当我们了解了IPV6的概念之后,首先关注的事怎么解决这个问题?
    • 对于这个问题,小编的解决方案是
    1. 按照cocoachina中这个网址http://www.cocoachina.com/ios/20160525/16431.html 提供的方案,一步一步操作,本地搭建下IPv6的环境,看能不能测试通过,如果能测试通过,那么iOS客户端的代码应该是没什么问题的,说明你项目的代码程序用的第三方都适配了IPv6。
    2. 把上面的操作流程录制一段视频,保存下来,这个视频尽可能的保证画面清晰
    3. 在苹果开发者中心,解决方案上传这个视频附件,并且回复一下,至于怎么回复,这个就见仁见智,你可以说,我们在自己这边环境测试是没有问题,附件演示视频,请您重新审核,祝您生活愉快!
    4. 这里需要强调一点,如果代码没问题的话,是不需要重新提交审核,直接回复附件就可以了,因为如果你重新提交审核,又得重新排队了,可能需要的时间会更长一些!
      网上很多人都说上传附件视频就可以审核通过了,小编对这次的解决方案还是很有信心的。

    三次被拒

    当天晚上打卡下班,回去洗了澡,刷新下iTunes Connect页面,发现又被拒了,就像刘德华歌词中那句:你就像一个刽子手把我出卖,我的心彷佛被剌刀狠狠地宰,谁会愿意接受最痛的意外!
    这次被拒的拒绝苹果给出的截图还是登录界面,连接服务器失败的提示

    C9E995C5FC4942A8E5F685C7BCCD097F.png
    这次被拒,小编心里着实埋下阴影了,最痛苦的不是解决不了问题,而是问题的症结都找不到,叫天天不应,叫地地不灵的绝望。事已至此只有不断去谷歌,去百度,去知乎,后来在网上找到一种貌似有点道理的方法,大概的意思是这样的:上传的附近文件,可能苹果审核不会看,只能把IPv6正常使用的视频,上传youtu.be网站上,提供给苹果一个链接,审核的时候可能审核人员才会打开。细细想来,也有点道理,youtu.be网站是美国的网站,上传他们的网站上面去然后审核,这个过程好像没毛病!所以这一次小编的解决方案是这样的:
    ①首先你得有谷歌浏览器作为访问国外网站使用,没有的话,可以下载一个。
    ②对于蓝灯退出历史舞台,而且很多VPN账号不能使用,小编推荐使用firefly这个软件,是可以翻墙的,并且是免费的额。
    ③这个时候把准备的时候上传到https://www.youtube.com/,这个链接需要复制到谷歌浏览器才能打开的,可能上传的过程当中需要你输入你的谷歌账号和密码,没有的注册一个就可以了。
    ④拿到youtube网站生成的一个网址,回复一下苹果的附件,把这个链接也加在一个显眼的地方。
    ⑤为了保险起见,小编跟杨队商量,在邮箱中也跟苹果那边回复一封邮件,并且在邮箱的下面也上传了录制的视频和youtube链接
    就这样,怀着忐忑的心情打卡下班了!

    四次被拒

    等到第二天上班的时候,发现还是被拒了,很忧伤,一种挫败感油然而生!这个时候苹果回复了一封邮件,截图如下 6FC79D00-C244-4564-9558-D35A60D14FDC.png

    大概的意思是:审核部门评估你的应用,并确定最初的拒绝反馈是有效的。你的应用程序不符合app Store评审准则2.1。这下子,一下子不知道该如何是好,使劲了浑身解数,发现还是解决不了这个问题,本地测试了IPv6没问题,也上传了视频,为何还是通过不了呢?

    这个时候小编想起来,在16年的时候加过一个叫IPv6被拒解决方案群的群,有时候自己思维定式了,需要换一种方式去思考,专业的事情专业的人来做,正如刘国梁所说的一样:如果今天我们还不够强,请相信别人。如果今天我们够强,请相信自己。既然自己对IPv6这个研究得不够深,那就请高人指点指点吧!

    对于这个专门解决IPv6被拒的群,进去之后,有个群文件可以下载看看,专门讲解IPv6的,可以按照上面的方案试试,如果不懂,可以问下群里的一些大神,也许会有一些顿悟!

    被拒了四五次,毕竟留给我们iOS开发小组的时间也不多了,所以小编直接选择了咨询那个卖解决方案服务的人,想着能不能花一点点钱,快速把这个问题解决了,但是后来技术主管觉得花299元解决这个问题太贵了,否决了这个方案,让我们直接再提交个版本去试试,碰碰运气。所以就这样心不甘情不愿的又提交了一个版本,但是实际上我们都知道,通过的概率很小很小。

    虽然提交了,但是小编还是很好奇那些专业解决问题的团队,他们到底是怎么运作的,能够使app上线,后来了解了下,是这么回事,小编截个图,您就一目了然了


    [图片上传中...(C000A4EF6BF3573A93B0B755F6127746.png-4e521a-1515661435520-0)]
    C000A4EF6BF3573A93B0B755F6127746.png E6CCD069F5354A3595EDDB092A9BC2F2.png

    从截图中可以捕捉两点信息:
    ①通俗点讲,实际上你需要购买他的服务器服务,他作为一个中转服务器,能够让你的app在审核的时候顺利的访问IPv6,但是这个并不是长久之计,你需要依赖商家那边的服务器,也就是说过期之后可能还是会被拒,又得购买商家的服务,说到这里小编想感叹一句:商机真的是无处不在!
    ②如果本地搭建环境测过了,那么如果还被拒,那十有八九是服务端那边问题,可能他们需要配置或者处理一些东西,但是对于不懂服务端只是的iOS开发工程师,可能跟服务端沟通这个问题真的不是很顺畅,互相都觉得不是自己的锅,小编也是很无奈啊!
    下午的时候小编也一直在想,怎么样模拟美国网络环境去访问我们这个app,或者调试一下能获得什么信息,但是没有美国的朋友,这个想法也只是想想而已。

    真想大白

    晚上部门聚餐的时候,在楼下我们跟安卓小伙伴闲聊技术,他无意中说出了一句:可能是你发请求的时候传的本地时间不是北京时间所导致的,之前你们h5版本也出现这个问题。这话一出,突然有种醍醐灌顶的感觉,我们赶紧把手机设置里的时区调到纽约时区,发现网络真的访问不了,一时间仿佛找到了问题的症结,饭桌上跟服务端大当家也沟通这个问题,他也默认了时区会导致这个问题,他解释:服务端主要拿本地时间做一些安全性校验,但是只有北京时间能返回数据!

    吃完饭就回公司研究这个问题,把手机本地系统时间转化为指定时区时间,代码如下 粘贴图片.png

    通过测试纽约时区,其他国外时区,都能访问App。很快我们就重新发布个版本,过了一个小时,晚上10点多的时候,就审核通过了,这里还是要赞一下苹果的审核时间,是越来越短,几乎跟安卓差不多了!

    个人总结:

    对于IPv6这个问题,虽然以最后一场乌龙结束,但是小编还是简单做个总结,毕竟优秀的技术来自不断的自我归纳!
    ①只有出现连接服务器失败,或者访问网络错误的提示,苹果会统统视为IPv6的问题,所以当你收到IPv6的被拒邮件的时候,你需要往两方面去思考,一方面是真的是IPv6问题,一方面还是说服务端的配置,或者安全校验问题
    ②当我们以IPv6问题去解决被拒的时候,上传视频到附件,或者上传视频到youtube这些步骤都是少不了的,因为也许真的是国外网络不好就访问不了你的App,你上传了演示视频,可能真的可以审核,毕竟博客上那些说法没有必要空穴来风
    ③当你网上的方法试遍了,还是解决不了,小编建议还是找个IPv6的群找个专业的能手咨询下,至少这个领域他们很专业,从他们的言语你有可能会有新收获,对IPv6有新认识,这对你解决这个问题是有帮助的,如果实在赶进度,购买他的服务先通过审核也无妨,毕竟老板需要的是进度,怎么解决的他并不看重!

    ④也有可能你找了枪手还是解决不了,那么问题的关键就一定是服务端的逻辑问题了,小编的app问题症结就出现在这里了。这个时候就得向办法模拟下美国的网络环境,切换到美国当时时区,然后跟公司服务端小伙伴调试下,相信这种方式一定能从根本上解决这个问题,手机本地时区这个在设置中可以切换,至于怎么切换到美国的网络环境,小编觉得切到美国App Store,就能模拟美国的网络环境,截个图如下 0504709B-33DD-4F80-AAA4-FD4880AB9899.png

    这里我想吐槽一下服务端,不知道为什么这边我传一个错误的时间字符串,居然不走AFN网络请求中的成功方法,走的是失败方法,按道理只要URL对就可以跟服务端交互,就会走success方法,但是服务端直接让你走failure方法,这点上小编实在是不解,可能是后台架构或者第三方框架的锅,但是这种方式肯定是不合理的!

    引用

    一盏灯一片昏黄; 一简书一杯淡茶。 守着那一份淡定, 品读属于自己的寂寞。 保持淡定, 才能欣赏到最美丽的风景! 保持淡定, 人生从此不再寂寞。

    诗的引用

    朝辞白帝彩云间
    千里江陵一日还
    两岸猿声啼不住
    轻舟已过万重山

    相关文章

      网友评论

      • shaoying513:有个地方不明白,截图中和那个枪手聊的那些有道理吗?最后的解决方法并不是他说的那些啊,域名解析中转之类的有必要吗?
        英俊神武:@shaoying513 没有必要
      • 小_菜_鸟:比小说还精彩!
      • 798798123:感谢楼主的帖子,最后修改时间的点很关键!

        将国家改为美国后,时区改为洛杉矶,复现了问题。
        跟后台调试发现,php的语言包配置有问题,取消语言配置校验后,成功访问服务器。

        ps:刚开始仅仅修改了时区,并没有复现问题。
      • xiaofu666:小编也是不容易啊 看了博客 感觉看了一部励志史
      • TT_拓泥:时区设置解决了我的问题:+1:
        STDawn:接口不传时间也有这个问题吗
        TT_拓泥:因为上周就提交了申请,由于是第一次申请,没有用户,临时把服务器调到-8区。今天早上喜讯:smile:
        英俊神武:@TT_拓泥 谢谢,你们接口也需要传一个本地时间吗:smile::smile:
      • 闲来读者:赞赞赞

      本文标题:iOS上线之日了狗的IPv6

      本文链接:https://www.haomeiwen.com/subject/wqyznxtx.html