Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Napiwek
Ta zawartość jest fragmentem książki eBook, wzorców aplikacji dla przedsiębiorstw przy użyciu platformy .NET, dostępnej na platformie .NET MAUIDocs lub jako bezpłatnego pliku PDF do pobrania, który można odczytać w trybie offline.
Ustawienia umożliwiają rozdzielenie danych, które konfigurują zachowanie aplikacji z kodu, co pozwala na zmianę zachowania bez ponownego kompilowania aplikacji. Istnieją dwa typy ustawień: ustawienia aplikacji i ustawienia użytkownika.
Ustawienia aplikacji to dane tworzone przez aplikację i zarządzane przez nią. Może zawierać dane, takie jak stałe punkty końcowe usługi internetowej, klucze interfejsu API i stan środowiska uruchomieniowego. Ustawienia aplikacji są powiązane z podstawową funkcjonalnością i mają znaczenie tylko dla tej aplikacji.
Ustawienia użytkownika to dostosowywalne ustawienia aplikacji, które wpływają na zachowanie aplikacji i nie wymagają częstego ponownego dostosowywania. Na przykład aplikacja może pozwolić użytkownikowi określić, gdzie pobrać dane i jak wyświetlić je na ekranie.
Tworzenie interfejsu ustawień
Menedżer preferencji może być używany bezpośrednio w aplikacji, ale ma wadę, dzięki czemu aplikacja jest ściśle połączona z implementacją menedżera preferencji. To sprzężenie oznacza, że tworzenie testów jednostkowych lub rozszerzanie funkcjonalności zarządzania preferencjami będzie ograniczone, ponieważ aplikacja nie będzie miała bezpośredniego sposobu przechwytywania zachowania. Aby rozwiązać ten problem, można utworzyć interfejs do pracy jako serwer proxy do zarządzania preferencjami. Interfejs pozwoli nam dostarczyć implementację zgodną z naszymi potrzebami. Na przykład podczas pisania testu jednostkowego możemy chcieć ustawić określone ustawienia, a interfejs zapewni nam łatwy sposób spójnego ustawiania tych danych na potrzeby testu. Poniższy przykład kodu przedstawia ISettingsService interfejs w aplikacji wieloplatformowej eShop:
namespace eShop.Services.Settings;
public interface ISettingsService
{
string AuthAccessToken { get; set; }
string AuthIdToken { get; set; }
bool UseMocks { get; set; }
string IdentityEndpointBase { get; set; }
string GatewayShoppingEndpointBase { get; set; }
string GatewayMarketingEndpointBase { get; set; }
bool UseFakeLocation { get; set; }
string Latitude { get; set; }
string Longitude { get; set; }
bool AllowGpsLocation { get; set; }
}
Dodawanie ustawień
Platforma .NET MAUI zawiera menedżera preferencji, który umożliwia przechowywanie ustawień środowiska uruchomieniowego dla użytkownika. Dostęp do tej funkcji można uzyskać z dowolnego miejsca w aplikacji przy użyciu Microsoft.Maui.Storage.Preferences klasy . Menedżer preferencji zapewnia spójne, bezpieczne dla typów, międzyplatformowe podejście do utrwalania i pobierania ustawień aplikacji i użytkowników przy użyciu natywnego zarządzania ustawieniami udostępnianymi przez każdą platformę. Ponadto w celu uzyskania dostępu do danych uwidocznionych przez bibliotekę można łatwo użyć powiązania danych danych. Aby uzyskać więcej informacji, zobacz Preferencje w Centrum deweloperów firmy Microsoft.
Napiwek
Preferencje są przeznaczone do przechowywania stosunkowo małych danych. Jeśli musisz przechowywać większe lub bardziej złożone dane, rozważ użycie lokalnej bazy danych lub systemu plików do przechowywania danych.
Nasza aplikacja będzie używać klasy potrzebnej Preferences do zaimplementowania interfejsu ISettingsService . Poniższy kod pokazuje, jak aplikacja SettingsService wieloplatformowa eShop implementuje AuthTokenAccess właściwości i UseMocks :
public sealed class SettingsService : ISettingsService
{
private const string AccessToken = "access_token";
private const string AccessTokenDefault = string.Empty;
private const string IdUseMocks = "use_mocks";
private const bool UseMocksDefault = true;
public string AuthAccessToken
{
get => Preferences.Get(AccessToken, AccessTokenDefault);
set => Preferences.Set(AccessToken, value);
}
public bool UseMocks
{
get => Preferences.Get(IdUseMocks, UseMocksDefault);
set => Preferences.Set(IdUseMocks, value);
}
}
Każde ustawienie składa się z klucza prywatnego, wartości domyślnej prywatnej i właściwości publicznej. Klucz jest zawsze ciągiem const, który definiuje unikatową nazwę, z wartością domyślną ustawienia jako statyczną wartością tylko do odczytu lub stałą wymaganego typu. Podanie wartości domyślnej gwarantuje, że prawidłowa wartość jest dostępna, jeśli zostanie pobrane ustawienie bez ustawienia. Tę implementację usługi można udostępnić za pośrednictwem wstrzykiwania zależności do naszej aplikacji do użycia w modelach widoków lub innych usługach w całej aplikacji.
Powiązanie danych z ustawieniami użytkownika
W aplikacji wieloplatformowej eShop uwidacznia wiele ustawień, SettingsView które użytkownik może skonfigurować w czasie wykonywania. Te ustawienia obejmują umożliwienie konfiguracji, czy aplikacja powinna pobierać dane z mikrousług wdrożonych jako kontenery platformy Docker, czy też aplikacja powinna pobierać dane z pozorowanych usług, które nie wymagają połączenia internetowego. Podczas pobierania danych z konteneryzowanych mikrousług należy określić podstawowy adres URL punktu końcowego dla mikrousług. Na poniższej ilustracji przedstawiono element SettingsView, gdy użytkownik zdecydował się pobrać dane z konteneryzowanych mikrousług.
Powiązanie danych może służyć do pobierania i ustawiania ustawień uwidocznionych przez ISettingService interfejs. Jest to osiągane przez kontrolki powiązania widoku, aby wyświetlić właściwości modelu, które z kolei uzyskują dostęp do właściwości w interfejsie ISettingService i zgłaszają powiadomienie o zmianie właściwości, jeśli wartość uległa zmianie.
Poniższy przykład kodu przedstawia kontrolkę Entry z elementu SettingsView , która umożliwia użytkownikowi wprowadzenie podstawowego adresu URL punktu końcowego tożsamości dla konteneryzowanych mikrousług:
<Entry Text="{Binding IdentityEndpoint, Mode=TwoWay}" />
Ta Entry kontrolka IdentityEndpoint wiąże się z właściwością SettingsViewModel klasy przy użyciu powiązania dwukierunkowego. Poniższy przykład kodu przedstawia IdentityEndpoint właściwość :
private readonly ISettingsService _settingsService;
private string _identityEndpoint;
public SettingsViewModel(
ILocationService locationService, IAppEnvironmentService appEnvironmentService,
IDialogService dialogService, INavigationService navigationService, ISettingsService settingsService)
: base(dialogService, navigationService, settingsService)
{
_settingsService = settingsService;
_identityEndpoint = _settingsService.IdentityEndpointBase;
}
public string IdentityEndpoint
{
get => _identityEndpoint;
set
{
SetProperty(ref _identityEndpoint, value);
if (!string.IsNullOrWhiteSpace(value))
{
UpdateIdentityEndpoint();
}
}
}
Po ustawieniu IdentityEndpoint właściwości wywoływana UpdateIdentityEndpoint jest metoda, pod warunkiem, że podana wartość jest prawidłowa. Poniższy przykład kodu przedstawia metodę UpdateIdentityEndpoint :
private void UpdateIdentityEndpoint()
{
_settingsService.IdentityEndpointBase = _identityEndpoint;
}
Ta metoda aktualizuje IdentityEndpointBase właściwość w implementacji interfejsu ISettingService przy użyciu wartości podstawowego adresu URL punktu końcowego wprowadzonej przez użytkownika. Jeśli klasa zostanie podana SettingsService jako implementacja dla _settingsServiceelementu , wartość będzie utrzymywana w magazynie specyficznym dla platformy.
Podsumowanie
Ustawienia umożliwiają rozdzielenie danych, które konfigurują zachowanie aplikacji z kodu, co pozwala na zmianę zachowania bez ponownego kompilowania aplikacji. Ustawienia aplikacji to dane tworzone przez aplikację i zarządzanie nimi, a ustawienia użytkownika to dostosowywalne ustawienia aplikacji, które mają wpływ na zachowanie aplikacji i nie wymagają częstego ponownego dostosowywania.
Klasa Microsoft.Maui.Storage.Preferences zapewnia spójne, bezpieczne dla wielu platform podejście do utrwalania i pobierania aplikacji i ustawień użytkownika.