Prerequisites
Do iOS Get Started until finishing step 3.
Step summary
Add the initialization code.
Add the ad wrapper views in your app.
Follow our ad format guides for their implementation.
Test everything is working.
Change everything to production code.
Your app is now prepared for monetization with us.
Initialize the SDK
We require the SDK to be initialized only once as early as possible so for this purpose using the UIApplicationDelegate’s didFinishLaunchingWithOptions method or the first UIViewController’s viewDidLoad method is recomended.
Override the didFinishLaunchingWithOptions
delegate method inside your UIApplicationDelegate
class.
import UIKit import R89SDK @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // This is for testing purposes, remove it on prod R89SDK.shared.setLogLevel(level: LogLevels.debug) // This is for testing purposes, remove it on prod R89SDK.shared.setDebug() // This is for testing purposes, remove it on prod // publisherId and appId are for testing purposes, remove it on prod R89SDK.shared.initialize( publisherId: "TestRefinery89ID", appId: "TestDemoApp", singleLine: false, publisherInitializationEvents: nil ) return true } }
Your publisherId
and appId
will be provided to you during onboarding process by email, you can also retrieve them from the web interface after login.
This appID
is not the same GADApplicationIdentifier
provided in the Info.plist in previous steps.
Add wrappers to your Views
Wrappers are the simple UIView
containers inside which the ads will show. You need to add as many ad slots or ad places as you desire. The wrapper can be linked from the XCode’s UI builder or be created programmatically in the view controller.
Here is a short example that demonstrates the wrapper usage by creating it in the XCode’s UI Builder.
The adContainer
is linked with the AdViewController
, and provided to the RefineryAdFactory.shared.createBanner(...)
method as a wrapper
parameter.
class AdViewController: UIViewController { @IBOutlet var adContainer:UIView! override func viewDidLoad() { super.viewDidLoad() let configurationID = ConfigBuilder.companion.BANNER_TEST_R89_CONFIG_ID // Passing the adContainer wrapper to the SDK, so it can display a banner ad in it. RefineryAdFactory.shared.createBanner(wrapper: adContainer, configurationID: configurationID, lifecycleCallbacks: nil) } }
Now the ad will be placed inside the adContainer
.
Here is the equivalent example that demonstrates how to create a wrapper programmatically and display an ad in it.
class AdViewController: UIViewController { let adContainer:UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false return view }() override func viewDidLoad() { super.viewDidLoad() // Add and center the adContainer in it's parent view.addSubview(adContainer) NSLayoutConstraint.activate([ adContainer.centerXAnchor.constraint(equalTo: view.centerXAnchor), adContainer.centerYAnchor.constraint(equalTo: view.centerYAnchor), ]) // Passing the adContainer wrapper to the SDK, so it can display a banner ad in it. RefineryAdFactory.shared.createBanner(wrapper: adContainer, configurationID: ConfigBuilder.companion.BANNER_TEST_R89_CONFIG_ID, lifecycleCallbacks: nil) } }
Now the adContainer
has been created programmatically. It is added and centered in its parent. In the next step, the instance of adContainer
is provided to the RefineryAdFactory.shared.createBanner
via wrapper
argument, so the SDK will display the ad in it.