Какъв е стандартният начин за съхраняване на потребителски предпочитания в приложение Flex за AIR? Трябва да съхранявам прости параметри като списъци с наскоро отворени файлове, позиции и размери на прозорци и т.н.
Как да съхранявате потребителски предпочитания в приложение на Adobe Flex/AIR
Отговори (4)
Мисля, че най-гъвкавият начин е да се използва локална база данни SQLite. Той ви дава неограничено, структурирано съхранение и криптиране, ако е необходимо. Вижте въведението на Peter Elst ако искате да получите повече информация.
любимият ми начин да го направя е да комбинирам 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 във всеки браузър. По-новите браузъри ще изтрият тези данни, когато изчистват бисквитките, така че внимавайте с това.
Няма "стандартен" начин, но има много подходи, всички които се свеждат до съхраняване на предпочитанията на потребителя, след това зареждането им по време на изпълнение въз основа на някои uesr идентификационни данни, след това промяна на приложението въз основа на тези предпочитания.
Можете да ги съхранявате в база данни от страна на сървъра, като SQL Server или MySQL; след това накарайте flex да извика услуга, която прави запитвания към базата данни и връща данните.
Можете да ги съхранявате като Споделени Обекти, които са Flash версията на бисквитките на браузъра. (Вярвам, че работят и на AIR приложения). Това може да стане тромаво с много данни.
Можете да ги съхранявате в XML документ и да ги хвърлите на сървъра. Концептуално това не е много по-различно от съхраняването им в база данни от страната на сървъра; но може да стане много досадно, ако имате много потребители.
Можете също така да ги съхранявате в приложение на AIR локално, като използвате база данни SQLite. SQLite е вградена база данни, използвана в Adobe AIR.
Не се занимавам с никакви изискани неща. Просто го запазете в xml файл в директорията на приложението. Свършен.
Filestream извежда грешка, ако се опитате да го съхраните с помощта на File.applicationDirectory. Просто измамвам програмата...
var trickFile:File = File.applicationDirectory;
var file:File = new File(trickFile.nativePath + mySettings.xml);
Въздухът пада за него всеки път.