• 针对苹果最新审核要求 为应用兼容IPv6


    在WWDC2 015上苹果宣布iOS 9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。而今年5月初,苹果宣布6月1日后所有应用必须支持IPv6-only网络。为确保现有的应用是兼容的,我们需要注意下面几点。

    不建议使用底层的网络API

    下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API。

    841355-727c46f180e5dd23.jpg

    Networking frameworks and API layers

    大部分情况下,我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底层的像适配IPv6的工作都已经帮我们做好了。而用底层API会有大量的工作要我们自己来做,更容易产生bug。但你如果确实需要用底层的POSIX socket API, 请参照这个RFC4038: Application Aspects of IPv6 Transition的指导。

    不要用IP地址

    比如下面这个API,nodename这个参数不要传IP地址,而应该用域名

    841355-70334bd00b2787ef.jpg

    SCNetworkReachabilityCreateWithName

    这个方法在著名的Reachability中是用到的,我们常用的网络库AFNetworking就用了这个。所以用到的同学得好好查一下了,另外这个项目的作者几天前刚刚就这个问题有一个新的提交,不过最新的release版本中还没有加进去,可以点下面链接先去看看他都改了哪些地方。

    Added support for IPv6 to Reachability #3174

    检查不兼容IPv6的代码

    搜一下工程里有没有下面的这些API,这些都是只针对IPv4做处理的,有的话就删了。

    • inet_addr()

    • inet_aton()

    • inet_lnaof()

    • inet_makeaddr()

    • inet_netof()

    • inet_network()

    • inet_ntoa()

    • inet_ntoa_r()

    • bindresvport()

    • getipv4sourcefilter()

    • setipv4sourcefilter()

    如果用到了下面左边的这些IPv4的类型,那么它们相应的IPv6类型也需要做处理

    841355-dd37905d642ca9bd.png

    IPv4-IPv6

    本地搭建IPv6测试环境

    最后我们来搭一个IPv6的测试环境吧,你所需要的就是一台用非Wi-Fi的方式上网的Mac电脑。

    我们的要做的其实就是用Mac做一个热点,然后用iPhone连接这个Wi-Fi,听起来很容易,我相信大家在公司就是这么干的吧。

    区别是这次我们产生的是一个本地的IPv6 DNS64/NAT64网络,这项功能是OS X 10.11新加的。和我们以前开启热点方式不一样的地方在于,我们在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。

    841355-bd2a25d779153e4c.jpg

    System Preferences

    之后在“Sharing”界面中,我们会看到和之前不一样的地方,就是红框所标的地方,多了一个叫“Create NAT64 Network”的选框,选中它。

    841355-8e5aa1eac3c24a8d.jpg

    Sharing

    之后就是按照正常的创建热点的流程走完就行了。

    现在我们用iPhone连接上这个刚创建好的热点就可以测试了,注意此时要把iPhone设成飞行模式,以保证只用Wi-Fi上网。

     
     
  • 相关阅读:
    OO术语表
    linux之用户管理(useradd/usermod/userdel/groupadd/groupmod/groupdel)
    Linux 线程绑核
    g++中数组定义时长度可以使用变量
    水滴石穿之C语言的底层操作(移位操作有效位数)
    ACE
    Oracle优化器介绍
    SQL优化工具
    Oracle Index 索引介绍(SQL)
    VC6.0:"Setup was unable to create a DCOM user account"的解决方案
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/7160968.html
Copyright © 2020-2023  润新知