在我们通过TestFlight部署的特定应用程序中,一些用户遇到了一个问题,即当通过蜂窝数据连接时,该应用程序根本无法发出Web请求。有问题的设备上的其他应用程序可以很好地处理蜂窝数据,而不是我们的数据。当用户切换到WiFi时,我们的应用程序 可以发出网络请求。在iPhone 8和iPhone X上均已观察到此行为。删除并重新安装该应用程序并重新启动设备不能解决问题。在其中一种iPhone 8情况下,将iOS更新到最新版本 did 可以解决此问题。我们确认在所有情况下,Settings > Cellular > [App name]
和Settings > [App name] > Use Cellular Data
中都为该应用程序启用了蜂窝数据。
该应用程序是使用React Native构建的,并且Web请求是通过cross-fetch
库执行的。
其他任何人之前都曾经历过这种行为吗?
答案 0 :(得分:4)
不幸的是,我们没有找到解决问题的明确答案,但是我们确实实现了解决方法。
蜂窝网络上的某些iOS 12.3.1 iPhone似乎存在一个问题,即亚马逊的ELB Classic总是发送“ Connection:keep-alive”响应标头。您可以更改负载均衡器的空闲超时,但不能将其设置为0(最小为1秒)。我们可以使用create-react-app
生成的新应用来重现iOS连接错误。这些请求一开始总是工作,然后开始始终失败。
我们通过从ELB切换到网络负载平衡器(AWS NLB)来解决此问题。 NLB直接与Nginx入口控制器对话。由于它位于TCP级别,因此NLB层不会更改标头。默认的Nginx控制器根本不发送“连接”响应头。使用此新设置,iOS应用程序可以在所有设备上正常运行。