appcelerator titanium - Ti.App.Properties не работает на Android - PullRequest
0 голосов
/ 02 августа 2011

Я создаю мобильное приложение (iphone / android), используя appcelerator titanium. У меня проблема с использованием Ti.App.Properties, Я хочу сохранить данные для входа (имя пользователя и пароль), я использовал методы get.ist и setList Ti.App.Properties для получения и установки имени пользователя и пароля при запуске приложения. Он отлично работает на iPhone, но на Android данные (имя пользователя и пароль) не извлекаются при запуске приложения. Вот код, который выполняется при запуске приложения:

var userDataArray=[{title:'name',value:''}, 
                {title:'password',value:''}];
if(Ti.App.Properties.hasProperty("userDataArray"))
{
    userDataArray = Ti.App.Properties.getList("userDataArray");
}
else
{
    Ti.App.Properties.setList("userDataArray",userDataArray);
}
if((Ti.App.Properties.getList("userDataArray")[0].value.length==0)||(Ti.App.Properties.getList("userDataArray")[1].value.length==0))//check if name, password have no values.. on android, this is always the case, which is not correct
{
        //go to login page
}
else if((Ti.App.Properties.getList("userDataArray")[0].value.length>0)&&(Ti.App.Properties.getList("userDataArray")[1].value.length>0))//if both username and password exist
{
        //start
}

Спасибо

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

я думаю, что ваш общий подход некорректен, вам не нужен массив, просто карта

// save the values as a string..
Ti.App.Properties.setString({"username":"myname", "password":"mypassword"}, "CREDENTIALS");

// retrieve the values as a string, but parse it back into an object
var credObject = JSON.parse(Ti.App.Properties.getString("CREDENTIALS"));

// dump the output
Ti.API.debug("Username "+ credObject.username);
Ti.API.debug("Password "+ credObject.password);
0 голосов
/ 26 июля 2013

Я знаю, что это старая версия, но она актуальна и сегодня, так как с Titanium не так уж много помощи. Я разбираюсь с этим в двух частях.

Часть 1) После аутентификации учетных данных пользователя ...

var username = "some username";
var password = "some password";

// Build the object and then convert it to a json string.
oCredentials = new Object();
oCredentials.username = username;
oCredentials.password = password;
var stringCredentials = JSON.stringify(oCredentials);

// Save the credentials
Ti.App.Properties.setString("Credentials", stringCredentials);

Часть 2) Прежде чем предлагать пользователю окно входа / всплывающее окно / что угодно ...

// Look for credentials
(function() {
    var storedCredentials = Ti.App.Properties.getString("Credentials");

    if (storedCredentials){
        var oJson = JSON.parse(storedCredentials);

        // Call your authentication function
        // For example, autoAuthenticate(oJson.username, oJson.password);
    } else {
        // kick the user out to your login window
        // For example, $.loginWindow.open();
    }
})();
0 голосов
/ 01 июля 2012

два замечания:

  • аргументы для .setString () противоположны, т. Е. Имя, затем Значение
  • Значение должно быть строкой, поэтому необходимоstringify () или введите его как строку
...