iOS 适配ipv6

博客地址已迁移到:https://devthinking.com

在App中适配

  1. 在传nodename的时候不要用ip地址,用域名;
  2. 检查工程中有没有用到以下api,这些只是针对ipv4处理的,有的话就删了:
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
  1. 如果用到了以下ipv4的api,相应的ipv6也需要做处理:
AF_INET
PF_INET
struct in_addr
struct sockaddr_in
kDNSServiceProtocol_IPv4
  1. 在App中,如果用了AFN3.0以上,都支持了ipv6,但是有一点在AFNetworkReachabilityManager中,在manager的初始化方法中,判断的手机是否是大于9.0的系统,有些不对,原来代码是这样:
+ (instancetype)manager
{
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)

上面的代码应该改成这样,才会生效:

 #if (TARGET_OS_IPHONE && NSFoundationVersionNumber > 1240) || (TARGET_OS_MAC && NSFoundationVersionNumber >= 1252)

服务器适配

如果你说在App端都适配了ipv6,并且自己用mac本搭建了ipv6热点测试通过,为什么应用审核还是被拒呢?看下面的解答。

  1. 用mac创建的热点和苹果review时用的真实的ipv6网络是不一样的;
  2. 需要检查服务器域名4A的支持。详细的问题,请看apple论坛IPv6 and App Review
    , 检查4A的支持可以用google的toolbox dig.
  3. 有关AAAA的文档,可以看wikipedia.

微信公众号

开发者思维 devthinking

QQ交流群:295976280

iOS交流群(一)群二维码.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. IPV6简单介绍 网络是IPV6还是IPV4是由运营商和企业逐渐部署的。 客户端向服务器端请求域名解析,首先...
    晓飞90阅读 3,233评论 0 0
  • 最近一直看到有人说app因为没有适配IPv6而被拒的,可是我的app却什么都没做也没有被拒,闲来无事看了看原因。 ...
    program袁阅读 2,152评论 1 8
  • 如果你的项目的网络请求是用的域名的话~可以跳过这个文章了。 如果你处于ipv6的网络下,发现你的app用不了那么你...
    MMMo1阅读 3,700评论 1 2
  • 由于6月1日起苹果将开始强制app适配iPV6,就对现有工程做了一个排查,发现一点更新一次吧,现将发现的AF中的修...
    NBeanN阅读 21,654评论 24 33
  • 由于6月1日起苹果将开始强制app适配iPV6,就对现有工程做了一个排查,发现一点更新一次吧,现将发现的AF中的修...
    多一点微笑_阅读 6,412评论 1 9