我在钛工作室开发了一个应用程序,一切正常。至少在我的国家(葡萄牙)。当我将我的应用程序发送给Apple审核时,他们无法连接到具有我的应用程序所需信息的服务器。
这就是我连接服务器的方式:
function getData() {
if (Ti.Network.networkType == Ti.Network.NETWORK_NONE) {
var dialog = Ti.UI.createAlertDialog({
ok : 'OK'
});
dialog.message = 'Check your Internet connection.';
dialog.title = 'Alert';
dialog.show();
} else {
var client = Ti.Network.createHTTPClient({
onload : function(e) {
},
onerror : function(e) {
},
timeout : 30000
});
client.open("POST", 'http://approteiros.virtualweb.pt/site/ajax.php');
client.send({
action : 'my_action'
});
}
}
如果它在葡萄牙工作但不在美国工作会有什么问题?
我的TiApp.xml文件:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
我已将此添加到我的XML文件中。
答案 0 :(得分:1)
从美国东海岸,ping到您的服务器大约是328毫秒,为您提供一个参考点。
所以,尽管如此,让我们从#2开始。您的代码段显示了非ssl网址,您是否在tiapp.xml的<ios>
部分添加了应用传输安全例外?
我们的大量客户使用AWS进行托管。即使在美国各地,从一个海岸到另一个海岸的连接也可能与连接自己的海岸有不同的体验。
在我们的一些应用中,我们添加了2个功能。
设置一个基本超时,我们默认为10000毫秒(你的30000毫秒应该足够了)。在每次XHR超时时,我们将其增加5000。
我们要做的第二件事是根据设备报告的时区偏移调整默认值。因此,如果服务器是基于美国的,对于美国大陆的5个可能的时区(为夏令时添加一个),我们设置合理的超时10000,然后对于所有其他时间,我们从25000开始。
< / LI> 醇>