Как да съхранявате потребителски предпочитания в приложение на Adobe Flex/AIR

Какъв е стандартният начин за съхраняване на потребителски предпочитания в приложение Flex за AIR? Трябва да съхранявам прости параметри като списъци с наскоро отворени файлове, позиции и размери на прозорци и т.н.


person geschema    schedule 13.06.2011    source източник


Отговори (4)


Мисля, че най-гъвкавият начин е да се използва локална база данни SQLite. Той ви дава неограничено, структурирано съхранение и криптиране, ако е необходимо. Вижте въведението на Peter Elst ако искате да получите повече информация.

person dain    schedule 13.06.2011
comment
Това е напълно валиден подход, въпреки че SQLite е наличен само за приложения на Adobe AIR – освен ако не го поставите на сървър; което е рядкост. Това е конкретната причина да не го спомена. Мисля обаче, че отговорих с впечатлението, че потребителят не задава конкретен въпрос за AIR, но препрочитайки въпроса, смятам, че разбирането ми е погрешно. И така, +1. - person JeffryHouser; 14.06.2011
comment
Защо SQLite е най-добрият начин според вас? Намирам SQLite за малко пресилен за повечето реализации на настройките. Ако всичко, което имате, е списък, предпочитам Споделени обекти... но може би пропускам ползата от използването на SQLite като практически най-добър начин. - person Brian Genisio; 14.06.2011
comment
Ако потребителските предпочитания определено ще останат малки, тогава Споделените обекти са по-лесни и по-подходящи, но причината, поради която предпочитам SQLite подхода, е гъвкавостта за разширяване, можете дори да запазвате миниатюри и т.н. Освен това, ако има парола за запазване, не съм сигурен дали наистина можете да защитите SO правилно, докато използването на криптиран SQLite е много просто. - person dain; 14.06.2011

любимият ми начин да го направя е да комбинирам VO с LSO (локален споделен обект). Ако имате МНОГО настройки, това не работи много добре. Предимството е, че получавате строго типизиран обект за настройки, който следователно е обвързващ и има интроспекция и завършване на код.

Готиното е, че има само около 5 реда код за управление на LSO. В допълнение, също така е доста лесно да управлявате локален криптиран магазин, ако искате да съхранявате чувствителни данни.

registerClassAlias("SettingsVO",SettingsVO);  //This lets us store a typed object in LSO
var settings:SettingsVO;
var settingsSO = SharedObject.getLocal("settings");   
//Check to make sure settings exist... if not, create a new settings object
if( settingsSO.size && settingsSO.data && settingsSO.data.settings){
    settings = settingsSO.data.settings as SettingsVO;
}else{
    settings = new SettingsVO();
}

Сега, ако искате да запазите настройките, просто го правете

settings.someSetting = "newValue";
settingsSO.data.settings = settings;
settingsSO.flush();

И това решение работи КАКТО на AIR, така и на Flex във всеки браузър. По-новите браузъри ще изтрият тези данни, когато изчистват бисквитките, така че внимавайте с това.

person Jonathan Rowny    schedule 13.06.2011

Няма "стандартен" начин, но има много подходи, всички които се свеждат до съхраняване на предпочитанията на потребителя, след това зареждането им по време на изпълнение въз основа на някои uesr идентификационни данни, след това промяна на приложението въз основа на тези предпочитания.

Можете да ги съхранявате в база данни от страна на сървъра, като SQL Server или MySQL; след това накарайте flex да извика услуга, която прави запитвания към базата данни и връща данните.

Можете да ги съхранявате като Споделени Обекти, които са Flash версията на бисквитките на браузъра. (Вярвам, че работят и на AIR приложения). Това може да стане тромаво с много данни.

Можете да ги съхранявате в XML документ и да ги хвърлите на сървъра. Концептуално това не е много по-различно от съхраняването им в база данни от страната на сървъра; но може да стане много досадно, ако имате много потребители.

Можете също така да ги съхранявате в приложение на AIR локално, като използвате база данни SQLite. SQLite е вградена база данни, използвана в Adobe AIR.

person JeffryHouser    schedule 13.06.2011
comment
@Babibu Грешите според тези документи: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/ . Споделените обекти са налични от AIR 1.0 нагоре. Моята мобилна игра, създадена с AIR, използва споделен обект за споделяне на игрови статистики; така че мога да потвърдя от личен опит, че те наистина работят. - person JeffryHouser; 03.12.2013
comment
Да, прав си, съжалявам. Също така гласувах против и не мога да отменя, освен ако отговорът не е редактиран. - person Ilya Gazman; 05.12.2013
comment
;) Редактирах го, отколкото да добавя връзка към живите документи на Споделени обекти от моя коментар. - person JeffryHouser; 05.12.2013

Не се занимавам с никакви изискани неща. Просто го запазете в xml файл в директорията на приложението. Свършен.

Filestream извежда грешка, ако се опитате да го съхраните с помощта на File.applicationDirectory. Просто измамвам програмата...

var trickFile:File = File.applicationDirectory;
var file:File = new File(trickFile.nativePath + mySettings.xml);

Въздухът пада за него всеки път.

person Andrew Benjamin    schedule 25.02.2013