Sdílet prostřednictvím


Správa nastavení aplikace

Tip

Tento obsah je výňatek z elektronické knihy, vzory podnikových aplikací pomocí .NET MAUI, dostupné na .NET Docs nebo jako zdarma ke stažení PDF, které lze číst offline.

Vzory podnikových aplikací pomocí úvodní miniatury eBooku .NET MAUI

Nastavení umožňují oddělení dat, která konfigurují chování aplikace od kódu, což umožňuje měnit chování bez opětovného sestavení aplikace. Existují dva typy nastavení: nastavení aplikace a uživatelská nastavení.

Nastavení aplikace jsou data, která aplikace vytváří a spravuje. Může zahrnovat data, jako jsou pevné koncové body webové služby, klíče rozhraní API a stav modulu runtime. Nastavení aplikace jsou svázaná se základními funkcemi a jsou pro tuto aplikaci smysluplná.

Uživatelská nastavení jsou přizpůsobitelná nastavení aplikace, která ovlivňují chování aplikace a nevyžadují časté opakované úpravy. Aplikace může například uživateli umožnit určit, kam se mají načíst data a jak je zobrazit na obrazovce.

Vytvoření rozhraní nastavení

I když se správce předvoleb dá použít přímo ve vaší aplikaci, má nevýhodu, že je vaše aplikace úzce svázána s implementací správce předvoleb. Toto propojení znamená, že vytváření testů jednotek nebo rozšíření funkčnosti správy předvoleb bude omezené, protože vaše aplikace nebude mít přímý způsob, jak zachytit chování. Pokud chcete tento problém vyřešit, můžete vytvořit rozhraní, které bude fungovat jako proxy server pro správu předvoleb. Rozhraní nám umožní poskytnout implementaci, která vyhovuje našim potřebám. Například při psaní testu jednotek můžeme chtít nastavit konkrétní nastavení a rozhraní nám poskytne snadný způsob, jak tato data pro test konzistentně nastavit. Následující příklad kódu ukazuje ISettingsService rozhraní v aplikaci eShop pro více platforem:

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; }
}

Přidání nastavení

.NET MAUI obsahuje správce předvoleb, který poskytuje způsob ukládání nastavení modulu runtime pro uživatele. K této funkci můžete přistupovat odkudkoli v aplikaci pomocí Microsoft.Maui.Storage.Preferences třídy. Správce předvoleb poskytuje konzistentní, typově bezpečný a multiplatformní přístup pro zachování a načítání nastavení aplikací a uživatelů při používání nativní správy nastavení poskytovaných jednotlivými platformami. Kromě toho je jednoduché použít datovou vazbu pro přístup k datům nastavení vystaveným knihovnou. Další informace najdete v části Předvolby v Centru pro vývojáře Microsoftu.

Tip

Předvolby slouží k ukládání relativně malých dat. Pokud potřebujete ukládat větší nebo složitější data, zvažte použití místní databáze nebo systému souborů k uložení dat.

Naše aplikace bude používat Preferences třídu, která potřebuje implementovat ISettingsService rozhraní. Následující kód ukazuje, jak multiformní aplikace SettingsService eShop implementuje AuthTokenAccess a UseMocks vlastnosti:

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ždé nastavení se skládá z privátního klíče, privátní výchozí hodnoty a veřejné vlastnosti. Klíč je vždy řetězec const, který definuje jedinečný název, s výchozí hodnotou pro nastavení je statická jen pro čtení nebo konstantní hodnota požadovaného typu. Když zadáte výchozí hodnotu, zajistíte, že je platná hodnota k dispozici, pokud se načte nastavení bez nastavení. Tuto implementaci služby je možné poskytnout prostřednictvím injektáže závislostí do naší aplikace pro použití v modelech zobrazení nebo jiných službách v celé aplikaci.

Datová vazba s uživatelským nastavením

V aplikaci eShop pro více platforem zpřístupňuje více nastavení, SettingsView která může uživatel nakonfigurovat za běhu. Mezi tato nastavení patří povolení konfigurace, jestli by aplikace měla načítat data z mikroslužeb nasazených jako kontejnery Dockeru nebo jestli by aplikace měla načítat data ze napodobených služeb, které nevyžadují připojení k internetu. Při načítání dat z kontejnerizovaných mikroslužeb je nutné zadat adresu URL základního koncového bodu pro mikroslužby. Následující obrázek ukazuje SettingsView, když se uživatel rozhodl načíst data z kontejnerizovaných mikroslužeb.

Uživatelská nastavení vystavená multiformní aplikací eShop

Datová vazba se dá použít k načtení a nastavení vystavených rozhraním ISettingService . Toho lze dosáhnout pomocí ovládacích prvků na vazbě zobrazení k zobrazení vlastností modelu, které zase přístup vlastnosti v ISettingService rozhraní a vyvolání oznámení o změně vlastnosti, pokud se hodnota změnila.

Následující příklad kódu ukazuje Entry ovládací prvek, SettingsView který uživateli umožňuje zadat adresu URL koncového bodu základní identity pro kontejnerizované mikroslužby:

<Entry Text="{Binding IdentityEndpoint, Mode=TwoWay}" />

Tento Entry ovládací prvek vytvoří vazbu na IdentityEndpoint vlastnost SettingsViewModel třídy pomocí obousměrné vazby. Následující příklad kódu ukazuje IdentityEndpoint vlastnost:

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();
        }
    }
}

IdentityEndpoint Při nastavení vlastnosti je UpdateIdentityEndpoint volána metoda za předpokladu, že zadaná hodnota je platná. Následující příklad kódu ukazuje metodu UpdateIdentityEndpoint :

private void UpdateIdentityEndpoint()
{
    _settingsService.IdentityEndpointBase = _identityEndpoint;
}

Tato metoda aktualizuje IdentityEndpointBase vlastnost v ISettingService implementaci rozhraní hodnotou URL základního koncového bodu zadaná uživatelem. SettingsService Pokud je třída poskytována jako implementace _settingsService, hodnota se zachová v úložišti specifickém pro platformu.

Shrnutí

Nastavení umožňují oddělení dat, která konfigurují chování aplikace od kódu, což umožňuje měnit chování bez opětovného sestavení aplikace. Nastavení aplikace jsou data, která aplikace vytváří a spravuje, a uživatelská nastavení jsou přizpůsobitelná nastavení aplikace, která ovlivňují chování aplikace a nevyžadují časté opakované úpravy.

Třída Microsoft.Maui.Storage.Preferences poskytuje konzistentní, typově bezpečný a multiplatformní přístup pro zachování a načítání nastavení aplikací a uživatelů.