Каков стандартный способ хранения пользовательских настроек в приложении Flex для AIR? Мне нужно хранить простые параметры, такие как списки недавно открытых файлов, положения и размеры окон и т. Д.
Как сохранить настройки пользователя в приложении Adobe Flex / AIR
Ответы (4)
Я думаю, что наиболее гибкий способ - использовать локальную базу данных SQLite. Это дает вам неограниченное структурированное хранилище и при необходимости шифрование. См. введение Питера Элста если вы хотите получить больше информации.
Мой любимый способ сделать это - объединить VO с LSO (локальный общий объект). Если у вас много настроек, это не сработает. Преимущество состоит в том, что вы получаете строго типизированный объект настроек, который поэтому привязывается и имеет самоанализ и завершение кода.
Круто то, что для управления LSO достаточно всего 5 строк кода. Кроме того, если вы хотите хранить какие-либо конфиденциальные данные, также довольно легко управлять локальным зашифрованным хранилищем.
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 в любом браузере. Новые браузеры удаляют эти данные при очистке файлов cookie, так что будьте осторожны.
Не существует «стандартного» способа, но существует множество подходов, все из которых сводятся к сохранению предпочтений пользователя, их последующей загрузке во время выполнения на основе некоторых учетных данных uesr и последующему изменению приложения на основе этих предпочтений.
Вы можете хранить их в базе данных на стороне сервера, такой как SQL Server или MySQL; затем используйте flex для вызова службы, которая запрашивает базу данных и возвращает данные.
Вы можете сохранить их как Shared Objects, которые представляют собой Flash-версию файлов cookie браузера. (Я считаю, что они работают и с приложениями 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);
Воздух попадает в нее каждый раз.