Share via


ブラウザー

Browse sample. サンプルを参照する

この記事では、.NET マルチプラットフォーム アプリ UI (.NET MAUI) IBrowser インターフェイスを使用する方法について説明します。 このインターフェイスにより、アプリケーションはシステム優先ブラウザーまたは外部ブラウザーで Web リンクを開くことができます。

IBrowser インターフェイスの既定の実装は、Browser.Default プロパティを通じて使用できます。 IBrowser インターフェイスと Browser クラスは、どちらも Microsoft.Maui.ApplicationModel 名前空間に含まれています。

作業の開始

ブラウザーの機能にアクセスするには、次のプラットフォーム固有のセットアップが必要です。

プロジェクトの対象の Android バージョンが Android 11 (R API 30) 以降に設定されている場合は、Android のパッケージの可視性要件を使用するクエリで Android マニフェストを更新する必要があります。

Platforms/Android/AndroidManifest.xml ファイルで、manifest ノードに次の queries/intent ノードを追加します。

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="http"/>
  </intent>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="https"/>
  </intent>
</queries>

ブラウザーを開く

ブラウザーは、UriBrowserLaunchMode 型で IBrowser.OpenAsync メソッド呼び出して開きます。 次のコード例は、ブラウザーを開く方法を示しています。

private async void BrowserOpen_Clicked(object sender, EventArgs e)
{
    try
    {
        Uri uri = new Uri("https://www.microsoft.com");
        await Browser.Default.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
    }
    catch (Exception ex)
    {
        // An unexpected error occurred. No browser may be installed on the device.
    }
}

このメソッドは、ユーザーがブラウザーを閉じた後ではなく、ブラウザーが起動された後に返されます。 Browser.OpenAsync は、ブラウザーが正常に起動されたかどうかを示す bool 値を返します。

カスタマイズ

システム優先ブラウザーを使用している場合、iOS と Android で使用できるカスタマイズ オプションがいくつかあります。 これらのオプションには、TitleMode (Android のみ) と、Toolbar (iOS と Android)、Controls (iOS のみ) で表示される優先色が含まれます。

これらのオプションは、OpenAsync の呼び出し時に BrowserLaunchOptions を使用して指定します。

private async void BrowserCustomOpen_Clicked(object sender, EventArgs e)
{
    try
    {
        Uri uri = new Uri("https://www.microsoft.com");
        BrowserLaunchOptions options = new BrowserLaunchOptions()
        {
            LaunchMode = BrowserLaunchMode.SystemPreferred,
            TitleMode = BrowserTitleMode.Show,
            PreferredToolbarColor = Colors.Violet,
            PreferredControlColor = Colors.SandyBrown
        };

        await Browser.Default.OpenAsync(uri, options);
    }
    catch (Exception ex)
    {
        // An unexpected error occurred. No browser may be installed on the device.
    }
}

プラットフォームによる違い

このセクションでは、ブラウザー API とのプラットフォーム固有の違いについて説明します。

BrowserLaunchOptions.LaunchMode はブラウザーの起動方法を決定します。

  • SystemPreferred

    カスタム タブを使用して、URI を読み込み、ナビゲーションの認識を維持します。

  • External

    Intent を使用して、システムの通常のブラウザーで URI を開くよう要求します。