zoukankan      html  css  js  c++  java
  • 由于IPv6导致的iOS应用发布失败,是否该怪Azure?

    IPv6已经被越来越广泛的支持了,尤其是苹果强制要求iOS (确切的说是iOS 9以及后续版本)应用必须支持IPv6之后(官方宣布),更将进一步推动IPv6的使用。

    不过苹果应用作为客户端强制要求IPv6,是不是变相地要求服务端也得是IPv6支持的呢?最近就发现很多抱怨,说由于Azure不支持IPv6,所以导致调用了Azure服务的应用发布失败。比如这个Azure feedback里的评论。

    首先我同意Azure或者其他服务提供商应该更多的支持IPv6,而且Azure上的VM和负载均衡在大部分区域已经支持IPv6了(具体可查看这里这里)。不过回到这个问题的本身,iOS应用发布失败真的是因为调用了部署在Azure上的服务导致的?根据我的分析,不是。

    首先,来看看苹果商店会做哪些检测来判定是否支持IPv6,总结下来有以下几点:

    1. 是否使用网络框架
    2. 是否使用只支持IPv4的API (注意这里的API不是指服务端API,而是客户端引用库里的API,尤其是网络相关的)
    3. 是否有写死的IPv4网络地址

    所以压根就跟服务端没什么关系,除非把服务端的URI写死成IPv4地址了。

    另外,看看苹果官网关于服务端的说法:

    Server updates

    If you have a server running on the wider Internet, it is not necessary to update your server immediately. Your server will be accessible to IPv6-only devices via DNS64/NAT64.

    最后,看看客户端到服务端访问的全过程,如下图。即使服务端只支持IPv4,支持IPv6的苹果客户端也是可以工作的

    综上所述,如果iOS应用由于IPv6检测失败导致发布失败,不应该去怪服务端,而应该检查自己的客户端代码:

    1. 是否有写死的IPv4地址
    2. 是否使用底层的网络API,比如gethostbyname,gethostbyname2
    3. 是否使用小单位地址存储类型,比如uint32_t, in_addr
  • 相关阅读:
    第7.12节 可共享的Python类变量
    (独孤九剑)--MySQL入门
    (独孤九剑)--错误处理
    PHP图像函数
    (独孤九剑)--图像处理
    (独孤九剑)--文件上传
    (独孤九剑)--文件系统
    (独孤九剑)--正则表达式
    (独孤九剑)--数组与数据结构
    PHP填坑
  • 原文地址:https://www.cnblogs.com/hula100/p/7117913.html
Copyright © 2011-2022 走看看