2015-07-27 18 views
20

Mam prostą aplikację Xamarin Forms. Mam teraz prosty obiekt POCO (np. User instancja lub listę najnowszych tweetów lub zamówień lub cokolwiek innego).Jak mogę lokalnie zapisać niektóre dane użytkownika w mojej aplikacji Xamarin Forms?

Jak mogę przechowywać ten obiekt lokalnie na urządzeniu? Wyobraźmy sobie, że serializuję to jako JSON.

Ponadto, jak bezpieczne są te dane? Czy to część Keychains, itp? Automatyczne tworzenie kopii zapasowych?

Pozdrawiam!

Odpowiedz

43

Masz kilka opcji.

  1. SQLite. Ta opcja jest wieloplatformowa i działa dobrze, jeśli masz dużo danych. Otrzymasz dodatkową premię w zakresie obsługi transakcji i wsparcia asynchronicznego. EDYCJA: W przeszłości zasugerowałem użycie SQLite.Net-PCL. Z powodu issues z obsługą Androida 7.0 (i widocznym wygaśnięciem wsparcia), teraz polecam korzystanie z projektu, który był pierwotnie rozwidlony z: sqlite-net
  2. Lokalne przechowywanie. Jest świetny nuget, który obsługuje wiele platform. Aby uzyskać więcej informacji, zobacz PCLStorage
  3. Istnieje również Application.Current.Properties zaimplementowana w Xamarin.Forms, które umożliwiają proste pary danych klucz-wartość.

Myślę, że będziesz musiał zbadać i dowiedzieć się, która trasa najlepiej spełnia Twoje potrzeby.

Co do bezpieczeństwa, zależy to od miejsca umieszczenia danych na każdym urządzeniu. Android domyślnie przechowuje dane aplikacji w bezpiecznym folderze aplikacji (nie jest to bezpieczne, jeśli jesteś zrootowany). iOS ma kilka różnych folderów do przechowywania danych w zależności od różnych potrzeb. Przeczytaj więcej tutaj: iOS Data Storage

+0

FYI, ten trzeci link (Application.Current.Properties) jest nieaktualny - prowadzi do strony o nazwie "Praca z cyklem życia aplikacji", bez sekcji dotyczących Application.Current.Properties. – jbyrd

+0

Dzięki @jbyrd, należy teraz naprawić. –

+0

Idealne, dzięki! Dobry punkt odniesienia. – jbyrd

9

Inną opcją jest wtyczka ustawień formularzy xamarin https://github.com/jamesmontemagno/SettingsPlugin. Jeśli potrzebujesz przechowywać np. Instancja użytkownika, po prostu serializuj ją do json podczas przechowywania i deserializacji podczas czytania.

używa natywnych Zarządzanie ustawieniami

  • 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)); 
        } 
        } 
    
Powiązane problemy