1

我有一个我正在开发并最近部署到 Google Play 商店的 Titanium Android 应用程序。当我从 Titanium Studio 工作区直接将其安装到设备上时,该应用程序运行良好;但是,当我尝试从 Google Play 商店安装它时,它不起作用。这里有问题的“不起作用”功能是调用 https Web 服务来验证用户身份。此外,我注意到 ICS 用户能够让应用程序从 Play 商店运行,而 Gingerbread 用户则不能,如果这有帮助的话。

这是导致问题的代码:

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});

在问题的情况下,应用程序只是挂起显示“登录...”消息。

4

1 回答 1

2

感谢@Hydrangea,我能够将问题隔离为证书验证错误。显然,在 ICS 之前的某些版本的 Android 存在问题,即使它们设置正确,也无法正确验证有效的 SSL 证书。Titanium.Network.HTTPClient中有一个名为“validatesSecureCertificate”的设置,默认为 false 用于测试,但在发布应用程序以进行分发时为 true。这就是为什么仅在 Play 商店版本上出现问题的原因。将此设置为 false 似乎可以解决问题,我相信在每次调用级别这样做是安全的。

于 2012-05-08T19:43:43.223 回答