Ipv6_Only-b

网上好多关于ipv6的资料,说半天ipv6是什么,怎么建立测试环境,,,可是没有看到具体的操作和解决的方案,这里,为大家提供一种方案,希望给大家带来帮助吧。

总的来说有三个方面需要进行检查和修改:

1、项目里面涉及和网络有关的网络请求是否支持ipv6。

2、项目里面涉及和网络有关的sdk是否支持ipv6。

3、项目的服务器是否支持ipv6。

IPv6的简介

IPv4 和 IPv6的区别就是 IP 地址前者是 .(dot)分割,后者是以 :(冒号)分割的(更多详细信息自行搜索)。

PS:在使用 IPv6 的热点时候,记得手机开飞行模式哦,保证手机只在 Wi-Fi 下上网,以免手机在连接不到网络时候,会默认跳转到使用 蜂窝移动网络(即2G、3G、4G流量) 上网。

IPV6,是对IPV4地址空间的扩充。目前当我们用iOS设备连接上Wifi、4G、3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IPV6 DNS64/NAT64网络之后,设备被分配的地址会变成IPV6的地址,而这些网络就是所谓的IPV6-Only网络,并且仍然可以通过此网络去获取IPV4地址提供的内容。客户端向服务器端请求域名解析,首先通过DNS64 Server查询IPv6的地址,如果查询不到,再向DNS Server查询IPv4地址,通过DNS64 Server合成一个IPV6的地址,最终将一个IPV6的地址返回给客户端。如图所示:

网上对于苹果官网上ipv6的文章翻译很多,附上链接,这篇介绍的不错:iOS应用支持IPV6,就那点事儿

本地 Mac 搭建 IPv6 测试环境

附上链接:本地如何搭建IPv6环境测试你的APP

上边这些几乎没什么用,网上一搜有很多。。。

如何判断自己的项目里面是否是ipv6、ipv4呢,我们用的方法,就是自己项目里面涉及和网络有关的进行一一排查

文章最后会提到ipv6解决的方案除了上述两点还有一个关于服务器的原因。

我们的app本身支持ipv6是因为我们使用的网络请求是asihttpRequest请求,而asihttpRequest是基于CFNetwork的,苹果有说明CFNetwork库是支持IPV6的。而除了自身的网络请求外,我们项目中涉及网络的就是三方库了,所以归根到底我们做的只是第三方库的替换,即:哪些三方库和网络有关,那么挨个查看最新的sdk文档解释是否描述支持ipv6,如果支持,那就替换。如果没说支持,那就不换。

(当然,还可以用cocoadpods替换三方库,关于cocoadpods的学习可以参考本人这篇文章Cocoapods安装

这种方案需要验证,估计需要几天的时间才能知道上线是否被拒。如果侥幸上线了,我会第一时间在本文里面续写一下。如果被拒,我也会第一时间排查原因,进行本文的更新。谢谢大家的支持。

已经上线了,该方案可行。

那么我们替换了哪些三方库呢,下边一一列举。(文章下部会有各个三方库的链接)

1、Reachability

按照苹果开发者中心提示,这个必须换。

新的sdk包将这个方法干掉了:reachabilityForLocalWiFi,只要自己的代码中干掉就行了,没什么影响。

原因如下介绍:

#pragma mark reachabilityForLocalWiFi

//reachabilityForLocalWiFi has been removed from the sample.  See ReadMe.md for more information.

//+ (instancetype)reachabilityForLocalWiFi;

2、新浪微博

根据官网提示,这个新的sdk支持了ipv6,所以进行替换。

替换后:

根据比较,新旧sdk只有上述变化,替换后command+B编译无错误提示。应该没事。

3、连连支付

按照连连支付官方文档

最新的sdk包是支持ipv6的,但是旧包也是支持的。项目中用的是2.4.0,官网上最新包是2.4.7,最后我们做了替换。

替换后报错了:

原因是在新的sdk包里将报错的这两个方法合成了一个。

在新的方法里面添加了一个判断支付类型的参数。

根据项目中报错的两个地方,第一个是快捷支付,第二个是认证支付。按照之前的进行了修改。command+B编译无错误提示。应该没事。

但是实际上还是遇到了崩溃的bug。然后我们换回了2.4.0版本,应为连连支付官网上说之前的版本也支持ipv6,我们之前的版本没有问题,所以换了回来,看看上线能成功不。

4、友盟

按照友盟官方sdk文档描述,需要更换新的sdk包。

按照需要,勾选了如下:

md,搞错了,项目里面的友盟是友盟分析,上边那个是友盟分享。。。

但是根据官方文档,好像我们的不用替换,因为涉及到什么IDFA,我们项目好像不涉及这个。

5、微信

按照微信最新sdk包1.7版本里面的README.txt,最新的sdk包支持ipv6

而我们项目中的微信是1.5版本的。应该进行替换。command+B编译无错误提示。应该没事。

比较可笑的是微信的sdk包是支持ipv6的,但是微信本身并不支持ipv6,所以说,即便你替换了最新的sdk包,在ipv6网络下还是不能用微信分享,因为你的app应用在ipv6网络环境下调不起微信,也就分享不了了,这个问题微信应该意识到了,估计后边的版本应该也是支持ipv6的吧。

6、QQ

官方文档好像也没有说ipv6的事啊

7、次奥!支付宝sdk支持了ipv6,上午下载的时候没看见!!!

可是下载的时候总是打不开.zip的压缩包。。。叫别人帮忙下载了一份

command+B编译无错误提示。应该没事。

8、百度地图

根据比较,新的sdk包没有了bundle文件。需要将旧包的bundle文件拷贝进来。

各个sdk下载地址:

reachability

新浪微博

连连支付

友盟统计分析

微信

QQ

支付宝

百度地图

总之,对于ipv6_Only的处理就是这样办的,从两大方面进行自己审核:自身网络请求和三方涉及网络请求。

关于AFNetworking是否支持ipv-6,有网友如是说:

可见,AFNetworking是支持ipv-6的。但是,关于支持ipv6的afn版本有如下说明:

另外有网友遇到这样一个问题:这里还遇到一个坑,内网的访问下是不可能连接到自己的服务器,后面测试一下公网阿里云的服务器,能够正常连接,这个可能是DNS64在搜索ipv6的过程中,并没有搜索内网的网络,导致内网连接失败(这里卡了半天, 切记)(这个问题笔者并没有遇到,也没有亲测,大家注意一下这个问题,如果遇到了,知道是怎么回事。)

最后,有的网友上线被拒了,可能是因为app的服务器端没有支持ipv6,就此问题,我咨询了我们的技术经理,技术经理说“后台(即服务器)是要做ipv6的支持工作的”。但是具体是谁管,具体怎么操作的我就不得而知了,这里大家注意一下吧:不仅仅是客户端这边支持ipv6,上线之前最好问一下后台端是不是做了相应的ipv6的支持。

这里关于自己的服务器是否支持ipv6,有网友提供了一个方法,大家可以试一下。(谢谢杭州-托儿索被拒6次的ipv6,争得托儿索的同意,进行转发)

前两条说的就是我们的方案:项目里面涉及和网络有关的进行一一排查

第三条是在自己电脑上判断是否服务器支持ipv6的。亲测,在终端得到下图:

按照托儿索的说法,上图的位置那里显示NOERROR说明服务器没有问题,也是支持ipv6的。如果有错的话,可以按照下边提供的表格进行对照。

再看托儿所的结论,我们会得到下边的结论,涉及支持ipv6的其实是包括三个方面的:

1、项目里面涉及和网络有关的网络请求是否支持ipv6。

2、项目里面涉及和网络有关的sdk是否支持ipv6。

3、项目的服务器是否支持ipv6。

最后,说一下关于托儿索的命令行:终端  dig +nocmd + nostats 你的域名 AAAA,我在网上查了一下发现有这么个命令行:

为了方便复制:digwww.isc.orgAAAA +short

得到的结果直接就是一个ipv6格式的,不知道不支持ipv6服务器的是不是打印出来的是不是ip地址(有待验证)。如果谁验证了,希望告知我一声。在此谢谢了。所以也可以用这个命令行侧面验证服务器是否支持ipv6。

时间: 2024-08-07 00:09:31

Ipv6_Only-b的相关文章

前端学习-使用JS库Leaflet.js生成世界地图并获取标注地址经纬度。

介绍:Leaflet是一个开源的JavaScript库,对移动端友好且对地图有很好的交互性. 大小仅仅只有 33 KB, 同时具有大多数地图所需要的特点. Leaflet设计的非常简单易懂, 同时具有很好的性能和易用性. 它在桌面端和移动端都工作的相当高效,并有大量的插件用于扩张Leaflet的功能.微信公众号:673399718嘻嘻demo图如下: 使用leaflet.js生成世界地图非常方便,配置参数记录下,有兴趣的可以看看本例中引入jquery操作dom.首先:在页面的头部引入css文件c

手把手教你做蓝牙聊天应用(一)-设计方案

前言 通过"计算器"和"视频播放器"我们已经能够开始开发一些比较像样的应用了. 今天,我们将开始制作一个"蓝牙聊天"应用.这个应用其实很简单,没有炫酷的界面,就是一对一.通过蓝牙连接两台设备,让两个人互相发送信息. 可别觉得它太无聊.没有什么实用性,其实我们正是想通过它让你开始接触网络编程(蓝牙和wifi都是无线连接技术,它们的程序设计方法和思路非常的相似). 另外,学会了使用蓝牙,就为大家打开了技术开发的另一扇大门-物联网,现在很多物联网硬件都

CloudFoundry in 1 Box简介:PCF-Dev篇

在<CloudFoundry in 1 Box简介:Bosh-lite篇>我们介绍了Bosh-lite的架构和部署.在本篇中,我们将详细描述另一个CloudFoundry in 1 Box解决方案PCF-Dev. 1PCF-dev简介 PCF是Pivotal发行的Cloud Foundry商业版,PCF-Dev原名MicroPCF,是Pivotal为PCF的应用开发人员准备的一款App单虚拟机版的CloudFoundry.但是,麻雀虽小,五脏俱全.PCF-Dev虽然可以在仅仅一台虚拟式上即可运

iOS多线程开发(二)---线程管理

线程管理 线程管理包括创建,配置,退出三部分.主要包括创建线程的成本,线程创建,线程属性配置,线程主体入口函数编写,线程中断等 一,线程创建成本 1,为辅助线程分配的堆栈空间大小,便于系统和进程管理,以及为函数参数和局部变量分配空间 A,内核数据结构(kernel data structures)---大约1KB,This memory is used to store the thread data structures and attributes, much of which is all

用蒙特卡洛方法计算派-python和R语言

用蒙特卡洛方法算pi-基于python和R语言 最近follow了MOOC上一门python课,开始学Python.同时,买来了概率论与数理统计,准备自学一下统计.(因为被鄙视过不是统计专业却想搞数据分析) 有趣的是书里面有一块讲蒲丰投针计算Pi,这是一种随机模拟法,也就是蒙特卡洛法.蒲丰投针之于我太难,暂时没想到怎么用计算机模拟这一过程. python课中,老师也提到用随机模拟法,也就是蒙特卡洛法(MonteCarlo),用计算机模拟几千次实验,计算pi的近似值.好巧. 就拿python课中的

推荐系统-实战总结

推荐系统实战 这周看了推荐系统实战这本书,其中基本上介绍的比较全面,但是每一部分并没有十分深入,深入的精华全部都在下方的备注当中,备注中有很多的论文,可以进行进一步的学习. 首先回顾一下一些框架信息,在专门思考其中几个重要的部分: 3种联系用户和item的推荐方式: 1 根据用户的历史行为,表达过反馈的item进行item的预测,传统的itemCF 2 根据用户的历史行为,找到相似用户,进行预测, userCF 3 根据用户的喜好和个人信息,提取用户的特征,喜欢的物品的特征,进行预测.基本上就是

iPhone开发:Objective C 代码规范-iOS总结版

一,关于空行 A:.h中的空行 1,文件说明与头文件包涵(#import)之间空1行 2,头文件包涵(#import)之间,如果需要分类区别,各类别之间空1行 3,头文件包涵(#import)与@class之间空2行 4,@interface与@class之间空一行 5,头文件{}里面,空1行开始声明对象成员,如果需要分类区别,各类别之间空1行 6,{}外空1行,书写属性,如果需要分类区别,各类别之间空1行 7,空1行开始写方法,如果需要分类区别,各类别之间空1行 8,方法完成后,空1行@end

利用sar工具确定系统性能瓶颈-超详细版

安装 sar是查看操作系统报告指标的各种工具(top, vmstat...)中,最普遍,最方便的.它只是sysstat包中的一个工具,所以你必须安装sysstat包,可以去sysstat官网下载解压进行安装. 如果你下载的是tar.xz格式的话一般tar zxvf 是解压不了的,先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包.然后就是传统的makefile安装了. 牛刀小试 sar 是后台进程sadc的前端显

从头开始-04.C语言中流程控制

分支结构: if语句:当条表达式满足的时候就执行if后面大括号中语句 三种格式: if,if else , if else if else 特点:1.只有一个代码块会被执行 2.若有else那么必有一个代码会被执行 3.一个if语句中只能以if开头,最多只能有一个else,可以有任意个else if switch(表达式){ case 常量: ... break; case 常量1: ... break; default: ... break; } : 使用场景:当一个变量只有几个固定的取值的时