关于IPV6审核被拒的完整分析

原文:
关于IPV6审核被拒的完整分析php

自从去年6月1号Apple明文规定全部开发者提交新版本都必须支持IPV6-Only的网络,估计不少iOS开发者都遇到因为IPV6网络不支持形成的审核被拒的状况, 我被坑的不轻啊, 下面就来分析一下IPV6问题如何解决。html

首先附一个审核被拒的原文:ios

Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app when reviewed on iPad running iOS 10.3.2 on Wi-Fi connected to an IPv6 network.
Specifically, the app launched to a blank page.
Please see attached screenshots for details.git

Next Steps
To resolve this issue, please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify any issues, then revise and resubmit your app for review.
If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.
For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.github

大意是在iPad上运行iOS 10.3.2 wi - fi链接到IPv6网络, 应用程序启动是一个空白页。请在设备上运行您的应用程序,链接到IPv6网络, 而后修改并从新提交你的应用程序进行审查。objective-c

一. 简单介绍一下IPV6以及如何搭建检测环境

首先IPV6,是对IPV4地址空间的扩充。目前当咱们用iOS设备链接上Wifi、4G、3G等网络时,设备被分配的地址均是IPV4地址,可是随着运营商和企业逐渐部署IPV6 DNS64/NAT64网络以后,设备被分配的地址会变成IPV6的地址,而这些网络就是所谓的IPV6-Only网络,而且仍然能够经过此网络去获取IPV4地址提供的内容。简单来讲就是IPV4不够用了, 要换IPV6, 这从苹果一贯的以用户体验为主出发, 其实也是为了让用户能用着舒服;
测试是否支持IPV6网上已有更多详细的方法, 照着搭建就行, 下方附搭建环境的方法:服务器

二. 解决办法

总的来讲有三个方面的问题:微信

  • 服务器不支持IPV6
  • 项目中导入的第三方SDK不支持IPV6
  • 项目中涉及到的网络请求不支持IPV6

除了这些, 还有些其余因素, 好比苹果正在审核, 而大家的后台在部署接口, 这种才是真的坑爹😤啊, 很少说, 感受眼泪止不住往下流了;网络

1. 服务器

①检测服务器是否支持IPV6
终端输入如下代码:(参照网上方法)app

dig +nocmd + nostats 你的域名 AAAA

这是看看大家的服务器在IPV6下是否有回应。

简书的域名检测
简书的域名检测

有错误的话, 对照下面的表:


改变DNS的配置,直到稳定返回 NOERROR 为止。

②更改服务器配置
阿里云 Ubuntu 支持 IPv6 的完整步骤

2. 第三方SDK

这些问题通常会出如今那些维护的APP里面, 因为是初次开发APP的人所处的时间相对较远, 因此项目里所用的SDK会有一些功能缺失; 下面介绍几个第三方SDK的问题;
①Reachability


苹果都发话, 这个固然要改了;
新的sdk包将这个方法干掉了:reachabilityForLocalWiFi,只要本身的代码中干掉就好了,没什么影响。

缘由以下介绍:

#pragma mark reachabilityForLocalWiFi

//reachabilityForLocalWiFi has been removed from the sample.  See ReadMe.md for more information.

//+ (instancetype)reachabilityForLocalWiFi;复制代码

②JPush极光推送(v2.1.7开始支持)
这个是咱们项目里遇到的问题, SDK版本低了, 不支持IPV6;


从图中能够看出, 2.1.7版本才开始支持IPV6, 而咱们版本是2.1.0; 唉😔, 乖乖升级咯;
附:
极光文档地址

③微博SDK(v3.1.4开始支持)


并且从官方文档上发现, 更新SDK, 其实是更新Reachability库;


附:
微博SDK文档地址

④友盟(v5.2.1开始支持)


附:
友盟文档地址

⑤微信(v1.5开始支持)


有简友说微信的sdk包是支持ipv6的,可是微信自己并不支持ipv6,因此说,即使你替换了最新的sdk包,在ipv6网络下仍是不能用微信分享,由于你的app应用在ipv6网络环境下调不起微信,也就分享不了了,这个问题微信应该意识到了,估计后边的版本应该也是支持ipv6, 这个你们能够注意下;
附:
微信文档地址

⑥QQ(未说明)


从变动历史也看不出从哪一个版本开始支持的, 估计是以为这点玩意儿不值得说吧. 大佬们的世界真是看不懂, 你们就按时间来估计吧;
附:
QQ文档地址

⑦支付宝(未说明)


看下载的demo里面, 版本更新历史对具体哪一个版本更新的未说明, 万一是最近被苹果打压的才更新的, 也不必定, 反正最新版本确定是有了, 并且还多了些其余功能;
附:
支付宝文档地址

⑧百度地图(v3.0.0开始支持)


附:
百度地图文档地址

⑨环信(v3.1.3开始支持)


附:
环信文档地址

⑩科大讯飞语音(v1.133开始支持)


附:
科大讯飞语音文档地址

固然还有不少其余的SDK, 这里就不一一列举了, 根据项目里用了哪些, 看下官方文档SDK版本历史比对一下就行;

3. 网络请求

其实对于ipv6_Only的处理,从两大方面进行本身审核:自身网络请求和三方涉及网络请求, 毕竟是因为网络问题;
关于AFNetworking是否支持IPV6, 下面是一网友的说法:

而版本支持是在3.0之后;

固然, 据说网友还遇到了其余的问题:(这个我没遇到, 不过仍是在这里记一下😆)
内网的访问下是不可能链接到本身的服务器,后面测试一下公网阿里云的服务器,可以正常链接,这个多是DNS64在搜索ipv6的过程当中,并无搜索内网的网络,致使内网链接失败;

若是这些仍是没能解决你的问题, 能够看看下面这篇文章:
www.jianshu.com/p/a6bab07c4…

最后感谢参考文章做者的分享, 但愿攻城狮们早日解决bug, 继续撸代码, O(∩_∩)O哈哈~

本文参考文章:
iOS 被拒6次的ipv6
Ipv6_Only 简单的理解(已验证,项目已经上线)

相关文章
相关标签/搜索