关于网上ipv6环境的配置有很多,可以搜一下。
eg: http://www.jianshu.com/p/49442934b81d
(注: 本文章前提是利用了httpdns,利用阿里云提供的方法,解析到ip再去访问后台数据)
ipv4地址: 域名通过httpdns解析后得到的是以“ . ”分割的ip地址
ipv4环境:当前使用的网络ip是以“ . ”分割的
ipv6地址:域名通过httpdns解析后得到的是以“ : ”分割的ip地址
ipv6环境:当前使用的网络ip是以“ : ”分割的
在此说下遇到的其他问题:
1、在AFN正常访问后台数据的时候,会有一个urlStr的拼接。
stringByAppendingString:在ipv4和ipv6下 都是可以访问到数据的
stringByAppendingPathComponent:在ipv4下访问正常,在ipv6下访问失败
so,ipv6地址在ipv6环境下,stringByAppendingPathComponent改成stringByAppendingString才是可以的。
2、环境切换问题
ipv4地址在ipv4 ipv6环境下均可正常访问,
ipv6在ipv6环境下正常在ipv4环境下访问失败;
报错error为
A server with the specified hostname could not be found:
在网上查了一下,说是不能直接切换,需要搞什么隧道,不是很懂。如果从程序启动只是在ipv6环境下运行app是正常的。在网上也搜索到说是尽量用域名不要用ip:so,在判断使用域名与ip的时候,如果是ipv6环境使用的就是域名访问。
3、WKWebview访问失败以及解决办法
首先判断是否执行方法- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler;
(不执行的话 通过httpdns获得的ip访问数据失败)
ipv4地址在ipv4环境下执行这个授权方法
ipv4地址在ipv6环境下也执行这个方法
ipv6地址在ipv6环境下不执行
ipv6地址在ipv4环境下不执行
so ipv6环境下用域名访问webview。
判断当前网络是ipv4还是ipv6:
http://download.csdn.net/download/qq_15509071/9743137
注明:以上均是真机测试。模拟器好像有点不同,比如ipv4地址在ipv6环境下 运行,真机可行,模拟器访问失败。