我有一个我正在开发并最近部署到Google Play商店的Titanium Android应用。当我从Titanium Studio工作区直接在设备上安装它时,该应用程序工作得很好;但是,当我尝试从Google Play商店安装它时,它无效。这里讨论的“不起作用”功能是调用https Web服务来验证用户。此外,我注意到ICS用户可以从Play商店获取应用程序,而姜饼用户则不是,如果这有用。
这是导致问题的代码:
var actInd=Titanium.UI.createActivityIndicator({height:80, width:200, message:'Logging In...', font:{fontFamily:'Helvetica Neue', fontSize:18,fontWeight:'bold'}, color:'white', style: Titanium.UI.iPhone.ActivityIndicatorStyle.BIG});
actInd.show();
//Validating Data
var xhr2 = Titanium.Network.createHTTPClient();
xhr2.onload = function(){
var response=JSON.parse(this.responseText);
if(response.resultinfo.result){
ticket = response.resultinfo.ticket;
Titanium.App.Properties.setString("uname",username.value);
actInd.message='Successful...';
actInd.show();
}
};
xhr2.onerror = function(){
Ti.API.info('in utf-8 error for GET');
};
xhr2.open("GET","https://example.com/login.cfm");
xhr2.send({"userid":username.value,"password":password.value});
在问题情况下,应用程序只是挂起显示“登录...”消息。
答案 0 :(得分:2)
感谢@Hydrangea,我能够将问题隔离为证书验证错误。显然,在ICS之前的某些版本的Android存在问题,即使它们设置正确,也无法正确验证有效的SSL证书。 Titanium.Network.HTTPClient中有一个名为“validatesSecureCertificate”的设置,默认为false以进行测试,但在发布应用程序以进行分发时为true。这就是问题仅在Play商店版本上发生的原因。将此设置为false似乎可以解决问题,我相信在每个呼叫级别这样做是安全的。