SWIFT SDK FAQ
Use the following method with the desired size:
public func setDefaultBannerSize(size: String)
Just use
prepare(type: .any)
instead of
prepare(type: .voice)
In case of an error, you will receive .error in AdmanState. Please find the ways to handle it below:
func admanStateDidChange(sender: Adman) {
switch (sender.state) {
case .error:
do_something()
default:
break
}
}
// to get detailed error info (if needed)
func errorReceived(err: Error) {
do_something()
}
When using the ad preloading, it is necessary to call the method adman.reportAdEvent(eventName: "can_show") at the time of possible launch of advertising, even in cases, when advertising wasn't actually loaded or played.This method provides the measurement of advertising capacity.
init() {
admanEU = Adman(siteId: 777, testMode: false, zoneId: 0, region: .EU, playerId: 0)
admanEU.delegate = self
admanUS = Adman(siteId: 778, testMode: false, zoneId: 0, region: .global, playerId: 0)
admanUS.delegate = self
}
func admanStateDidChange(sender: Adman) {
case .adNone:
if sender.currentRegion() == .EU {
admanUS.prepare()
}
default:
break
}
}
In order to specify the slot for an ad, the below method should be called before calling prepare
setAdSlot(slot: slot)
Possible values for slot (AdmanAdSlot):
Value Name | Description |
---|---|
.preroll | Will play only ads that should be played before the content or ads without specific slot. |
.midroll | Will play only ads that should be played in the middle of the content or ads without specific slot. |
.postroll | Will play only ads that should be played after the content or ads without specific slot. |
open class AdmanUIBase is responsible for the view of the ads and can be inherited by another class in the application. Any changes of the view can be done in the inherited subclass.
Background color can be changed in the subclass that inherited the AdmanUIBase class in method open func initBaseView()
view.backgroundColor = UIColor.black
Font color of labels can be changed in the subclass of the AdmanUIBase class in method open func initBaseView()
intentLabel.textColor = UIColor.white
remainingTime.textColor = UIColor.white
You can change the banner view bounds from the extension of AdmanUIBase:
let bounds = UIScreen.main.bounds
bannerView.frame = bounds
This parameter must be used with 'prepare' method when you are preloading an ad. Please find some usage examples below:
public func prepare()
public func prepare(format: AdmanFormat)
public func prepare(type: AdmanType)
public func prepare(format: AdmanFormat, type: AdmanType)
public func prepare(maxDuration: Int, adsCount: Int)
public func prepare(format: AdmanFormat, type: AdmanType, maxDuration: Int, adsCount: Int)
For CCPA consent string please use the following before the ad request:
adman.setSiteVariable(key: "us_privacy", value: "PrivacyData")
After Adman initialization you will need to create AdmanUIBase class.
This class must be initialized before calling adman.prepare()
On the ad playback, the following method should be called:
admanUIBase.show(rootVC: viewController)
In order to customize the look of the view, you will need to inherit the AdmanUIBase class and implement its methods:
import Foundation
import Adman_swift
import UIKit
protocol AdmanUIExtensionDelegate: NSObject {
func refresh()
}
class AdmanUIExtension: AdmanUIBase {
var delegate: AdmanUIExtensionDelegate?
var devMode: Bool?
override init() {
super.init()
if UserDefaults.standard.bool(forKey: "debug") == true { devMode = true }
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func initBaseView() {
super.initBaseView()
rewindView.image = loadImageFrom(base64: REFRESH_BTN_SOURCE)
for rec in (rewindView.gestureRecognizers ?? [UIGestureRecognizer]()) {
rewindView.removeGestureRecognizer(rec)
}
addSelector(sel: #selector(refreshDelegate(uiGestureRecognizer:)), view: rewindView, target: self)
}
override func initVoiceView() {
super.initVoiceView()
positiveView.image = nil
negativeView.image = nil
intentLabel.text = ""
}
override func show(rootVC: UIViewController) {
super.show(rootVC: rootVC)
if devMode ?? false {
remainingTime.isHidden = true
view.backgroundColor = nil
}
}
override func update(ad: AdmanBannerWrapper) {
super.update(ad: ad)
if devMode ?? false { bannerView.image = nil }
}
@objc func refreshDelegate(uiGestureRecognizer: UIGestureRecognizer) {
delegate?.refresh()
}
@objc override func admanVoiceNotification(notification: NSNotification) {
super.admanVoiceNotification(notification: notification)
let dict = notification.userInfo
guard let message = dict?[NOTIFICATION_ADMAN_VOICE_KEY] as? NotificationAdmanVoice else { return }
switch message.event {
case .recognizerStarted:
break
default: break
}
}
}
You can find the example in test applications of Adman_swift framework (files: AdmanUIExt.swift and PlayerVC.swift )
Please use the following method BEFORE requesting an ad:
public func setSiteVariable(key: String, value: String)