광고 수익 창출을 위한 WebView API 통합
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
광고용 웹 뷰 API를 사용하면 WKWebView의 태그에서 앱 신호를 사용할 수 있으므로 콘텐츠를 제공한 게시자의 수익 창출을 개선하고 광고주를 스팸으로부터 보호할 수 있습니다.
앱 ID, 앱 버전과 같은 이러한 앱 신호는 앱 트래픽에서만 사용할 수 있는 보고 및 인앱 브라우저 인벤토리 타겟팅 사용 사례를 활성화하는 데 도움이 됩니다.

작동 방식
Google 모바일 광고 SDK와의 통신은 다음 중 하나에 의해 트리거된 광고 이벤트에 대한 응답으로만 발생합니다.
SDK는 이러한 광고 이벤트를 수신 대기하기 위해 등록된 WKWebView
에 메시지 핸들러를 추가합니다. 작동 방식을 더 잘 이해하려면 테스트 페이지의 소스 코드를 확인하세요.
기본 요건
웹 뷰 등록
기본 스레드에서 register(_:)
를 호출하여 각 WKWebView
인스턴스 내에서 애드센스 코드 또는 Google 게시자 태그의 JavaScript 핸들러와 연결합니다. 이 작업은 가능한 한 빨리 실행해야 합니다(예: 뷰 컨트롤러의 viewDidLoad
메서드에서).
Swift
import WebKit
class ViewController: UIViewController {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Initialize a WKWebViewConfiguration object.
let webViewConfiguration = WKWebViewConfiguration()
// Let HTML videos with a "playsinline" attribute play inline.
webViewConfiguration.allowsInlineMediaPlayback = true
// Let HTML videos with an "autoplay" attribute play automatically.
webViewConfiguration.mediaTypesRequiringUserActionForPlayback = []
// Initialize the WKWebView with your WKWebViewConfiguration object.
webView = WKWebView(frame: view.frame, configuration: webViewConfiguration)
view.addSubview(webView)
// Register the web view.
MobileAds.shared.register(webView)
}
}
Objective-C
@import WebKit;
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic, strong) WKWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Initialize a WKWebViewConfiguration object.
WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];
// Let HTML videos with a "playsinline" attribute play inline.
webViewConfiguration.allowsInlineMediaPlayback = YES;
// Let HTML videos with an "autoplay" attribute play automatically.
webViewConfiguration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
// Initialize the WKWebView with your WKWebViewConfiguration object.
self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:webViewConfiguration];
[self.view addSubview:self.webView];
// Register the web view.
[GADMobileAds.sharedInstance registerWebView:self.webView];
}
통합 테스트
자체 URL을 사용하기 전에 다음 URL을 로드하여 통합을 테스트하는 것이 좋습니다.
https://google.github.io/webview-ads/test/#api-for-ads-tests
다음 조건이 적용되는 경우 테스트 URL에 통합이 성공했음을 나타내는 녹색 상태 표시줄이 표시됩니다.
WKWebView
가 Google 모바일 광고 SDK에 연결됨
다음 단계
WKWebView
에서 동의를 수집합니다. 광고용 웹 뷰 API는 IAB TCF v2.0 또는 IAB CCPA 규정 준수 프레임워크를 사용하여 모바일 앱 컨텍스트에서 수집된 동의를 웹 뷰의 태그에 전파하지 않습니다. WKWebView
및 수익 창출이 사용 설정된 해당 웹 콘텐츠의 소유자로서 단일 동의 흐름을 구현하려면 동의 관리 플랫폼과 협력하여 WKWebView
컨텍스트에서 동의를 수집하세요.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-08-23(UTC)
[null,null,["최종 업데이트: 2025-08-23(UTC)"],[[["\u003cp\u003eThe Web View APIs for Ads enable app signals to be available to ad tags within your WKWebView, enhancing monetization for publishers and protecting advertisers from spam.\u003c/p\u003e\n"],["\u003cp\u003eThese signals, such as app ID and version, unlock functionalities like reporting and targeted in-app browser inventory, previously exclusive to app traffic.\u003c/p\u003e\n"],["\u003cp\u003eTo utilize the APIs, you must register your WKWebView with the Google Mobile Ads SDK (version 9.6.0 or higher) and update your Info.plist file.\u003c/p\u003e\n"],["\u003cp\u003eThe SDK establishes communication with JavaScript handlers in your ad code (AdSense, Google Publisher Tag, or IMA for HTML5) solely during ad events.\u003c/p\u003e\n"],["\u003cp\u003eEnsure to gather user consent within the WKWebView context as the APIs do not automatically propagate consent collected in the mobile app using IAB frameworks.\u003c/p\u003e\n"]]],[],null,["The web view APIs for ads makes app signals available to the tags in your\n\n[WKWebView](//developer.apple.com/documentation/webkit/wkwebview), helping to improve monetization for the\npublishers that provided the content and protect advertisers from spam.\n\nThese app signals, such as app ID and app version, help activate [Reporting](//support.google.com/admanager/answer/14137220#report-on-in-app-webview-traffic)\nand [Target in-app browser inventory](//support.google.com/admanager/answer/14137220#target-in-app-webview-inventory)\nuse cases that are otherwise only available on app traffic.\n\n\nHow it works\n\nCommunication with the Google Mobile Ads SDK only happens in response to ad\nevents triggered by any of the following:\n\n- [AdSense code](//support.google.com/adsense/answer/9274634)\n- [Google Publisher Tag](//support.google.com/admanager/answer/181073)\n- [IMA for HTML5](//support.google.com/adsense/answer/6391192)\n\nThe SDK adds message handlers to the registered `WKWebView` to listen for\nthese ad events. For a better sense of how this works, view the\n[source code](//github.com/google/webview-ads/blob/main/test/index.html) of the\ntest page.\n| **Warning:** Don't call [`removeAllScriptMessageHandlers()`](//developer.apple.com/documentation/webkit/wkusercontentcontroller/3585114-removeallscriptmessagehandlers) from your `WKWebView` instance as this has unintended side effects. If needed, call [`removeScriptMessageHandler(forName:)`](//developer.apple.com/documentation/webkit/wkusercontentcontroller/1537532-removescriptmessagehandler) to remove individual message handlers instead.\n\nPrerequisites\n\n- [Google Mobile Ads SDK](/ad-manager/mobile-ads-sdk/ios/quick-start#import_the_mobile_ads_sdk) version 9.6.0 or higher.\n- Update the `Info.plist` file with the following key and string value. This\n bypasses a check the Google Mobile Ads SDK does for a\n `GADApplicationIdentifier` value that applies to developers who implement ads\n outside of a web view. If you miss this step and don't provide a\n `GADApplicationIdentifier`, the Google Mobile Ads SDK throws a\n `GADInvalidInitializationException` on app start.\n\n \u003c!-- Indicate Google Mobile Ads SDK usage is only for web view APIs for ads --\u003e\n \u003ckey\u003eGADIntegrationManager\u003c/key\u003e\n \u003cstring\u003ewebview\u003c/string\u003e\n\n\u003cbr /\u003e\n\nRegister the web view\n\nCall\n\n[`register(_:)`](/admob/ios/api/reference/Classes/GADMobileAds#-registerwebview:)\n\non the main thread to establish a connection with the JavaScript handlers in the\nAdSense code or Google Publisher Tag within each `WKWebView` instance. This\nshould be done as early as possible, such as in the\n\n`viewDidLoad` method of your view controller.\n\n\nSwift \n\n import WebKit\n\n class ViewController: UIViewController {\n\n var webView: WKWebView!\n\n override func viewDidLoad() {\n super.viewDidLoad()\n\n // Initialize a WKWebViewConfiguration object.\n let webViewConfiguration = WKWebViewConfiguration()\n // Let HTML videos with a \"playsinline\" attribute play inline.\n webViewConfiguration.allowsInlineMediaPlayback = true\n // Let HTML videos with an \"autoplay\" attribute play automatically.\n webViewConfiguration.mediaTypesRequiringUserActionForPlayback = []\n\n // Initialize the WKWebView with your WKWebViewConfiguration object.\n webView = WKWebView(frame: view.frame, configuration: webViewConfiguration)\n view.addSubview(webView)\n\n // Register the web view.\n MobileAds.shared.register(webView)\n }\n }\n\nObjective-C \n\n @import WebKit;\n\n #import \"ViewController.h\"\n\n @interface ViewController ()\n\n @property(nonatomic, strong) WKWebView *webView;\n\n @end\n\n @implementation ViewController\n\n - (void)viewDidLoad {\n [super viewDidLoad];\n\n // Initialize a WKWebViewConfiguration object.\n WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];\n // Let HTML videos with a \"playsinline\" attribute play inline.\n webViewConfiguration.allowsInlineMediaPlayback = YES;\n // Let HTML videos with an \"autoplay\" attribute play automatically.\n webViewConfiguration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;\n\n // Initialize the WKWebView with your WKWebViewConfiguration object.\n self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:webViewConfiguration];\n [self.view addSubview:self.webView];\n\n // Register the web view.\n \\[GADMobileAds.sharedInstance registerWebView:self.webView\\];\n }\n\nTest your integration\n\nBefore using your own URL, we recommend that you load the following URL to test\nthe integration: \n\n https://google.github.io/webview-ads/test#api-for-ads-tests\n\nThe test URL shows green status bars for a successful integration if the\nfollowing conditions apply:\n\n- `WKWebView` connected to the Google Mobile Ads SDK\n\nNext steps\n\n- Gather consent in `WKWebView`. The Web view APIs for Ads doesn't propagate consent collected in the mobile app context using [IAB TCF v2.0](//iabeurope.eu/tcf-2-0/) or [IAB CCPA](//iabtechlab.com/wp-content/uploads/2019/11/Technical-Specifications-FAQ-US-Privacy-IAB-Tech-Lab.pdf) compliance frameworks to the tags in your web views. If you're interested in implementing a single consent flow as the owner of both the `WKWebView` and its corresponding web content being monetized, work with your consent management platform to gather consent in the `WKWebView` context."]]