1. Home
  2. Docs
  3. Android – Monetize ...
  4. Use Manual
  5. Initialization Types
  6. WebView Initialization

WebView Initialization

How Does It Work?

We configure your webview to create a channel between our web header script and the Native SDK, this enables better privacy compliance and targeting.

With this in place you can use loadUrlWithConsentDataOrWait to load the URL with consent data

 

What Is Needed?

  1. Get started by creating an account with us. Contact us to initiate the process and provide all the necessary information listed below.
  2. Add the Initialization code.
  3. Follow This Guide
  4. Your web-app is now prepared for monetization with us.

 

Information we require about your app

 

Examples

At the end of the example, you can find a template for production here.

If you are in Debug mode, please add these lines before any of the examples. Marking the SDK as Debug will make the SDK use ConfigBuilder IDs and data.

R89SDK.shared.setLogLevel(level: LogLevels.debug)
R89SDK.shared.setDebug(getLocalFakeData: true, 
                       forceCMP: true, 
                       useProductionAuctionServer: false)

The example in the demo

The singleLine flag is set to false. Use the RefineryAdFactory to create and place the ADs in a UIView.

@IBOutlet var wkWebView: WKWebView!
R89SDK.shared.initialize( publisherId: "TestRefinery89ID",
                          appId: "TestAppId",
                          singleLine: false,
                          publisherInitializationEvents: nil)
let url = "https://refinery89.com/"
        
wkWebView.navigationDelegate = self
        
let userAgent = R89SDK.shared.getUserAgent(webView: wkWebView, siteName: "WebViewDemo")
        
R89SDK.shared.configureWebView(webView: wkWebView, userAgent: userAgent)
        
R89SDK.shared.loadUrlWithConsentDataOrWait(webView: wkWebView, url: url)

Template


R89SDK.shared.initialize(publisherId: <YOUR PUBLISHER ID>, 
                         appId: <YOUR APP ID>, 
                         singleLine: false, 
                         publisherInitializationEvents: nil)
let url = <YOUR URL>
        
wkWebView.navigationDelegate = self
        
let userAgent = R89SDK.shared.getUserAgent(webView: wkWebView, siteName: "WebViewDemo")
        
R89SDK.shared.configureWebView(webView: wkWebView, userAgent: userAgent)
        
R89SDK.shared.loadUrlWithConsentDataOrWait(webView: wkWebView, url: url)

Initialization

To initialize the SDK call R89SDK.shared.initialize method and pass the publisherId and appId.

class MainViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        R89SDK.shared.initialize(publisherId: "TestRefinery89ID", 
                         appId: "TestConfigDemoApp", 
                         singleLine: false, 
                         publisherInitializationEvents: nil)
    }
}

After initilization you can configure your WebView using R89SDK.shared.configureWebView. You will also need to create userAgent for your webView, you can do so with R89SDK.shared.getUserAgent.

class MainViewController: UIViewController {
    
    @IBOutlet var adContainer:UIView! = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        R89SDK.shared.initialize(publisherId: <YOUR PUBLISHER ID>, 
                         appId: <YOUR APP ID>, 
                         singleLine: false, 
                         publisherInitializationEvents: nil)
                         
        let url = "https://refinery89.com/"
        
        wkWebView.navigationDelegate = self
        
        let userAgent = R89SDK.shared.getUserAgent(webView: wkWebView, siteName: "WebViewDemo")
        
        R89SDK.shared.configureWebView(webView: wkWebView, userAgent: userAgent)
        
        R89SDK.shared.loadUrlWithConsentDataOrWait(webView: wkWebView, url: url)
        }
}

At this point, the advertisements can be displayed. To place a simple banner Ad add RefineryAdFactory.shared.createBanner like in the example below. The SDK will put the advertisement inside the provided adContainer.

class MainViewController: UIViewController {
    
    @IBOutlet var adContainer:UIView! = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        R89SDK.shared.initialize(publisherId: <YOUR PUBLISHER ID>, 
                         appId: <YOUR APP ID>, 
                         singleLine: false, 
                         publisherInitializationEvents: nil)
                         
        let url = "https://refinery89.com/"
        
        wkWebView.navigationDelegate = self
        
        let userAgent = R89SDK.shared.getUserAgent(webView: wkWebView, siteName: "WebViewDemo")
        
        R89SDK.shared.configureWebView(webView: wkWebView, userAgent: userAgent)
        
        R89SDK.shared.loadUrlWithConsentDataOrWait(webView: wkWebView, url: url)
        
        RefineryAdFactory.shared.createBanner(configurationId: <CONFIGURATION ID>, wrapper: adContainer, lifecycleCallbacks: nil)
    }
}

Note that no need to await for SDK initialization, advertisements can be used right after calling the R89SDK.shared.initialize method.

If your webPage, that you want to load in a webView, already has CMP and you dont want for both CMPs ro show, you can use R89SDK.shared.addScriptToNotShowCMPInWebView to add script to webView and disable web CMP.

    func webView(_ webView: WKWebView) {
        R89SDK.shared.addScriptToNotShowCMPInWebView(webView: webView)
    }

How can we help?