Aracılığıyla paylaş


Web Görüntüleyici

.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) WebView bir uygulamada uzak web sayfaları, yerel HTML dosyaları ve HTML dizeleri görüntüler. WebView görüntülenen içerik, Basamaklı Stil Sayfaları (CSS) ve JavaScript desteği içerir. Varsayılan olarak, .NET MAUI projeleri bir WebView uzak bir web sayfasını görüntülemesi için gereken platform izinlerini içerir.

WebView aşağıdaki özellikleri tanımlar:

  • Cookies, CookieContainertüründe bir tanımlama bilgileri koleksiyonu için depolama sağlar.
  • CanGoBacktüründe bool, kullanıcının önceki sayfalara gidip gitemeyeceğini gösterir. Bu salt okunur bir özelliktir.
  • CanGoForwardtüründe bool, kullanıcının ileriye gidip gitemeyeceğini gösterir. Bu salt okunur bir özelliktir.
  • Sourcetüründe WebViewSource, WebView görüntülediği konumu temsil eder.
  • UserAgenttüründe string, kullanıcı aracısını temsil eder. Varsayılan değer, kullanılan platform tarayıcısının kullanıcı aracısıdır veya belirlenemezse null olarak ayarlanır.

Bu özellikler BindableProperty nesneler tarafından desteklenir; bu da veri bağlamalarının hedefleri olabileceği ve stillendirilebileceği anlamına gelir.

Source özelliği, UrlWebViewSource'ten türetilen bir HtmlWebViewSource nesnesine ya da bir WebViewSource nesnesine ayarlanabilir. UrlWebViewSource, URL ile belirtilen bir web sayfasını yüklemek için kullanılırken, yerel HTML dosyasını veya yerel HTML'yi yüklemek için HtmlWebViewSource nesnesi kullanılır.

WebView, sayfa gezintisi başladığında tetiklenen bir Navigating olayı ve sayfa gezintisi tamamlandığında tetiklenen bir Navigated olayı tanımlar. WebNavigatingEventArgs olayına eşlik eden Navigating nesnesi, gezintiyi iptal etmek için kullanılabilecek Cancel türünde bir bool özelliği tanımlar. WebNavigatedEventArgs olayına eşlik eden Navigated nesnesi, gezinti sonucunu gösteren Result türünde bir WebNavigationResult özelliği tanımlar.

WebView aşağıdaki olayları tanımlar:

  • Navigating, sayfa gezintisi başladığında tetiklenir. Bu olaya eşlik eden WebNavigatingEventArgs nesnesi, gezintiyi iptal etmek için kullanılabilecek Cancel türünde bir bool özelliği tanımlar.
  • Navigated, sayfa gezintisi tamamlandığında oluşturulur. Bu olaya eşlik eden WebNavigatedEventArgs nesnesi, gezinti sonucunu gösteren Result türünde bir WebNavigationResult özelliği tanımlar.
  • ProcessTerminated, bir WebView işlemi beklenmedik bir şekilde sona erdiğinde ortaya çıkar. Bu olaya eşlik eden WebViewProcessTerminatedEventArgs nesnesi, işlemin neden başarısız olduğunu gösteren platforma özgü özellikleri tanımlar.

Önemli

WebView, HeightRequest, WidthRequestveya HorizontalStackLayoutiçinde bulunduğunda StackLayout ve VerticalStackLayout özelliklerini belirtmelidir. Bu özellikleri belirtmezseniz, WebView görüntülenmeyecektir.

Web sayfası görüntüleme

Uzak bir web sayfasını görüntülemek için Source özelliğini URI'yi belirten bir string olarak ayarlayın:

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

Eşdeğer C# kodu:

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

URI'ler belirtilen protokolle tam olarak oluşturulmalıdır.

Not

Source özelliği WebViewSourcetüründe olmasına rağmen, özelliği dize tabanlı bir URI'ye ayarlanabilir. Bunun nedeni .NET MAUI'nin dize tabanlı URI'yi bir UrlWebViewSource nesnesine dönüştüren bir tür dönüştürücüsü ve örtük dönüştürme işleci içermesidir.

iOS ve Mac Catalyst'te Uygulama Aktarım Güvenliğini Yapılandırma

Sürüm 9'dan bu yana iOS yalnızca uygulamanızın güvenli sunucularla iletişim kurmasına izin verir. Bir uygulamanın güvenli olmayan sunucularla iletişimi etkinleştirmeyi seçmesi gerekir.

Aşağıdaki Info.plist yapılandırması, belirli bir etki alanının Apple Aktarım Güvenliği (ATS) gereksinimlerini atlamak için nasıl etkinleştirileceği gösterilmektedir:

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

Yalnızca belirli etki alanlarının ATS'yi atlamasına olanak tanımak ve güvenilir olmayan etki alanlarında ek güvenlikten yararlanırken güvenilen siteleri kullanmanıza olanak tanımak en iyi yöntemdir.

Aşağıdaki Info.plist yapılandırmasında, bir uygulama için ATS'nin nasıl devre dışı bırak yapılacağı gösterilmektedir:

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

Önemli

Uygulamanız güvenli olmayan bir web sitesine bağlantı gerektiriyorsa, NSExceptionDomains anahtarını kullanarak ATS'yi tamamen kapatmak yerine NSAllowsArbitraryLoads anahtarını kullanarak etki alanını her zaman özel durum olarak girmeniz gerekir.

Yerel HTML'i görüntüle

Satır içi HTML görüntülemek için Source özelliğini bir HtmlWebViewSource nesnesi olarak ayarlayın:

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

XAML'de html dizeleri, < ve > simgelerinden kaçış nedeniyle okunamaz hale gelebilir. Bu nedenle, daha fazla okunabilirlik sağlamak için HTML, CDATA bir bölüm içine yerleştirilebilir.

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

Eşdeğer C# kodu:

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

Yerel HTML dosyası görüntüleme

Yerel html dosyasını görüntülemek için, dosyayı uygulama projenizin Resources\Raw klasörüne ekleyin ve derleme eylemini mauiAssetolarak ayarlayın. Ardından dosya, HtmlWebViewSource özelliğinin değeri olarak ayarlanmış bir Source nesnesinde tanımlanan satır içi HTML'den yüklenebilir:

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

Yerel HTML dosyası, Basamaklı Stil Sayfaları (CSS), JavaScript ve görüntüleri yükleyebilir, eğer bu dosyalar MauiAsset derleme eylemiyle de uygulama projenize eklendiyse.

Ham varlıklar hakkında daha fazla bilgi için bkz. ham varlıklar.

İçeriği yeniden yükleme

WebView kaynağını yeniden yüklemek için çağrılabilen bir Reload yöntemi vardır:

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

Reload yöntemi çağrıldığında, geçerli içeriği yeniden yüklemek için bir istekte bulunulduğunu belirten ReloadRequested olayı tetiklenir.

Navigasyon yapma

WebView, GoBack ve GoForward yöntemleriyle programlı gezintiyi destekler. Bu yöntemler, WebView sayfa yığınında gezinmeyi etkinleştirir ve yalnızca CanGoBack ve CanGoForward özelliklerinin değerleri incelendikten sonra çağrılmalıdır:

WebView webView = new WebView();
...

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

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

Bir WebViewsayfasında gezinti gerçekleştiğinde, bu işlem program aracılığıyla veya kullanıcı tarafından başlatılmış olsun, aşağıdaki olaylar meydana gelir:

  • Navigating, sayfa gezintisi başladığında tetiklenen bir olaydır. WebNavigatingEventArgs olayına eşlik eden Navigating nesnesi, gezintiyi iptal etmek için kullanılabilecek Cancel türünde bir bool özelliği tanımlar.
  • sayfa gezintisi tamamlandığında tetiklenen Navigated. WebNavigatedEventArgs olayına eşlik eden Navigated nesnesi, gezinti sonucunu gösteren Result türünde bir WebNavigationResult özelliği tanımlar.

Android'de, içeriği yeni bir pencerede açmak için target="_blank" belirten bir köprüye basıldığında, WebView gezinti gerçekleşmez. Bunun nedeni, yeni bir pencerede köprü açmanın OnCreateWindow uygulanmasını gerektirmesi ve .NET MAUI'nin bunu gerektirmemesidir. Bu nedenle, bu senaryo için kendiniz OnCreateWindow uygulamaya, URL'yi sistem tarayıcısında açmaya veya başka bir şey yapmaya karar vermeniz gerekir.

Alternatif olarak, uygulamanızdaki WebViewHandler'i değiştirerek tüm köprülerin aynı WebView'da açılmasını sağlayabilir ve yerel WebView'nin birden çok pencere desteğini devre dışı bırakmasını yapabilirsiniz.

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

Bu kod, Android'deki WebViewHandler için özellik eşleyicisini false bağımsız değişkeniyle SetSupportMultipleWindows yöntemini çağırarak özelleştirir ve bu işlem, kullanıcının target="_blank"belirten bir köprüye gitmeden önce yürütülmelidir. İşleyiciler hakkında daha fazla bilgi için bkz: İşleyiciler.

Android'de izinleri işleme

Cihazın kamera veya mikrofon gibi kayıt donanımına erişim isteyen bir sayfaya göz atarken, WebView denetimi tarafından izin verilmelidir. WebView denetimi, izin isteklerine tepki vermek için Android'de Android.Webkit.WebChromeClient türünü kullanır. Ancak, .NET MAUI tarafından sağlanan WebChromeClient uygulaması izin isteklerini yoksayar. MauiWebChromeClient'den devralan ve izin isteklerini onaylayan yeni bir tür oluşturmanız gerekir.

Önemli

İzin isteklerini onaylamak için bu yaklaşımı kullanarak WebView özelleştirmek için Android API 26 veya üzeri gerekir.

Bir web sayfasından WebView denetimine yönelik izin istekleri, .NET MAUI uygulamasından kullanıcıya yapılan izin isteklerinden farklıdır. .NET MAUI uygulama izinleri, tüm uygulama için kullanıcı tarafından istenir ve onaylanır. WebView denetimi, uygulamaların donanıma erişme yeteneğine bağlıdır. Bu kavramı göstermek için cihazın kamerasına erişim isteyen bir web sayfası düşünün. bu istek WebView denetimi tarafından onaylanmış olsa bile. .NET MAUI uygulaması kameraya erişmek için kullanıcı tarafından onay almamış olsa da web sayfası kameraya erişemez.

Aşağıdaki adımlar, kamerayı kullanmak için WebView denetiminden gelen izin isteklerinin nasıl yakalandığını gösterir. Mikrofonu kullanmaya çalışıyorsanız, kamerayla ilgili izinler yerine mikrofonla ilgili izinleri kullanmanız dışında adımlar benzer olacaktır.

  1. İlk olarak, Android bildirimine gerekli uygulama izinlerini ekleyin. Platformları/Android/AndroidManifest.xml dosyasını açın ve manifest düğümüne aşağıdakileri ekleyin:

    <uses-permission android:name="android.permission.CAMERA" />
    
  2. Uygulamanızın bir noktasında, örneğin WebView denetimi içeren sayfa yüklendiğinde, kullanıcıdan uygulamanın kameraya erişmesine izin vermek için izin isteyin.

    private async Task RequestCameraPermission()
    {
        PermissionStatus status = await Permissions.CheckStatusAsync<Permissions.Camera>();
    
        if (status != PermissionStatus.Granted)
            await Permissions.RequestAsync<Permissions.Camera>();
    }
    
  3. Kök ad alanını projenizin ad alanıyla eşleşecek şekilde değiştirerek Platformlar/Android klasörüne aşağıdaki sınıfı ekleyin (ad alanına .Platforms.Android eklemeyin):

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

    Önceki kod parçacığında, MyWebChromeClient sınıfı MauiWebChromeClient'den devralır ve web sayfası izin isteklerini kesmek için OnPermissionRequest yöntemini geçersiz kılar. Her izin öğesi, kamerayı temsil eden PermissionRequest.ResourceVideoCapture dizesi sabiti ile eşleşip eşleşmediğini görmek için denetlenir. Bir kamera izni eşleşirse kod, uygulamanın kamerayı kullanma izni olup olmadığını denetler. İzin verildiğinde, web sayfasının isteği kabul edilir.

  4. Chrome istemcisini SetWebChromeClientolarak ayarlamak için Android'in WebView denetimindeki MyWebChromeClient yöntemini kullanın. Aşağıdaki iki öğe, chrome istemcisini nasıl ayarlayabileceğinizi gösterir:

    • WebViewadlı bir .NET MAUI theWebViewControl denetimi verildiğinde chrome istemcisini doğrudan Android denetimi olan platform görünümünde ayarlayabilirsiniz:

      ((IWebViewHandler)theWebViewControl.Handler).PlatformView.SetWebChromeClient(new MyWebChromeClient((IWebViewHandler)theWebViewControl.Handler));
      
    • Ayrıca, tüm WebView denetimlerini chrome istemcinizi kullanmaya zorlamak için işleyici özellik eşlemesini de kullanabilirsiniz. Daha fazla bilgi için bkz. İşleyicileri.

      Uygulama başlatıldığında aşağıdaki kod parçacığının CustomizeWebViewHandler yöntemi çağrılmalıdır, örneğin MauiProgram.CreateMauiApp yönteminde.

      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
      }
      

Çerezleri ayarla

Tanımlama bilgileri, belirtilen URL'ye web isteğiyle gönderilmeleri için bir WebView üzerine ayarlanabilir. Cookie nesnelerini bir CookieContainer'e ekleyerek çerezleri ayarlayın ve ardından konteyneri, WebView.Cookies bağlanabilir özelliğin değeri olarak ayarlayın. Aşağıdaki kodda bir örnek gösterilmektedir:

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

Bu örnekte, Cookie nesnesine tek bir CookieContainer eklenir ve bu da WebView.Cookies özelliğinin değeri olarak ayarlanır. WebView belirtilen URL'ye bir web talebi gönderdiğinde, tanımlama bilgisi taleple birlikte gönderilir.

JavaScript'i çağırma

WebView C# dilinden bir JavaScript işlevi çağırma ve C# kodunu çağıran herhangi bir sonuç döndürme özelliğini içerir. Bu birlikte çalışma, aşağıdaki örnekte gösterilen EvaluateJavaScriptAsync yöntemiyle gerçekleştirilir:

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

WebView.EvaluateJavaScriptAsync yöntemi, bağımsız değişken olarak belirtilen JavaScript'i değerlendirir ve herhangi bir sonucu stringolarak döndürür. Bu örnekte, sonuç olarak factorial faktöriyelini döndüren number JavaScript işlevi çağrılır. Bu JavaScript işlevi, WebView tarafından yüklenen yerel HTML dosyasında tanımlanır ve aşağıdaki örnekte gösterilmiştir:

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

iOS ve Mac Catalyst üzerinde yerel WebView'ı yapılandırma

iOS ve Mac Catalyst'te yerel WebView denetimi, MauiWKWebView'den türetilen bir WKWebView'dir. MauiWKWebView oluşturucu aşırı yüklemelerinden biri, WKWebViewConfiguration nesnesinin nasıl yapılandırılacağı hakkında bilgi sağlayan WKWebView nesnesinin belirtilmesine olanak tanır. Tipik yapılandırmalar, kullanıcı aracısını ayarlamayı, web içeriğinizin kullanımına sunulacak tanımlama bilgilerini belirtmeyi ve web içeriğinize özel betikler eklemeyi içerir.

Uygulamanızda bir WKWebViewConfiguration nesnesi oluşturabilir ve ardından özelliklerini gerektiği gibi yapılandırabilirsiniz. Alternatif olarak, .NET MAUI'nin MauiWKWebView.CreateConfiguration nesnesini almak ve sonra değiştirmek için statik WKWebViewConfiguration yöntemini çağırabilirsiniz. WKWebViewConfiguration nesnesi, ardından MauiWKWebView oluşturucu aşırı yüklemesinde bir bağımsız değişken olarak belirtilebilir.

İşleyicinin platform görünümü oluşturulduktan sonra iOS ve Mac Catalyst'te yerel WebView yapılandırması değiştirilemeyeceğinden, bunu değiştirmek için özel bir işleyici fabrikası temsilcisi oluşturmanız gerekir.

#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

Not

MauiWKWebView'ı, uygulamanızda bir WKWebViewConfiguration görüntülenmeden önce bir WebView nesnesiyle yapılandırmanız gerekir. Bunu yapmak için uygun konumlar, MauiProgram.cs veya App.xaml.csgibi uygulamanızın başlangıç yolunda bulunur.

iOS ve Mac Catalyst'te medya oynatma tercihlerini ayarla

HTML5 videosunun satır içi oynatımı, otomatik oynatma ve resim içinde resim özellikleri de dahil olmak üzere, iOS ve Mac Catalyst'teki WebView için varsayılan olarak etkindir. Bu varsayılanı değiştirmek veya diğer medya oynatma tercihlerini ayarlamak için, işleyicinin platform görünümü oluşturulduktan sonra medya oynatma tercihleri değiştirilemeyeceğinden özel bir işleyici fabrikası temsilcisi oluşturmanız gerekir. Aşağıdaki kodda bunun bir örneği gösterilmektedir:

#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

iOS'ta WebView yapılandırma hakkında daha fazla bilgi için bkz. iOS ve Mac Catalyst'teki yerel WebView'i yapılandırma.

Mac'te WebView Catalyst'i inceleme

Mac Catalyst'te bir WebView içeriğini incelemek üzere Safari geliştirici araçlarını kullanmak için aşağıdaki kodu uygulamanıza ekleyin:

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

Bu kod, Mac Catalyst'te WebViewHandler için özellik eşleyicisini özelleştirerek WebView içeriği Safari geliştirici araçları tarafından denetlenebilir hale getirir. İşleyiciler hakkında daha fazla bilgi için bkz: İşleyiciler.

Safari geliştirici araçlarını Mac Catalyst uygulamasıyla kullanmak için:

  1. Mac bilgisayarınızda Safari'i açın.
  2. Safari'de, Safari > Ayarları > Gelişmiş > Menü çubuğunda Geliştir menüsünü göster onay kutusunu seçin.
  3. .NET MAUI Mac Catalyst uygulamanızı çalıştırın.
  4. Safari'de > Geliştir {Cihaz adı} menüsünü seçin; burada {Device name} yer tutucusu Macbook Progibi cihazınızın adıdır. Ardından uygulama adınızın altındaki girdiyi seçerek çalışan uygulamanızı da vurgulayabilirsiniz. Bu, Web denetçisi penceresinin görünmesine neden olur.

Sistem tarayıcısını başlatma

Launchertarafından sağlanan Microsoft.Maui.Essentials sınıfıyla sistem web tarayıcısında bir URI açmak mümkündür. Başlatıcının OpenAsync yöntemini çağırın ve açılacak URI'yi temsil eden bir string veya Uri bağımsız değişkeni geçirin:

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

Daha fazla bilgi için bkz. Launcher.