メインコンテンツへスキップ

概要

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

Info.plist設定

WebViewでバックフィル広告を有効にするには、Info.plistに以下のキーを追加してください:
Info.plist
<key>GADIntegrationManager</key>
<string>webview</string>
この設定はWebViewでバックフィル広告が正常に動作するために必要です。この設定がないとバックフィル広告が表示されない場合があります。

WebView登録

import WebKit
import AdropAds

class WebViewController: UIViewController {

    @IBOutlet weak var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // WKWebViewConfigurationオブジェクトを初期化
        let webViewConfiguration = WKWebViewConfiguration()
        // "playsinline"属性を持つHTML動画をインラインで再生
        webViewConfiguration.allowsInlineMediaPlayback = true
        // "autoplay"属性を持つHTML動画を自動再生
        webViewConfiguration.mediaTypesRequiringUserActionForPlayback = []

        // WKWebViewConfigurationオブジェクトでWKWebViewを初期化
        webView = WKWebView(frame: view.frame, configuration: webViewConfiguration)
        // バックフィル広告サポートのためにWebViewを登録
        // コンテンツ読み込み前にできるだけ早く呼び出す
        Adrop.registerWebView(webView)

        // Webコンテンツを読み込む
        if let url = URL(string: "https://your-website.com") {
            webView.load(URLRequest(url: url))
        }
    }
}
registerWebView()はメインスレッドで呼び出す必要があります。 Webコンテンツを読み込む前にできるだけ早く呼び出してください(例:viewDidLoad)。
WebViewでバックフィル広告を使用するにはadrop-ads-backfillモジュールが必要です。モジュールがインストールされていない場合、registerWebView()は静かに無視されます。

外部URLの処理

アプリで自社ドメイン以外のURLを外部ブラウザで開くロジックがある場合、広告リソースリクエスト(例:googleads.g.doubleclick.net)がブロックされないようにする必要があります。 広告リソース(iframe、スクリプトなど)は広告SDKによって自動的にロードされ、ユーザーが直接クリックしたものではありません。ユーザーが直接クリックしたメインフレームのナビゲーションのみを外部ブラウザにリダイレクトしてください。
import UIKit
import WebKit

let allowedHost = "my-domain.com"

func webView(_ webView: WKWebView,
             decidePolicyFor navigationAction: WKNavigationAction,
             decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

    guard let url = navigationAction.request.url else {
        decisionHandler(.cancel)
        return
    }

    let host = url.host ?? ""

    // ユーザーが直接クリックした場合のみ外部ブラウザで開く
    // 広告リソース(例:googleads.g.doubleclick.net)はiframe/スクリプトでロードされるためブロックしない
    if !host.contains(allowedHost),
       navigationAction.navigationType == .linkActivated {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        decisionHandler(.cancel)
        return
    }

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

関連ドキュメント

バナー広告

バナー広告の実装方法を確認

リファレンス

APIリファレンス

サンプル

サンプルリポジトリ