PhoneGap/Cordova安卓应用无法单独通过3G/4G访问互联网

3
我遇到了一个问题,只有少数用户报告说他们无法在移动网络上使用我的应用程序(需要互联网访问)。他们完全无法访问网络以登录应用程序。但是该应用程序在Wi-Fi连接下完美运行。
请求显然是跨域的,服务器API已编程接受跨域请求。
服务器日志显示当用户尝试时甚至没有收到任何调用。
jQuery Ajax调用始终在进程启动后立即返回失败回调。
我已经检查了常见的问题,并且它们都没问题。
<access origin="*" />

在我的Android Manifest.xml文件中

<uses-permission android:name="android.permission.INTERNET" />

我已经尝试让用户完全卸载应用程序,然后重新安装。但是没有任何效果。

我感到困惑。有人能指出可能的解决方案吗?

使用Cordova版本3.1.0和Android最低SDK为15(4.0.1)

非常感谢。


奇怪,我从未听说过类似的事情。您能否询问他们是在哪些设备上出现了失败?也许我们可以找到一个规律……这似乎是那些古怪的硬件不一致性之一。 - MBillau
DROID RAZR MAXX HD 和 Samsung Galaxy Note 3 - intractve
两者都在Android > 4.0.1上,希望是这样吗? 一些类似的查询显示其他三星设备在蜂窝网络上使用ajax时出现问题。我记得三星设备通常比其他设备更容易出现问题。 您个人是否能够重现此问题?从普通移动浏览器访问您的服务器可能会很有用。也许您可以模拟一个具有相同ajax请求的页面,并要求这些用户在浏览器上访问该页面。 - MBillau
可能是由于3G延迟高所致。您是否为请求设置了超时时间? - zk_mars
我还没有设置超时。是的,其中一个设备是4.1.2,另一个是4.3。实际上,我正在为他们制作一个小应用程序,使用完全相同的插件和js文件,并仅为他们输出调试信息以便他们通过电子邮件发送给我。让我们看看效果如何。我在这里发布帖子,希望这是一个更普遍的问题。 - intractve
1个回答

1

我们终于找到了问题的根源。

这是一个DNS问题。我们的主要Web应用程序是托管在Google App Engine上的应用程序,并且我们在其中使用通配符子域名。

Android应用程序也联系同一域名下的子域名(mobile.{domain}.com),但这是托管在单独的服务器上的,不依赖于GAE。在移动网络上,Android应用程序的调用一直转到GAE应用程序而不是我在mobile.{domain}.com上设置的API端点,我想这可能是移动互联网的某种DNS传播问题。

但是这里有个关键点,子域名并不是新的,它们已经存在几年了。

为了解决这个问题,我设置了一个我们域名的.net指向同一台服务器,设置了一个端点,现在一切都好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接