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.
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.
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ů.