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
  • 相关阅读:
    Ajax
    对于本地上关联了远程的git上的项目,删除现有的关联,然后关联新创建的git项目
    UNI-APP_uni-simple-router的快速上手(路由,nui路由拦截)
    js之观察者模式和发布订阅模式区别
    Vue CLI 3.0脚手架如何在本地配置mock数据
    es6解构赋值和扩展运算符
    js Array数组详细操作方法及解析合集
    list排序
    java常用的object数据处理
    java 读写 txt 文件
  • 原文地址:https://www.cnblogs.com/hula100/p/7117913.html
Copyright © 2011-2022 走看看