iOS开发之苹果应用6.1日起需兼容IPv6,那么作为开发者我们需要做些什么呢?【科普IPV6】

news/2024/7/20 23:06:43 标签: ios, ipv6, ipv4, App兼容ipv6

   我相信现在很多的iOS开发者都知道苹果要求我们提交到App Store的应用必须支持IPv6。

          1.提到IPV6相关。 那这个直接就联想到就是关于我们App中网络部的一些内容,是否要进行相应的改变。 
          首先,解释下什么是ipv6

          IPv6是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。通俗的说就是,我们的网络ip地址不够用了, 我们每台电脑上internet都需要一个身份证明,就是说的IP地址, ipv4的可使用地址为 2的32次方个地址,而ipv6可使用的ip地址为 2的128次方, 哈哈,妈妈再也不用担心我们ip地址不够用啦,当然ipv6的好处远不止只是地址的增加。还有以下好处:

     更小的路由表

         IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

  增强的组播(Multicast)支持以及对流的支持(Flow-control)

  这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。

  加入了对自动配置(Auto-configuration)的支持

  这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。

  更高的安全性

  在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全


通过上面的了解,大家肯定明白苹果为什么要求我们的app要支持ipv6了把,并且态度强硬。  苹果这是为了以后发展上不受ipv的影响,所以提前快刀斩乱麻。

废话说了很多了: 参照:http://www.jianshu.com/p/69ed4489762c 

进入正文:  

        我们用高级的API完全能够实现我们的需求,而且高级API封装的很便于使用,很多底层的像适配IPv6的工作都已经帮我们做好了。而用底层API会有大量的工作要我们自己来做,更容易产生bug。但你如果确实需要用底层的POSIX socket API。


这个方法在著名的Reachability类中是用到了的,而我们常用的网络库AFNetworking里面有Reachability。所以用到的同学得好好查一下了,大家没事可以去看看AFnetworking/issues,然后也可以问一问,暂时貌似是还没有解决这个问题点击打开链接 issues,


检查不兼容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类型也需要做处理

具体的对应字段为: 大家一定要查一查




最后一步:那就是请尝试搭建一个ipv6的环境,去测试整个项目,具体的搭建ipv6环境的步骤如下:

本地搭建IPv6测试环境

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

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

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


System Preferences

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


Sharing

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

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


总结:

    1.我相信陆陆续续肯定会有更多的开发者在兼容ipv6的过程中会出现各种各样的问题,到时候再去论坛,技术群中再探索把。


http://www.niftyadmin.cn/n/567393.html

相关文章

【黄啊码】MySQL入门—12、优化道路千万条,优化索引了解一下?

大家好!我是黄啊码,MySQL的入门篇已经讲到第11个课程了,今天我们继续讲讲大白篇系列——索引 目录 什么情况下使用索引? 1. 字段的数值有唯一性的限制,比如用户名 2. 频繁作为 WHERE 查询条件的字段,尤…

iOS学习之Swift史上最全第三方轮子大全

SwiftLanguage 更新至 2016-2-1,最近新收录 Graph, Localize-Swift, Cuckoo, Gecco, AudioKit, vapor, Every.swift 等 7 个,合计已收录 297 个。详见本文档。 工具类 项目开发者备注SwiftyJSONtangplin, lingoerGitHub 上最为开发者认可的 JSON 解析库A…

iOS开发之判断用户是否打开APP通知开关,看我就够了。

1.最近在做app内部的推送开关功能。 这样顾客可以自己定义推送给他的内容,屏蔽不想要的一些烦人推送。 在开发过程中, 如果顾客打开推送开关的时候,也已经向服务器发送指令,进行推送开关同步,给它说这个用户已经打开了…

【黄啊码】MySQL入门—15、技术老大:写的SQL性能这么差,还好意思说自己五年开发经验?

大家好!我是黄啊码,MySQL的入门篇已经讲到第14个课程了,今天我们继续讲讲大白篇系列——数据库服务器优化流程 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?我把思考的流程整理成了下面这张…

iOS开发之使用CocoaPods开发并打包静态库

这是一篇很赞的文章,特转载过来,方便以后查阅 Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大。通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用&…

XCode调试技巧–设置全局断点快速定位问题代码所在行

转载至:http://blog.sina.com.cn/s/blog_876a2c9901016ezh.html 很多时候,在调试程序的时候,我们很想马上知道错误的代码在哪一行, 而不想大概设置一个断点,逐行调试发现最终是哪一行代码出问题导致程序崩溃。 可以使…

iOS开发之Mac+jenkins+svn自动化构建

1.打开终端,管理员目录下: $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 如有ruby 环境问题,可自行查询替换; 2.Homebrew安装完成后: 终端输入: brew …

【黄啊码】垃圾回收可以赚钱,那php的垃圾回收机制你懂多少?

大家好,我是黄啊码,相信java的垃圾回收机制,任何java入门的码农们多多少少已经接触过了,那么php的垃圾回收机制又有多少知道,知道的评论区打个1呗。 好了,废话不多说,开干!&#xf…