webentwicklung-frage-antwort-db.com.de

Wie kann ich einige Benutzerdaten lokal in meiner Xamarin Forms-App speichern?

Ich habe eine einfache Xamarin Forms App. Ich habe jetzt ein einfaches POCO-Objekt (z. B. User Instanz oder eine Liste der neuesten Tweets oder Bestellungen oder was auch immer).

Wie kann ich dieses Objekt lokal auf dem Gerät speichern? Stellen wir uns vor, ich serialisiere es als JSON.

Wie sicher sind diese Daten? Ist es ein Teil von Keychains, etc.? Automatisch gesichert?

prost!

42
Pure.Krome

Sie haben ein paar Möglichkeiten.

  1. SQLite. Diese Option ist plattformübergreifend und funktioniert gut, wenn Sie über viele Daten verfügen. Sie erhalten den zusätzlichen Bonus von Transaktionsunterstützung und Async-Unterstützung. [~ # ~] edit [~ # ~] : In der Vergangenheit habe ich vorgeschlagen, SQLite.Net-PCL zu verwenden. Aufgrund von Problemen mit Android 7.0-Unterstützung (und einer offensichtlichen Einstellung der Unterstützung) empfehle ich jetzt, das Projekt zu verwenden, das ursprünglich aus SQLite) stammte -net
  2. Lokaler Speicher. Es gibt ein großartiges Nuget, das plattformübergreifenden Speicher unterstützt. Weitere Informationen finden Sie unter PCLStorage
  3. In Xamarin.Forms ist auch Application.Current.Properties implementiert, das einfache Schlüssel-Wert-Datenpaare ermöglicht.

Ich denke, Sie müssen nachforschen und herausfinden, welche Route Ihren Bedürfnissen am besten entspricht.

Was die Sicherheit anbelangt, hängt dies davon ab, wo Sie Ihre Daten auf jedem Gerät ablegen. Android speichert App-Daten standardmäßig in einem sicheren App-Ordner (nicht ganz so sicher, wenn Sie als Root angemeldet sind). IOS verfügt über verschiedene Ordner für die Datenspeicherung, die auf unterschiedlichen Anforderungen basieren. Lesen Sie hier mehr: - iOS Datenspeicher

71
Will Decker

Eine andere Option ist das xamarin Forms Settings Plugin https://github.com/jamesmontemagno/SettingsPlugin . Wenn Sie ein Geschäft benötigen, z. Benutzerinstanz, serialisieren Sie sie beim Speichern auf json und deserialisieren Sie sie beim Lesen.

Verwendet die native Einstellungsverwaltung

  • 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));
         }
      }
    
19
puko

Benutzen Sie bitte Xamarin.Essentials

Die Preferences-Klasse hilft beim Speichern von Anwendungseinstellungen in einem Schlüssel-/Wertespeicher.

So speichern Sie einen Wert:

Preferences.Set("my_key", "my_value");

So erhalten Sie einen Wert:

var myValue = Preferences.Get("my_key", "default_value");
6
chunhunghan