> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adrop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# WebViewガイド

> AndroidのWebViewでバックフィル広告を表示する方法

## 概要

WebViewをAdrop SDKに登録して、アプリ内のウェブコンテンツでバックフィル広告を表示できます。

***

## AndroidManifest.xml設定

WebViewでバックフィル広告を有効にするには、`AndroidManifest.xml`に以下を追加してください：

```xml AndroidManifest.xml theme={null}
<manifest>
    <application>
        <!-- WebViewバックフィル広告統合 -->
        <meta-data
            android:name="com.google.android.gms.ads.INTEGRATION_MANAGER"
            android:value="webview"/>
    </application>
</manifest>
```

<Warning>
  この設定はWebViewでバックフィル広告が正常に動作するために必要です。この設定がないとバックフィル広告が表示されない場合があります。
</Warning>

***

## WebView登録

<CodeGroup>
  ```kotlin Kotlin theme={null}
  import android.webkit.WebView
  import io.adrop.ads.Adrop

  class WebViewActivity : AppCompatActivity() {

      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)

          val webView = findViewById<WebView>(R.id.webView)

          // バックフィル広告サポートのためにWebViewを登録
          // コンテンツ読み込み前にできるだけ早く呼び出す
          Adrop.registerWebView(webView)

          // Webコンテンツを読み込む
          webView.loadUrl("https://your-website.com")
      }
  }
  ```

  ```java Java theme={null}
  import android.webkit.WebView;
  import io.adrop.ads.Adrop;

  public class WebViewActivity extends AppCompatActivity {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          WebView webView = findViewById(R.id.webView);

          // バックフィル広告サポートのためにWebViewを登録
          // コンテンツ読み込み前にできるだけ早く呼び出す
          Adrop.registerWebView(webView);

          // Webコンテンツを読み込む
          webView.loadUrl("https://your-website.com");
      }
  }
  ```
</CodeGroup>

<Note>
  `registerWebView()`は以下のWebView設定を自動で構成します：

  * JavaScript有効化
  * DOMストレージ有効化
  * ユーザージェスチャーなしでメディア再生
  * サードパーティCookie有効化

  このメソッドはメインスレッドでできるだけ早く呼び出してください（例：`onCreate`）。
</Note>

<Warning>
  WebViewでバックフィル広告を使用するには`adrop-ads-backfill`モジュールが必要です。モジュールがインストールされていない場合、`registerWebView()`は静かに無視されます。
</Warning>

***

## 外部URLの処理

アプリで自社ドメイン以外のURLを外部ブラウザで開くロジックがある場合、広告リソースリクエスト（例：`googleads.g.doubleclick.net`）がブロックされないようにする必要があります。

広告リソース（iframe、スクリプトなど）は広告SDKによって自動的にロードされ、ユーザーが直接クリックしたものではありません。**ユーザーが直接クリックしたメインフレームのナビゲーション**のみを外部ブラウザにリダイレクトしてください。

<CodeGroup>
  ```kotlin Kotlin theme={null}
  import android.content.Intent
  import android.net.Uri
  import android.webkit.WebResourceRequest
  import android.webkit.WebView
  import android.webkit.WebViewClient

  val allowedHost = "my-domain.com"

  webView.webViewClient = object : WebViewClient() {
      override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
          val url = request.url
          val host = url.host ?: ""

          // ユーザーが直接クリックした場合のみ外部ブラウザで開く
          // 広告リソース（例：googleads.g.doubleclick.net）はiframe/スクリプトでロードされるためブロックしない
          if (!host.contains(allowedHost) && request.hasGesture()) {
              view.context.startActivity(Intent(Intent.ACTION_VIEW, url))
              return true
          }
          return false
      }
  }
  ```

  ```java Java theme={null}
  import android.content.Intent;
  import android.net.Uri;
  import android.webkit.WebResourceRequest;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;

  String allowedHost = "my-domain.com";

  webView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
          Uri url = request.getUrl();
          String host = url.getHost() != null ? url.getHost() : "";

          // ユーザーが直接クリックした場合のみ外部ブラウザで開く
          // 広告リソース（例：googleads.g.doubleclick.net）はiframe/スクリプトでロードされるためブロックしない
          if (!host.contains(allowedHost) && request.hasGesture()) {
              view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, url));
              return true;
          }
          return false;
      }
  });
  ```
</CodeGroup>

<Warning>
  自社ドメイン以外のすべてのリクエストをブロックまたはリダイレクトしないでください。`googleads.g.doubleclick.net`のような広告リソースはバックフィル広告のプロセスで自動的にロードされ、WebView内で正常にロードされる必要があります。
</Warning>

***

## 関連ドキュメント

<CardGroup cols={2}>
  <Card title="バナー広告" icon="rectangle-ad" href="/ja/sdk/android/banner">
    バナー広告の実装方法を確認
  </Card>

  <Card title="リファレンス" icon="book" href="/ja/sdk/android/reference">
    APIリファレンス
  </Card>

  <Card title="サンプル" icon="code" href="/ja/sdk/android/examples">
    サンプルリポジトリ
  </Card>
</CardGroup>
