11

Chciałbym wiedzieć, jakie jest najlepsze rozwiązanie do manipulowania ustawieniami aplikacji w sposób międzyplatformowy.Xamarin Forms Sharedpreferences krzyż

W iOS możemy zmienić ustawienia poza aplikacją na ekranie ustawień, ale nie mamy tego w telefonie z systemem Windows i Androidzie.

Tak więc, moim pomysłem jest stworzenie normalnej strony/ekranu wewnątrz aplikacji, która pokazuje wszystkie moje ustawienia aplikacji i interfejs z metodami Save() i Get(), które mogę zaimplementować dla każdego urządzenia za pomocą DependencyServices.

Czy to właściwy sposób?

Odpowiedz

16
  1. Podklasa aplikacji ma statyczny słownik właściwości, który może służyć do przechowywania danych. Dostęp do tego można uzyskać z dowolnego miejsca w kodzie Xamarin.Forms za pomocą Application.Current.Properties.
Application.Current.Properties ["id"] = someClass.ID; 

if (Application.Current.Properties.ContainsKey("id")) 
{ 
    var id = Application.Current.Properties ["id"] as int; 
    // do something with id 
} 

słowniku Właściwości są zapisywane w urządzeniu automatycznie. Dane dodane do słownika będą dostępne, gdy aplikacja powróci z tła lub nawet po ponownym uruchomieniu. Xamarin.Forms 1.4 wprowadził dodatkową metodę klasy Application - SavePropertiesAsync() - która może być wywołana, aby aktywnie utrzymywać słownik właściwości. Pozwala to na zapisywanie właściwości po ważnych aktualizacjach, zamiast ryzykować, że nie zostaną zduplikowane z powodu awarii lub zabicia przez system operacyjny.

https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/

  1. Xamarin.Forms plugin który wykorzystuje natywne zarządzanie ustawieniami.

    • Android: SharedPreferences
    • iOS: NSUserDefaults
    • Windows Phone: IsolatedStorageSettings
    • systemu Windows Store/Windows Phone RT: ApplicationDataContainer

https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

+0

Dzięki za pomoc. Tylko jedno i czy chcę mieć ustawienia poza aplikacją w iOS i innych formatach w aplikacji? Więc muszę zrobić to, co powiedziałem wcześniej, prawda?Ponieważ jest bardziej szczegółowy, więc mogę wstrzyknąć lub nie ekran ustawień w aplikacji, jeśli Device.OS! = IOS – user1845593

+1

Tak, musisz sprawdzić Device.OS i włączyć/wyłączyć stronę ustawień. Aby mieć ustawienia poza aplikacją (menu ustawień), musisz użyć drugiego, natywnego podejścia i nie zapomnij dodać Settings.Bundle (http://useyourloaf.com/blog/adding-a-settings-bundle-to- an-iphone-app.html) –

+1

Dla ustawień takich jak string, int lub jakakolwiek inna prosta struktura danych naprawdę polecam moją wtyczkę ustawień. Używam go przez ponad 4 lata we wszystkich moich aplikacjach i zapisuje się w natywnym systemie zarządzania, jak powiedział Daniel. Dodatkowo działa dla KAŻDEGO typu aplikacji zbudowanej z Xamarin.Forms lub tradycji. Właśnie nagrałem tego ranka na żywo: https://www.youtube.com/watch?v=VNPLxeq9ZII&feature=youtu.be – JamesMontemagno

0

I t za pomocą Application.Current.Properties Dictionary i miał problemy z implementacją.

Rozwiązaniem, które działało przy niewielkim wysiłku, był James Montemagno Xam.Plugin.Settings NuGet. GitHub Zainstalowanie NuGet automagicznie tworzy folder Helpers z Settings.cs. Aby utworzyć trwało ustawianie zrobić:

private const string QuestionTableSizeKey = "QuestionTableSizeKey"; 
    private static readonly long QuestionTableSizeDefault = 0; 

i

public static long QuestionTableSize 
    { 
     get 
     { 
      return AppSettings.GetValueOrDefault<long>(QuestionTableSizeKey, QuestionTableSizeDefault); 
     } 
     set 
     { 
      AppSettings.AddOrUpdateValue<long>(QuestionTableSizeKey, value); 
     } 
    } 

Access i ustawienie w aplikacji, a następnie wygląda następująco:

namespace XXX 
{ 
    class XXX 
    { 
     public XXX() 
     { 
       long myLong = 495; 
       ... 
       Helpers.Settings.QuestionTableSize = myLong; 
       ... 
       long oldsz = Helpers.Settings.QuestionTableSize;     
     } 
    } 

} 
Powiązane problemy