Interstitial
Display interstitial ads
To display interstitial ads, use the showAd function as shown in the example below:
#import <Bidease/Bidease.h>
NS_ASSUME_NONNULL_BEGIN
@interface ViewController : UIViewController<BideaseShowDelegate>
@property(nonatomic) BideaseInterstitial* interstitial;
@end
NS_ASSUME_NONNULL_END
@implementation ViewController
- (id)initWithCoder:(NSCoder *)coder
{
if (self = [super initWithCoder:coder])
{
_interstitial = [[BideaseInterstitial alloc]initWithPlacementId:@"PlacementID"];
}
return self;
}
-(void)showAd
{
__weak typeof(self)weakSelf = self;
[_interstitial bidWithContext:nil bidfloor:nil completion:^(id<BDEAuctionBid> bid, NSString* requestId, NSError* error) {
if (nil == bid)
{
NSLog(@"Bid failed %@", error);
return;
}
[bid onWin:nil];
[weakSelf.interstitial loadWithBid:bid completion:^(id<BideaseAd> ad, NSError* error) {
if (nil == ad)
{
NSLog(@"Load failed %@", error);
return;
}
ViewController* strongSelf = weakSelf;
if (nil != strongSelf)
{
[strongSelf.interstitial showWithDelegate:strongSelf];
}
}];
}];
}
#pragma mark - BideaseShowDelegate methods
-(void)onAdWillAppear:(id<BideaseAd>)ad sender:(BideaseAdvertising*)sender
{
NSLog(@"onAdWillAppear");
}
-(void)onAdDidDisappear:(id<BideaseAd>)ad sender:(BideaseAdvertising*)sender
{
NSLog(@"onAdDidDisappear");
}
-(void)onAdClicked:(id<BideaseAd>)ad error:(NSError*)error sender:(BideaseAdvertising*)sender
{
NSLog(@"onAdClicked");
}
-(void)onAdReported:(id<BideaseAd>)ad reason:(NSString *)reason sender:(BideaseAdvertising*)sender
{
NSLog(@"onAdReported");
}
-(BOOL)shouldShowAd:(BideaseAdvertising*)sender
{
return YES;
}
-(void)onAdFailedToAppear:(id<BideaseAd>)ad error:(NSError*)error sender:(BideaseAdvertising *)sender
{
NSLog(@"onAdFailedToAppear %@", error.localizedDescription);
}
@endimport Bidease
class ViewController: UIViewController , BideaseShowDelegate {
let interstitial:BideaseInterstitial
func showAd() {
let inter = interstitial
inter.bid(withContext: nil, bidfloor: nil) { [weak self] bid, requestId, error in
guard let bid = bid else {
print("Bid failed")
return
}
bid.onWin(nil)
inter.load(with: bid) { ad, error in
guard nil != ad else {
print("Load failed")
return
}
if let delegate = self {
inter.show(with: delegate)
}
}
}
}
required init?(coder: NSCoder) {
interstitial = BideaseInterstitial(placementId: "PlacementID")
super.init(coder: coder)
}
func onAdWillAppear(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdWillAppear");
}
func onAdDidDisappear(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdFailedToAppear")
}
func onAdFailed(toAppear ad: (any BideaseAd)?, error: Error, sender: BideaseAdvertising) {
print("onAdFailedToAppear")
}
func onAdClicked(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdClicked");
}
func shouldShowAd(_ sender: BideaseAdvertising) -> Bool {
return true
}
}import SwiftUI
import Bidease
final class BideaseInterstitialController: NSObject, ObservableObject, BideaseShowDelegate {
private let interstitial: BideaseInterstitial
override init() {
self.interstitial = BideaseInterstitial(placementId: "PlacementID")
super.init()
}
func showAd(from viewController: UIViewController) {
interstitial.bid(withContext: nil, bidfloor: nil) { [weak self] bid, requestId, error in
guard let self, let bid else {
print("Bid failed")
return
}
bid.onWin(nil)
self.interstitial.load(with: bid) { ad, error in
guard ad != nil else {
print("Load failed")
return
}
self.interstitial.show(with: viewController, delegate: self)
}
}
}
// MARK: - BideaseShowDelegate
func onAdWillAppear(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdWillAppear")
}
func onAdDidDisappear(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdDidDisappear")
}
func onAdFailed(toAppear ad: (any BideaseAd)?, error: Error, sender: BideaseAdvertising) {
print("onAdFailedToAppear")
}
func onAdClicked(_ ad: any BideaseAd, sender: BideaseAdvertising) {
print("onAdClicked")
}
func shouldShowAd(_ sender: BideaseAdvertising) -> Bool {
true
}
}
//////////////////////////////////////////////////////////////////
//UIViewController Provider for SwiftUI
struct ViewControllerResolver: UIViewControllerRepresentable {
let onResolve: (UIViewController) -> Void
func makeUIViewController(context: Context) -> UIViewController {
let vc = UIViewController()
DispatchQueue.main.async {
onResolve(vc)
}
return vc
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}
////////////////////////////////////////////////////////////////////
//USAGE
struct ContentView: View {
@StateObject private var interstitial = BideaseInterstitialController()
@State private var presenter: UIViewController?
var body: some View {
VStack(spacing: 20) {
Button("Show Interstitial") {
if let presenter {
interstitial.showAd(from: presenter)
}
}
}
.background(
ViewControllerResolver { vc in
presenter = vc
}
)
}
}Placement ID & floors
- Placement ID: use the format
AdFormat_ecpm_X.X, where ecpm is the required separator and X.X is the floor price value (any number).- Example:
Interstitial_ecpm_1.3➡️ floor price = $1.3
- Example:
Tips
- Always call show on the main thread.
- Handle both bid and load failures; avoid retry loops without backoff.
- Keep the interstitial instance alive (e.g., as a view controller property) across the full load/show lifecycle.
Updated 13 days ago