> ## 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 가이드

> 안드로이드 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)

          // 웹 콘텐츠 로드
          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);

          // 웹 콘텐츠 로드
          webView.loadUrl("https://your-website.com");
      }
  }
  ```
</CodeGroup>

<Note>
  `registerWebView()`는 다음 WebView 설정을 자동으로 구성합니다:

  * JavaScript 활성화
  * DOM Storage 활성화
  * 사용자 제스처 없이 미디어 재생
  * 서드파티 쿠키 활성화

  이 메서드는 메인 스레드에서 가능한 한 빨리 호출하세요 (예: `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="/ko/sdk/android/banner">
    배너 광고 연동 방법 알아보기
  </Card>

  <Card title="레퍼런스" icon="book" href="/ko/sdk/android/reference">
    API 레퍼런스
  </Card>

  <Card title="예제" icon="code" href="/ko/sdk/android/examples">
    예제 레포지토리
  </Card>
</CardGroup>
