我构建了一个部署在tomcat服务器上的GWT应用程序。我的应用程序旨在用作强制门户解决方案的登录网关。当设备连接到我们的wifi热点时,用户会重定向到我们的GWT应用程序,并会提示他们登录/注册,然后才能使用我们的wifi连接。
我使用Android设备做一些测试,一切顺利,GWT应用程序在Android伪浏览器中显示。但是当我们使用iOS设备(如iPhone 6等)进行一些测试时,事情变得奇怪,GWT应用程序没有在iOS伪浏览器中显示。每当我尝试连接到wifi热点并启用自动登录时,伪浏览器将出现在“设置”菜单中,并且只显示白色空白页。
此外,我试图在我的GWT应用程序中放置一些window.alert,首先在onModuleLoad中,其他在一些子模块中,当我再次测试时,没有提示单个警报。所以我假设甚至没有调用onModuleLoad。 我对这个问题有两个问题:
注意:我在GWT应用程序中使用mvp4g和gxt。
更新1
伪浏览器是一个系统浏览器,例如当我们尝试使用iOS设备连接到强制门户wifi时,在设置菜单中,系统将启动重定向到登录URL的本机或内部webview。我发布的屏幕截图是伪浏览器的一个例子。所以我使用的是真正的设备,而不是模拟器。 我可能知道这个问题的根本原因,但我找不到解决此问题的解决方法或解决方案。因此看起来我的GXT应用程序无法正常工作,因为在iOS伪浏览器中无法识别用户代理。我在尝试使用同一设备上的safari浏览器访问我的GXT应用程序时进行比较,用户代理是正确的。我附上了截图:
我试图在我的gwt.xml文件中覆盖gxt.user.agent,如下所示:
<property-provider name="gxt.user.agent">
<![CDATA[{
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('edge/') != -1) return 'edge';
if (ua.indexOf('chrome') != -1) return 'chrome';
if (ua.indexOf('trident') != -1 || ua.indexOf('msie') != -1) {
if ($doc.documentMode >= 11) return 'ie11';
if ($doc.documentMode >= 10) return 'ie10';
if ($doc.documentMode >= 9) return 'ie9';
if ($doc.documentMode >= 8) return 'ie8';
return 'ie10';
}
if (ua.indexOf('safari') != -1) {
if (ua.indexOf('version/3') != -1) return 'safari3';
if (ua.indexOf('version/3') != -1) return 'safari4';
return 'safari5';
}
if (ua.indexOf('gecko') != -1) {
if (ua.indexOf('rv:1.8') != -1) return 'gecko1_8';
return 'gecko1_9';
}
if (ua.indexOf('adobeair') != -1) return 'air';
return 'safari5';
}]]>
</property-provider>
但仍然没有为我工作,请帮助我。谢谢和问候。