Подтвердить что ты не робот

Как сохранить некоторые пользовательские данные локально в приложении Xamarin Forms?

У меня есть простое приложение Xamarin Forms. Теперь у меня есть простой объект POCO (например, экземпляр User или список последних твитов или ордеров или что-то еще).

Как я могу сохранить этот объект локально на устройстве? Предположим, что я сериализую его как JSON.

Кроме того, насколько безопасны эти данные? Является ли он частью брелок и т.д.? Авто резервное копирование?

ура!

4b9b3361

Ответ 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"];