Содержание
Еще одним способом хранения настроек приложения .NET MAUI является использование защищенного хранилище. Защищенное хранилище можно использовать для хранения каких-либо конфиденциальные данных, например, паролей доступа к ресурсам, ключей API и так далее. Для работы с защищенным хранилищем используется интерфейс ISecureStorage.
Защищенное хранилище
Интерфейс ISecureStorage и класс SecureStorage
Интерфейс предоставляет нам API для хранения настроек в виде пар «ключ-значение» в защищенном хранилище устройства. Интерфейс ISecureStorage реализуется в статическом классе SecureStorage, который предоставляет нам ряд асинхронных методов для работы с настройками:
| Метод | Описание |
Get |
Возвращает и расшифровывает значение для заданного ключа. |
Remove(String) |
Удаляет ключ и связанное с ним значение, если он существует. |
Remove |
Удаляет все хранимые пары «ключ-значение». |
Set |
Задает и шифрует значение для заданного ключа. |
Класс SecureStorage предоставляет нам через свое свойство Default реализацию интерфейса ISecureStorage по умолчанию. Следует отметить, что, в отличие от класса Preferences, который мы рассматривали в предыдущей части, SecureStorage не может возвращать значения по умолчанию для настроек, а также принимает в качестве значений настроек только строки. Теперь рассмотрим работу с защищенным хранилищем.
Использование защищенного хранилища для работы с настройками приложения
Создадим новое приложение .NET MAUI и изменим файл MauiProgram.cs, добавив настройки приложения в защищенное хранилище:
using Microsoft.Extensions.Logging;
namespace MauiConfiguration;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
//устанавливаем настройки приложения
SecureStorage.Default.SetAsync("Message", "Привет, .NET MAUI");
SecureStorage.Default.SetAsync("Text", "Это пример работы с SecureStorage");
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build();
}
}
Теперь изменим обработчик OnCounterClicked() в файле MainPage.xaml.cs, использовав его для чтения настроек:
private async void OnCounterClicked(object sender, EventArgs e)
{
descriptionLabel.Text = await SecureStorage.Default.GetAsync("Text");
helloLabel.Text = await SecureStorage.Default.GetAsync("Message");
}
Здесь мы используем асинхронные методы SecureStorage для получения настроек приложения. Внесем из менения в XAML-код страницы MainPage:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiConfiguration.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25">
<Label x:Name="helloLabel"
Text="Hello, World!"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label x:Name="descriptionLabel" Text="Descriptiom"/>
<Button
x:Name="CounterBtn"
Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Fill" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Теперь можно проверить результат работы приложения и убедиться, что настройки приложения были получены из защищенного хранилища:
Итого
Защищенное хранилище в приложениях .NET MAUI может использоваться для хранения конфиденциальных данных. В SecureStorage хранятся строки, а для их получения используются асинхронные методы.
