Apple iOS 和 IPv6 截止日期

Apple iOS 和 IPv6 截止日期

2016 年 6 月 1 日开始,Apple 将开始强制执行一项新政策,您可能需要注意。如果您的应用执行任何网络操作,例如打开 WebView,执行 network.request(),或使用 LuaSocket 与其他服务器或设备通信,请继续阅读。 如果您没有这样做,您只需要了解以下内容:

总结:所有应用在 2016 年 6 月 1 日之后都必须符合 IPv6 标准。

一点历史

长期以来,互联网一直使用四字节 (0255) IP 地址来表示每个连接的设备。 在网络术语中,这被称为 IPv4。 您可能很熟悉它们,因为它们看起来像 192.168.1.15。这个数字池是全球资源,互联网已经用完了。

在过去的几年里,互联网一直在转向一种不同的方式来为您的计算机、手机、平板电脑和智能设备提供唯一的地址。 这个新系统被称为 IPv6,它有一个相当大的数字池,在很长一段时间内都不会用完。

由于互联网已经用完了 IPv4 地址,现在有一些资源只能通过其 IPv6 地址来识别。 Apple 希望确保您的应用都能使用新的网络编号。 从 2016 年 6 月 1 日开始,任何新提交或更新的应用都必须在仅允许 IPv6 地址的网络上工作。

这对您意味着什么?

您不能再使用 IP 地址代替服务器名称。 这适用于从 WebViews 到套接字调用的所有类型的网络。 有时,使用服务器的 IP 地址(例如 192.168.212.15)而不是服务器名称(例如 www.example.com)更容易,但现在不允许这样做。 如果您当前正在使用 IP 地址作为服务器,并且需要切换,请在 Internet 上搜索 动态 DNS,您会找到各种将服务器名称映射到 IP 地址的服务。 如果您已经有域名,请查看您注册商处的 DNS 设置,这将允许您设置自己的映射。

Corona SDK 有两个您的应用可能正在使用的底层网络层:network.* API 调用和 socket.* 库。 network.* API 调用已经与 IPv6 兼容了一段时间。 如果您使用的是最新的公共版本并且仅使用这些函数,那么从 Corona 的角度来看,您应该没问题。 但是,如果您使用服务器的 IP 地址而不是服务器名称连接到服务器,则需要停止使用 IP 地址并改用服务器名称。

如果您正在使用 socket.*,则需要获取 Daily Build 2016.2883 或更高版本并重新构建您的应用。 本质上,此版本已升级到支持 IPv6 的最新 LuaSocket 库。

您如何知道自己是否正在使用套接字?

如果您正在使用第三方插件或库,则可能需要确保它们按预期工作。如果您正在进行任何点对点连接(其中两个设备在不通过网络服务器的情况下相互通信),或者正在实现您自己的 FTP 文件传输,则您使用的库可能需要更新以避免使用 IP 地址。

如果您正在使用 LuaSocket,让我们看一些需要更改的典型代码

由于 socket.dns.toip() 调用仅适用于 IPv4 地址,因此需要将其更改为更现代的等效项

如果您已经更改为(或开始使用)更现代的 socket.dns.getaddrinfo() 样式调用,那么您应该可以正常工作了。

结论

在可预见的未来,iOS 将能够与 IPv4 站点通信。 但是,如果您的应用使用 Internet 的唯一方式是使用 IPv4,则 Apple 将不会批准您的应用或任何更新。 Apple 不会下架任何应用,因此您无需更新现有应用。 但是,您提交的任何更新或新应用都将受此政策的约束。

要了解更多信息,请阅读 Apple 关于此问题的开发者文档

Rob Miracle
[email protected]

Rob 是 Corona Labs 的开发人员关系经理。 除了热衷于帮助其他开发人员使用 Corona 制作出色的游戏外,他还喜欢在业余时间制作游戏。 Rob 自 1979 年以来一直从事从个人计算机到大型机的游戏编码工作。 他在游戏行业拥有超过 16 年的专业经验。

9 条评论
  • Mileni
    发布于 01:01,5 月 28 日

    这将如何影响 Coronium? 我可以在 DO 上注册一个域,但是 Coronium 是否已为 iPv6 做好准备?

    • Christian
      发布于 08:48,5 月 28 日

      在 DigitalOcean 上,您可以为您的 droplet 分配一个 IPv6 地址

      • Kevin
        发布于 15:11,6 月 2 日

        在我的 droplet 上分配了持久 IPv6 地址后,我现在同时拥有 IPv4 和 IPv6 地址。 您知道这是否满足 Apple 的要求吗,因为 coronium 仍然将旧的 IPv4 地址作为 appId?

        • Rob Miracle
          发布于 15:03,6 月 3 日

          Chris 说 Coronium 在使用 network.request() 方面是安全的,但我不知道该 IP 地址是否正在传递到 network.request 中。 我建议在 Coronium 论坛上提问,网址为 https://forums.coronalabs.com

  • Jeremiah
    发布于 10:11,5 月 31 日

    这可能会对任何使用像 AutoLAN 这样的旧 P2P 库的应用产生不利影响,因为它们不使用 DNS。 据推测,它们可以很容易地升级为使用 IPv6 API,但需要有人弄清楚。

    • scottrules44
      发布于 10:30,5 月 31 日

      我需要测试一下,但我认为自动局域网的更新应该仍然有效。我的游戏里有这个功能,很快就要发布了。如果有人在使用自动局域网时遇到任何问题,请在论坛上私信 @scottrules44 或给我发邮件。

  • Max
    发布于 6月1日 13:48

    感谢你对那个问题的完整解答。

  • Renato - 红滩
    发布于 6月10日 09:43

    我在使用每日构建版 2883 和更新后的 LuaSockets 时遇到了一些严重问题。更多信息请参见此处:https://forums.coronalabs.com/topic/63438-udp-socket-bug-on-daily-build-2883-and-later/