2012-05-08 5 views
1

У меня есть приложение для Android Titanium, которое я разрабатываю и недавно развернуто в магазине Google Play. Приложение прекрасно работает, когда я устанавливаю его непосредственно на устройство из рабочего пространства Titanium Studio; однако, когда я пытаюсь установить его из магазина Google Play, он не работает. Функция «не работает» здесь является вызовом веб-службы https для аутентификации пользователя. Кроме того, я заметил, что пользователи ICS могут получить приложение для работы в магазине Play, тогда как пользователи Gingerbread - нет, если это полезно.Что может заставить приложение работать при установке через USB, но не при установке из магазина 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

Что-нибудь полезное в журнале adb? – Turnsole

+0

Ну, когда я использую adb для загрузки приложения, все работает нормально. Я не совсем уверен, как видеть журналы для вещей, которые запускаются из магазина Play. Я не вижу там сообщений о сбоях. – Kyle

+1

Запустите приложение, установленное в Play, затем запустите adb logcat. Если вы используете ADB только из Eclipse, откройте перспективу DDMS и выделите текущее устройство (конечно, оно должно быть подключено) на вкладке «Устройства». На вкладке LogCat должен отображаться вывод. – Turnsole

ответ

2

Благодаря @Hydrangea я смог изолировать проблему как ошибку проверки сертификата. По-видимому, есть проблема с некоторыми версиями Android до того, как ICS неправильно проверит действительные SSL-сертификаты, даже если они настроены правильно. Существует параметр в Titanium.Network.HTTPClient под названием «validatesSecureCertificate», для которого по умолчанию используется значение false для тестирования, но для true, когда приложение выпущено для распространения. Вот почему проблема возникла только в версии Play Store. Полагаю, что это ложь, похоже, решает проблему, и я считаю, что это безопасно для каждого уровня вызова.

+0

Hummm у вас есть идея, если его ошибка аппликатора и если они исправит его в ближайшее время? – Canastro

+0

Они документированы, поэтому я предполагаю, что они не признают, что это ошибка на их конце. – Kyle

+0

Определенно не ошибка. Забавно, что вы столкнулись с этим месяцем назад, вот новое сообщение в блоге, обсуждающее это свойство: http://developer.appcelerator.com/blog/2012/11/the-titanium-sdk-and-certificate-validation.html – Justin

Смежные вопросы