Udostępnij za pośrednictwem


Widok sieci Web

Wieloplatformowy interfejs użytkownika aplikacji platformy .NET (.NET MAUI) WebView wyświetla zdalne strony internetowe, lokalne pliki HTML i ciągi HTML w aplikacji. Zawartość wyświetlana pod numerem WebView obejmuje obsługę Kaskadowych Arkuszy Stylów (CSS) i JavaScript. Domyślnie projekty MAUI platformy .NET obejmują uprawnienia platformy wymagane do WebView wyświetlania zdalnej strony internetowej.

WebView definiuje następujące właściwości:

  • Cookies, typu CookieContainer, zapewnia przestrzeń do przechowywania plików cookie.
  • CanGoBacktypu boolwskazuje, czy użytkownik może przejść do poprzednich stron. Jest to właściwość tylko do odczytu.
  • CanGoForwardtypu boolwskazuje, czy użytkownik może przejść do przodu. Jest to właściwość tylko do odczytu.
  • Sourcetypu WebViewSourcereprezentuje lokalizację wyświetlaną przez WebView.
  • UserAgenttypu stringreprezentuje agenta użytkownika. Wartość domyślna to agent użytkownika przeglądarki platformy źródłowej lub null, jeśli nie można go określić.

Te właściwości są wspierane przez obiekty BindableProperty, co oznacza, że mogą być obiektami docelowymi powiązań danych i stylizowanymi.

Właściwość Source można ustawić na obiekt UrlWebViewSource lub obiekt HtmlWebViewSource, który pochodzi z WebViewSource. UrlWebViewSource służy do ładowania strony internetowej określonej przy użyciu adresu URL, podczas gdy obiekt HtmlWebViewSource jest używany do ładowania lokalnego pliku HTML lub lokalnego kodu HTML.

WebView definiuje zdarzenie Navigating, które jest wywoływane podczas uruchamiania nawigacji strony, oraz zdarzenie Navigated zgłaszane po zakończeniu nawigacji strony. Obiekt WebNavigatingEventArgs, który towarzyszy zdarzeniu Navigating definiuje właściwość Cancel typu bool, która może służyć do anulowania nawigacji. Obiekt WebNavigatedEventArgs, który towarzyszy zdarzeniu Navigated definiuje właściwość Result typu WebNavigationResult wskazującą wynik nawigacji.

WebView definiuje następujące zdarzenia:

  • Navigating, który jest wywoływany podczas uruchamiania nawigacji po stronie. Obiekt WebNavigatingEventArgs, który towarzyszy temu zdarzeniu, definiuje właściwość Cancel typu bool, która może służyć do anulowania nawigacji.
  • Navigated, który jest wywoływany po zakończeniu nawigacji po stronie. Obiekt WebNavigatedEventArgs, który towarzyszy temu zdarzeniu, definiuje właściwość Result typu WebNavigationResult, która wskazuje wynik nawigacji.
  • ProcessTerminated, który jest zgłaszany, gdy proces WebView kończy się nieoczekiwanie. Obiekt WebViewProcessTerminatedEventArgs, który towarzyszy temu zdarzeniu, definiuje właściwości specyficzne dla platformy, które wskazują, dlaczego proces zakończył się niepowodzeniem.

Ważny

WebView musi określać jego właściwości HeightRequest i WidthRequest, gdy znajdują się w HorizontalStackLayout, StackLayoutlub VerticalStackLayout. Jeśli nie określisz tych właściwości, WebView nie będzie renderowany.

Wyświetlanie strony internetowej

Aby wyświetlić zdalną stronę internetową, ustaw właściwość Source na string, która określa identyfikator URI:

<WebView Source="https://learn.microsoft.com/dotnet/maui" />

Równoważny kod języka C# to:

WebView webvView = new WebView
{
    Source = "https://learn.microsoft.com/dotnet/maui"
};

Identyfikatory URI muszą być w pełni sformułowane przy użyciu określonego protokołu.

Notatka

Pomimo że właściwość Source jest typu WebViewSource, można ustawić ją na URI oparty na ciągu znaków. Dzieje się tak, ponieważ program .NET MAUI zawiera konwerter typów i niejawny operator konwersji, który konwertuje identyfikator URI oparty na ciągu na obiekt UrlWebViewSource.

Konfigurowanie usługi App Transport Security w systemach iOS i Mac Catalyst

Ponieważ wersja 9, system iOS zezwoli aplikacji tylko na komunikację z bezpiecznymi serwerami. Aplikacja musi zdecydować się na włączanie komunikacji z niezabezpieczonymi serwerami.

W poniższej konfiguracji Info.plist pokazano, jak włączyć określoną domenę w celu obejścia wymagań usługi Apple Transport Security (ATS):

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSExceptionDomains</key>
		<dict>
			<key>mydomain.com</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSTemporaryExceptionMinimumTLSVersion</key>
				<string>TLSv1.1</string>
			</dict>
		</dict>
	</dict>

Najlepszym rozwiązaniem jest włączenie tylko określonych domen w celu obejścia usługi ATS, co umożliwia korzystanie z zaufanych witryn przy jednoczesnym korzystaniu z dodatkowych zabezpieczeń w niezaufanych domenach.

W poniższej konfiguracji Info.plist pokazano, jak wyłączyć usługę ATS dla aplikacji:

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>

Ważny

Jeśli aplikacja wymaga połączenia z niezabezpieczoną witryną internetową, zawsze należy wprowadzić domenę jako wyjątek przy użyciu klucza NSExceptionDomains zamiast wyłączać usługę ATS całkowicie przy użyciu klucza NSAllowsArbitraryLoads.

Wyświetlanie lokalnego kodu HTML

Aby wyświetlić wbudowany kod HTML, ustaw właściwość Source na obiekt HtmlWebViewSource:

<WebView>
    <WebView.Source>
        <HtmlWebViewSource Html="&lt;HTML&gt;&lt;BODY&gt;&lt;H1&gt;.NET MAUI&lt;/H1&gt;&lt;P&gt;Welcome to WebView.&lt;/P&gt;&lt;/BODY&gt;&lt;HTML&gt;" />
    </WebView.Source>
</WebView>

W języku XAML ciągi HTML mogą stać się nieczytelne z powodu ucieczki < i > symboli. W związku z tym w celu zapewnienia większej czytelności kod HTML może być podkreślony w sekcji CDATA:

<WebView>
    <WebView.Source>
        <HtmlWebViewSource>
            <HtmlWebViewSource.Html>
                <![CDATA[
                <HTML>
                <BODY>
                <H1>.NET MAUI</H1>
                <P>Welcome to WebView.</P>
                </BODY>
                </HTML>
                ]]>
            </HtmlWebViewSource.Html>
        </HtmlWebViewSource>
    </WebView.Source>
</WebView>

Równoważny kod języka C# to:

WebView webView = new WebView
{
    Source = new HtmlWebViewSource
    {
        Html = @"<HTML><BODY><H1>.NET MAUI</H1><P>Welcome to WebView.</P></BODY></HTML>"
    }
};

Wyświetlanie lokalnego pliku HTML

Aby wyświetlić lokalny plik HTML, dodaj plik do folderu Resources\Raw projektu aplikacji i ustaw jego akcję kompilacji na MauiAsset. Następnie plik można załadować z wbudowanego kodu HTML zdefiniowanego w obiekcie HtmlWebViewSource ustawionym jako wartość właściwości Source:

<WebView>
    <WebView.Source>
        <HtmlWebViewSource>
            <HtmlWebViewSource.Html>
                <![CDATA[
                <html>
                <head>
                </head>
                <body>
                <h1>.NET MAUI</h1>
                <p>The CSS and image are loaded from local files!</p>
                <p><a href="localfile.html">next page</a></p>
                </body>
                </html>                    
                ]]>
            </HtmlWebViewSource.Html>
        </HtmlWebViewSource>
    </WebView.Source>
</WebView>

Lokalny plik HTML może ładować kaskadowe arkusze stylów (CSS), JavaScript i obrazy, jeśli zostały one również dodane do projektu aplikacji przy użyciu MauiAsset akcji kompilacji.

Aby uzyskać więcej informacji na temat zasobów pierwotnych, zobacz Nieprzetworzone zasoby.

Załaduj ponownie zawartość

WebView ma metodę Reload, którą można wywołać w celu ponownego załadowania źródła:

WebView webView = new WebView();
...
webView.Reload();

Po wywołaniu metody Reload zostanie wyzwolone zdarzenie ReloadRequested wskazujące, że żądanie zostało wykonane w celu ponownego załadowania bieżącej zawartości.

Wykonywanie nawigacji

WebView obsługuje nawigację programową za pomocą metod GoBack i GoForward. Te metody umożliwiają nawigację za pośrednictwem stosu strony WebView i powinny być wywoływane tylko po sprawdzeniu wartości właściwości CanGoBack i CanGoForward:

WebView webView = new WebView();
...

// Go backwards, if allowed.
if (webView.CanGoBack)
{
    webView.GoBack();
}

// Go forwards, if allowed.
if (webView.CanGoForward)
{
    webView.GoForward();
}

Kiedy nawigacja po stronie w WebViewjest inicjowana programowo lub przez użytkownika, mają miejsce następujące zdarzenia:

  • Navigating, który jest podnoszony, gdy rozpoczyna się nawigacja po stronie. Obiekt WebNavigatingEventArgs, który towarzyszy zdarzeniu Navigating definiuje właściwość Cancel typu bool, która może służyć do anulowania nawigacji.
  • Navigated, który jest wywoływany po zakończeniu nawigacji po stronie. Obiekt WebNavigatedEventArgs, który towarzyszy zdarzeniu Navigated definiuje właściwość Result typu WebNavigationResult wskazującą wynik nawigacji.

W systemie Android nawigacja nie będzie występować w WebView, gdy zostanie naciśnięty hiperlink określający target="_blank" (aby otworzyć zawartość w nowym oknie). Wynika to z faktu, że otwarcie hiperlinku w nowym oknie wymaga zaimplementowania OnCreateWindow, którego nie ma .NET MAUI. W związku z tym w tym scenariuszu należy zdecydować, czy wdrożyć OnCreateWindow samodzielnie, otworzyć adres URL w przeglądarce systemowej, czy zrobić coś innego.

Alternatywnie, aby wymusić otwarcie wszystkich hiperlinków w tym samym WebView, zmodyfikuj WebViewHandler w aplikacji, aby natywna WebView wyłączyła obsługę wielu okien:

#if ANDROID
    Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping("SupportMultipleWindows", (handler, view) =>
    {
        handler.PlatformView.Settings.SetSupportMultipleWindows(false);
    });
#endif

Ten kod dostosowuje maper właściwości dla WebViewHandler na Androidzie, wywołując metodę SetSupportMultipleWindows z argumentem false i należy go wykonać, zanim użytkownik będzie mógł przejść do łącza wskazującego na target="_blank". Aby uzyskać więcej informacji o programach obsługi, zobacz Handlers.

Obsługa uprawnień w systemie Android

Podczas przechodzenia do strony, która żąda dostępu do sprzętu rejestrującego urządzenie, takiego jak aparat lub mikrofon, należy udzielić uprawnień przez kontrolę WebView. Kontrolka WebView używa typu Android.Webkit.WebChromeClient w systemie Android do reagowania na żądania uprawnień. Jednak implementacja WebChromeClient dostarczana przez program .NET MAUI ignoruje żądania uprawnień. Należy utworzyć nowy typ, który dziedziczy po MauiWebChromeClient i zatwierdza żądania uprawnień.

Ważny

Dostosowanie WebView do zatwierdzania żądań uprawnień przy użyciu tej metody wymaga Android API 26 lub nowszego.

Żądania uprawnień ze strony internetowej do kontrolki WebView różnią się od żądań uprawnień od aplikacji .NET MAUI do użytkownika. Uprawnienia aplikacji .NET MAUI są wymagane i zatwierdzone przez użytkownika dla całej aplikacji. Kontrola WebView zależy od możliwości uzyskiwania dostępu do sprzętu przez aplikacje. Aby zilustrować tę koncepcję, rozważ stronę internetową żądającą dostępu do aparatu urządzenia. Nawet jeśli to żądanie zostanie zatwierdzone przez kontrolkę WebView, ale aplikacja .NET MAUI nie ma zatwierdzenia przez użytkownika w celu uzyskania dostępu do aparatu, strona internetowa nie będzie mogła uzyskać dostępu do aparatu.

W poniższych krokach pokazano, jak przechwytywać żądania uprawnień z kontrolki WebView do korzystania z aparatu. Jeśli próbujesz użyć mikrofonu, kroki będą podobne, z tą różnicą, że należy użyć uprawnień związanych z mikrofonem zamiast uprawnień związanych z kamerą.

  1. Najpierw dodaj wymagane uprawnienia aplikacji do manifestu systemu Android. Otwórz plik Platforms/Android/AndroidManifest.xml i dodaj następujący kod w węźle manifest:

    <uses-permission android:name="android.permission.CAMERA" />
    
  2. W pewnym momencie w aplikacji, na przykład gdy strona zawierająca kontrolkę WebView jest ładowana, poproś użytkownika o uprawnienie, aby zezwolić aplikacji na dostęp do aparatu.

    private async Task RequestCameraPermission()
    {
        PermissionStatus status = await Permissions.CheckStatusAsync<Permissions.Camera>();
    
        if (status != PermissionStatus.Granted)
            await Permissions.RequestAsync<Permissions.Camera>();
    }
    
  3. Dodaj następującą klasę do folderu Platforms/Android, zmieniając przestrzeń nazw katalogu głównego tak, aby odpowiadała przestrzeni nazw projektu (nie dołączaj .Platforms.Android do przestrzeni nazw):

    using Android.Webkit;
    using Microsoft.Maui.Handlers;
    using Microsoft.Maui.Platform;
    
    namespace MauiAppWebViewHandlers.Platforms.Android;
    
    internal class MyWebChromeClient: MauiWebChromeClient
    {
        public MyWebChromeClient(IWebViewHandler handler) : base(handler)
        {
    
        }
    
        public override void OnPermissionRequest(PermissionRequest request)
        {
            // Process each request
            foreach (var resource in request.GetResources())
            {
                // Check if the web page is requesting permission to the camera
                if (resource.Equals(PermissionRequest.ResourceVideoCapture, StringComparison.OrdinalIgnoreCase))
                {
                    // Get the status of the .NET MAUI app's access to the camera
                    PermissionStatus status = Permissions.CheckStatusAsync<Permissions.Camera>().Result;
    
                    // Deny the web page's request if the app's access to the camera is not "Granted"
                    if (status != PermissionStatus.Granted)
                        request.Deny();
                    else
                        request.Grant(request.GetResources());
    
                    return;
                }
            }
    
            base.OnPermissionRequest(request);
        }
    }
    

    W poprzednim fragmencie kodu klasa MyWebChromeClient dziedziczy z MauiWebChromeClienti zastępuje metodę OnPermissionRequest w celu przechwycenia żądań uprawnień strony internetowej. Każdy element uprawnień jest sprawdzany, czy odpowiada stałej o wartości PermissionRequest.ResourceVideoCapture, która reprezentuje aparat. Jeśli uprawnienie aparatu jest zgodne, kod sprawdza, czy aplikacja ma uprawnienia do korzystania z aparatu. Jeśli ma uprawnienia, żądanie strony internetowej zostanie przyznane.

  4. Użyj metody SetWebChromeClient w kontrolce WebView systemu Android, aby ustawić klienta chrome na wartość MyWebChromeClient. W poniższych dwóch elementach pokazano, jak ustawić klienta chrome:

    • Na podstawie kontrolki .NET MAUI WebView o nazwie theWebViewControlmożna ustawić klienta chrome bezpośrednio w widoku platformy, który jest kontrolką systemu Android:

      ((IWebViewHandler)theWebViewControl.Handler).PlatformView.SetWebChromeClient(new MyWebChromeClient((IWebViewHandler)theWebViewControl.Handler));
      
    • Możesz również użyć mapowania właściwości programu handlers, aby wymusić, że wszystkie kontrolki WebView korzystają z klienta Chrome. Aby uzyskać więcej informacji, zobacz Handlers.

      Podczas uruchamiania aplikacji należy wywołać metodę CustomizeWebViewHandler poniższego fragmentu kodu, taką jak w metodzie MauiProgram.CreateMauiApp.

      private static void CustomizeWebViewHandler()
      {
      #if ANDROID26_0_OR_GREATER
          Microsoft.Maui.Handlers.WebViewHandler.Mapper.ModifyMapping(
              nameof(Android.Webkit.WebView.WebChromeClient),
              (handler, view, args) => handler.PlatformView.SetWebChromeClient(new MyWebChromeClient(handler)));
      #endif
      }
      

Ustawianie plików cookie

Pliki cookie można ustawić na WebView, aby były wysyłane z żądaniem internetowym do określonego adresu URL. Ustaw ciasteczka, dodając obiekty Cookie do CookieContainer, a następnie ustaw kontener jako wartość właściwości wiązanej WebView.Cookies. Poniższy kod przedstawia przykład:

using System.Net;

CookieContainer cookieContainer = new CookieContainer();
Uri uri = new Uri("https://learn.microsoft.com/dotnet/maui", UriKind.RelativeOrAbsolute);

Cookie cookie = new Cookie
{
    Name = "DotNetMAUICookie",
    Expires = DateTime.Now.AddDays(1),
    Value = "My cookie",
    Domain = uri.Host,
    Path = "/"
};
cookieContainer.Add(uri, cookie);
webView.Cookies = cookieContainer;
webView.Source = new UrlWebViewSource { Url = uri.ToString() };

W tym przykładzie do obiektu Cookie jest dodawany pojedynczy CookieContainer, który jest następnie ustawiany jako wartość właściwości WebView.Cookies. Gdy WebView wysyła żądanie internetowe do określonego adresu URL, plik cookie jest wysyłany z żądaniem.

Wywoływanie kodu JavaScript

WebView obejmuje możliwość wywoływania funkcji JavaScript z języka C# i zwracania dowolnego wyniku do wywołującego kodu języka C#. Ta interoperacyjność jest osiągana za pomocą metody EvaluateJavaScriptAsync, która jest pokazana w poniższym przykładzie.

Entry numberEntry = new Entry { Text = "5" };
Label resultLabel = new Label();
WebView webView = new WebView();
...

int number = int.Parse(numberEntry.Text);
string result = await webView.EvaluateJavaScriptAsync($"factorial({number})");
resultLabel.Text = $"Factorial of {number} is {result}.";

Metoda WebView.EvaluateJavaScriptAsync wykonuje kod JavaScript określony jako argument i zwraca wynik jako string. W tym przykładzie wywoływana jest funkcja factorial JavaScript, która zwraca współczynnik number w wyniku. Ta funkcja JavaScript jest zdefiniowana w lokalnym pliku HTML ładowanych przez WebView i jest wyświetlana w poniższym przykładzie:

<html>
<body>
<script type="text/javascript">
function factorial(num) {
        if (num === 0 || num === 1)
            return 1;
        for (var i = num - 1; i >= 1; i--) {
            num *= i;
        }
        return num;
}
</script>
</body>
</html>

Konfigurowanie natywnego elementu WebView na platformach iOS i Mac Catalyst

Natywna kontrolka WebView jest MauiWKWebView w systemach iOS i Mac Catalyst, która wywodzi się z WKWebView. Jedno z przeciążeń konstruktora MauiWKWebView umożliwia określenie obiektu WKWebViewConfiguration, który zawiera informacje o sposobie konfigurowania obiektu WKWebView. Typowe konfiguracje obejmują ustawienie agenta użytkownika, udostępnienie plików cookie dla zawartości internetowej oraz wstrzykiwanie niestandardowych skryptów do tej zawartości.

Możesz utworzyć obiekt WKWebViewConfiguration w aplikacji, a następnie skonfigurować jego właściwości zgodnie z potrzebami. Alternatywnie można wywołać metodę statyczną MauiWKWebView.CreateConfiguration w celu pobrania obiektu WKWebViewConfiguration programu MAUI platformy .NET, a następnie zmodyfikować go. Obiekt WKWebViewConfiguration można następnie określić jako argument przeciążenia konstruktora MauiWKWebView.

Ponieważ nie można zmienić konfiguracji natywnej WebView w systemach iOS i Mac Catalyst po utworzeniu widoku platformy programu obsługi, należy utworzyć niestandardowy delegat fabryki obsługi, aby go zmodyfikować:

#if IOS || MACCATALYST
using WebKit;
using CoreGraphics;
using Microsoft.Maui.Platform;
using Microsoft.Maui.Handlers;
#endif
...

#if IOS || MACCATALYST
    Microsoft.Maui.Handlers.WebViewHandler.PlatformViewFactory = (handler) =>
    {
        WKWebViewConfiguration config = MauiWKWebView.CreateConfiguration();
        config.ApplicationNameForUserAgent = "MyProduct/1.0.0";
        return new MauiWKWebView(CGRect.Empty, (WebViewHandler)handler, config);
    };
#endif

Notatka

Należy skonfigurować MauiWKWebView z obiektem WKWebViewConfiguration przed wyświetleniem WebView w aplikacji. Odpowiednie lokalizacje do tego celu można znaleźć w ścieżce uruchamiania aplikacji, na przykład w plikach MauiProgram.cs lub App.xaml.cs.

Ustawianie preferencji odtwarzania multimediów w systemach iOS i Mac Catalyst

Wbudowane odtwarzanie multimediów wideo HTML5, w tym autoodtwarzanie i obraz na obrazie, jest domyślnie włączone dla WebView w systemach iOS i Mac Catalyst. Aby zmienić to ustawienie domyślne lub ustawić inne preferencje odtwarzania multimediów, należy utworzyć niestandardowy delegat fabryki obsługi, ponieważ nie można zmienić preferencji odtwarzania multimediów po utworzeniu widoku platformy programu obsługi. Poniższy kod przedstawia przykład wykonywania tego zadania:

#if IOS || MACCATALYST
using WebKit;
using CoreGraphics;
using Microsoft.Maui.Platform;
using Microsoft.Maui.Handlers;
#endif
...

#if IOS || MACCATALYST
    Microsoft.Maui.Handlers.WebViewHandler.PlatformViewFactory = (handler) =>
    {
        WKWebViewConfiguration config = MauiWKWebView.CreateConfiguration();

        // True to play HTML5 videos inliine, false to use the native full-screen controller.
        config.AllowsInlineMediaPlayback = false;

        // True to play videos over AirPlay, otherwise false.
        config.AllowsAirPlayForMediaPlayback = false;

        // True to let HTML5 videos play Picture in Picture.
        config.AllowsPictureInPictureMediaPlayback = false;

        // Media types that require a user gesture to begin playing.
        config.MediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypes.All;

        return new MauiWKWebView(CGRect.Empty, (WebViewHandler)handler, config);
    };
#endif

Aby uzyskać więcej informacji na temat konfigurowania WebView w systemie iOS, zobacz Konfigurowanie natywnego widoku WebView w systemach iOS i Mac Catalyst.

Inspekcjonuj WebView na Mac Catalyst

Aby użyć narzędzi dewelopera Safari do sprawdzenia zawartości WebView dla Mac Catalyst, dodaj następujący kod do swojej aplikacji:

#if MACCATALYST
        Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping("Inspect", (handler, view) =>
        {
            if (OperatingSystem.IsMacCatalystVersionAtLeast(16, 6))
                handler.PlatformView.Inspectable = true;
        });
#endif

Ten kod dostosowuje maper właściwości dla WebViewHandler na Mac Catalyst, aby umożliwić sprawdzanie zawartości WebView za pomocą narzędzi deweloperskich Safari. Aby uzyskać więcej informacji o programach obsługi, zobacz Handlers.

Aby użyć narzędzi deweloperskich Safari z aplikacją Mac Catalyst:

  1. Otwórz przeglądarkę Safari na komputerze Mac.
  2. W przeglądarce Safari zaznacz pole wyboru Ustawienia > Safari > Zaawansowane > Pokaż menu Dewelopera na pasku menu.
  3. Uruchom aplikację .NET MAUI Mac Catalyst.
  4. W przeglądarce Safari wybierz menu Programowanie {Nazwa urządzenia}, w którym symbol zastępczy to Twoja nazwa urządzenia, taka jak . Następnie wybierz wpis pod nazwą aplikacji, który będzie również wyróżniać uruchomioną aplikację. Spowoduje to, że pojawi się okno Web inspector.

Uruchamianie przeglądarki systemowej

Możliwe jest otwarcie identyfikatora URI w przeglądarce internetowej systemu za pomocą klasy Launcher, dostarczanej przez Microsoft.Maui.Essentials. Wywołaj metodę OpenAsync modułu uruchamiania i przekaż argument string lub Uri reprezentujący identyfikator URI do otwarcia:

await Launcher.OpenAsync("https://learn.microsoft.com/dotnet/maui");

Aby uzyskać więcej informacji, zobacz Launcher.