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.

微信公众号

iOS 适配ipv6_第1张图片
开发者思维 devthinking

QQ交流群:295976280

iOS 适配ipv6_第2张图片
iOS交流群(一)群二维码.png

你可能感兴趣的:(iOS 适配ipv6)