iOS 适配ipv6

作者: ShawnDu | 来源:发表于2016-08-08 18:15 被阅读1253次

    博客地址已迁移到: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

    相关文章

      网友评论

      • 最晴天: #if (TARGET_OS_IPHONE && NSFoundationVersionNumber > 1240) || (TARGET_OS_MAC && NSFoundationVersionNumber >= 1252)想请教一下, 同样是判断系统版本的代码,和AFN原本的判断有什么区别呢 。我不太理解。。。

      本文标题:iOS 适配ipv6

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