Как сохранить некоторые пользовательские данные локально в приложении Xamarin Forms?
У меня есть простое приложение Xamarin Forms. Теперь у меня есть простой объект POCO (например, экземпляр User
или список последних твитов или ордеров или что-то еще).
Как я могу сохранить этот объект локально на устройстве? Предположим, что я сериализую его как JSON.
Кроме того, насколько безопасны эти данные? Является ли он частью брелок и т.д.? Авто резервное копирование?
ура!
Ответы
Ответ 1
У вас есть несколько вариантов.
- SQLite. Этот вариант является кросс-платформенным и работает хорошо, если у вас много данных. Вы получаете дополнительный бонус поддержки транзакций и асинхронную поддержку. EDIT. В прошлом я предложил использовать SQLite.Net-PCL. Благодаря issues с поддержкой Android 7.0 (и явным закатом на поддержку), я теперь рекомендую использовать проект, который изначально был разветвлен: sqlite-net
- Локальное хранилище. Там большой nuget, который поддерживает межплатформенное хранилище. Для получения дополнительной информации см. PCLStorage
- Там также Application.Current.Properties, реализованный в Xamarin.Forms, которые позволяют простые пары данных Key-Value.
Я думаю, вам придется исследовать и выяснить, какой маршрут лучше всего подходит вашим потребностям.
Что касается безопасности, это зависит от того, где вы размещаете свои данные на каждом устройстве. Android хранит данные приложения в защищенной папке приложения по умолчанию (не все, что защищено, если вы укоренены). iOS имеет несколько разных папок для хранения данных на основе различных потребностей. Подробнее здесь: Хранилище данных iOS
Ответ 2
Другой вариант - это плагин настроек xamarin forms https://github.com/jamesmontemagno/SettingsPlugin. Если вам нужен магазин, например. пользовательский экземпляр, просто сериализуйте его в json при сохранении и десериализации его при чтении.
Использует собственное управление настройками
- Android: SharedPreferences
- iOS: NSUserDefaults
- Windows Phone: IsolatedStorageSettings
-
Windows RT/UWP: ApplicationDataContainer
public User CurrentUser
{
get
{
User user = null;
var serializedUser = CrossSettings.Current.GetValueOrDefault<string>(UserKey);
if (serializedUser != null)
{
user = JsonConvert.DeserializeObject<User>(serializedUser);
}
return user;
}
set
{
CrossSettings.Current.AddOrUpdateValue(UserKey, JsonConvert.SerializeObject(value));
}
}
Ответ 3
Пожалуйста, используйте Xamarin.Essentials
Класс Preferences помогает хранить настройки приложения в хранилище ключей/значений.
Чтобы сохранить значение:
Preferences.Set("my_key", "my_value");
Чтобы получить значение:
var myValue = Preferences.Get("my_key", "default_value");
Ответ 4
Если это значение ключа (одно значение) для хранения данных, следуйте приведенному ниже коду
Application.Current.Properties["AppNumber"] = "123"
await Application.Current.SavePropertiesAsync();
Получение того же значения
var value = Application.Current.Properties["AppNumber"];