Banner / MREC

Display Banner Ads

To display banner ads, use one of the four available functions that start with showBanner from the code example below:

#import <Bidease/Bidease.h>

@interface ViewController : UIViewController<BideaseBannerViewDelegate,BideaseBannerDisplayDelegate>
@end

@implementation ViewController

-(void)showBanner_320x50
{
     BideaseBannerView* banner = [BDEStickyBannerView attachToView:self.view position:BIDEASEADS_BANNER_POSITION_BOTTOM edgeInsets:UIEdgeInsetsZero bannerFormat:BIDEASE_BANNER_320x50 placementId:@"Hello_ecpm_0.38" delegate:self];
     banner.refreshInterval = 20.0;
}

-(void)showBanner2_320x50
{
    BideaseBannerView* banner = [BideaseBannerView bannerWithFormat:BIDEASE_BANNER_320x50 placementId:@"Hello_ecpm_0.38"];
    banner.delegate = self;
    banner.displayDelegate = self;
    banner.refreshInterval = 20.0;
    [self.view addSubview:banner];
}

-(void)showBanner_300x250
{
     BideaseBannerView* banner = [BDEStickyBannerView attachToView:self.view position:BIDEASEADS_BANNER_POSITION_BOTTOM edgeInsets:UIEdgeInsetsZero bannerFormat:BIDEASE_BANNER_300x250 placementId:@"HelloBanner_ecpm_0.38" delegate:self];
     banner.refreshInterval = 20.0;
}

-(void)showBanner2_300x250
{
    BideaseBannerView* banner = [BideaseBannerView bannerWithFormat:BIDEASE_BANNER_300x250 placementId:@"HelloBanner_ecpm_0.38"];
    banner.delegate = self;
    banner.displayDelegate = self;
    banner.refreshInterval = 20.0;
    [self.view addSubview:banner];
}

#pragma mark - delegate methods

-(void)bideaseBannerViewDidLoadAd:(BideaseBannerView*)bideaseView
{
    NSLog(@"didLoadAd");
}

-(void)bideaseBannerView:(BideaseBannerView*)bideaseView failedToLoadAdWithError:(NSError*)error isConnectionError:(BOOL)isConnectionError
{
    NSLog(@"failedToLoadAd %@", error.localizedDescription);
}

-(void)bideaseBannerViewOnClick:(BideaseBannerView*)view error:(NSError*)error
{
    NSLog(@"click");
}

-(UIViewController*)viewControllerForPresentingModalView
{
    return self;
}

@end
import Bidease

class ViewController: UIViewController , BideaseViewDelegate {

    func showBanner_320x50() {
        let banner = BDEStickyBannerView.attach(to: self.view, position: BIDEASEADS_BANNER_POSITION_BOTTOM, edgeInsets: .zero, bannerFormat: BIDEASE_BANNER_320x50, placementId: "Hello_ecpm_0.38", delegate: self)
        banner.setRefreshInterval(20.0)
    }

    func showBanner2_320x50() {
        let banner = BideaseBannerView.banner(withFormat: BIDEASE_BANNER_320x50, placementId: "Hello_ecpm_0.38")
        banner.delegate = self
        banner.displayDelegate = self;
        banner.frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 50.0)
        banner.setRefreshInterval(20.0)
        self.view.addSubview(banner)
    }

    func showBanner_300x250() {
        let banner = BDEStickyBannerView.attach(to: self.view, position: BIDEASEADS_BANNER_POSITION_BOTTOM, edgeInsets: .zero, bannerFormat: BIDEASE_BANNER_300x250, placementId: "HelloBanner_ecpm_0.38", delegate: self)
        banner.setRefreshInterval(20.0)
    }

    func showBanner2_300x250() {
        let banner = BideaseBannerView.banner(withFormat: BIDEASE_BANNER_300x250, placementId: "HelloBanner_ecpm_0.38")
        banner.delegate = self
        banner.displayDelegate = self;
        banner.frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 50.0)
        banner.setRefreshInterval(20.0)
        self.view.addSubview(banner)
    }

    func bideaseBannerViewDidLoadAd(_ bideaseView: BideaseBannerView) {
        print("bideaseViewDidDisplayAd")
    }

    func bideaseBannerView(_ bideaseView: BideaseBannerView, failedToLoadAdWithError error: Error, isConnectionError: Bool) {
        print("bideaseView failedToDisplayAdWithError")
    }

    func bideaseBannerView(onClick:BDEBaseBannerView, error: Error?) {
        print("bideaseView onClick")
    }

    func viewControllerForPresentingModalView() -> UIViewController {
        return self
    }
}
import SwiftUI
import Bidease

struct BideaseBannerViewRepresentable: UIViewRepresentable {

    enum BannerType {
        case sticky320x50
        case normal320x50
        case sticky300x250
        case normal300x250
    }

    let bannerType: BannerType

    func makeCoordinator() -> Coordinator {
        Coordinator()
    }

    func makeUIView(context: Context) -> UIView {
        let container = UIView()
        container.backgroundColor = .clear

        let banner: UIView

        switch bannerType {

        case .sticky320x50:
            banner = BDEStickyBannerView.attach(
                to: container,
                position: BIDEASEADS_BANNER_POSITION_BOTTOM,
                edgeInsets: .zero,
                bannerFormat: BIDEASE_BANNER_320x50,
                placementId: "Hello_ecpm_0.38",
                delegate: context.coordinator
            )

        case .normal320x50:
            let b = BideaseBannerView.banner(
                withFormat: BIDEASE_BANNER_320x50,
                placementId: "Hello_ecpm_0.38"
            )
            b.delegate = context.coordinator
            b.displayDelegate = context.coordinator
            b.frame = CGRect(x: 0, y: 0, width: 320, height: 50)
            banner = b
            container.addSubview(b)

        case .sticky300x250:
            banner = BDEStickyBannerView.attach(
                to: container,
                position: BIDEASEADS_BANNER_POSITION_BOTTOM,
                edgeInsets: .zero,
                bannerFormat: BIDEASE_BANNER_300x250,
                placementId: "HelloBanner_ecpm_0.38",
                delegate: context.coordinator
            )

        case .normal300x250:
            let b = BideaseBannerView.banner(
                withFormat: BIDEASE_BANNER_300x250,
                placementId: "HelloBanner_ecpm_0.38"
            )
            b.delegate = context.coordinator
            b.displayDelegate = context.coordinator
            b.frame = CGRect(x: 0, y: 0, width: 300, height: 250)
            banner = b
            container.addSubview(b)
        }

        if let refreshable = banner as? BDEBaseBannerView {
            refreshable.setRefreshInterval(20.0)
        }

        return container
    }

    func updateUIView(_ uiView: UIView, context: Context) {
        // No-op
    }

    // MARK: - Coordinator

    final class Coordinator: NSObject, BideaseViewDelegate {

        func bideaseBannerViewDidLoadAd(_ bideaseView: BideaseBannerView) {
            print("bideaseViewDidDisplayAd")
        }

        func bideaseBannerView(
            _ bideaseView: BideaseBannerView,
            failedToLoadAdWithError error: Error,
            isConnectionError: Bool
        ) {
            print("bideaseView failedToDisplayAdWithError")
        }

        func bideaseBannerView(onClick: BDEBaseBannerView, error: Error?) {
            print("bideaseView onClick")
        }

        func viewControllerForPresentingModalView() -> UIViewController {
            UIApplication.shared
                .connectedScenes
                .compactMap { $0 as? UIWindowScene }
                .flatMap { $0.windows }
                .first { $0.isKeyWindow }?
                .rootViewController ?? UIViewController()
        }
    }
}

//USAGE EXAMPLE:

struct ContentView: View {
    var body: some View {
        VStack {
            Spacer()

            BideaseBannerViewRepresentable(bannerType: .sticky320x50)
                .frame(height: 50)
        }
    }
}

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: Banner_ecpm_1.3 ➡️ floor price = $1.3

Auto-refresh setup

Enable automatic banner refreshing:

[banner setRefreshInterval:20.0 /*new refresh interval in seconds*/];
banner.setRefreshInterval(20.0) /*new refresh interval in seconds*/
banner.setRefreshInterval(20.0) /*new refresh interval in seconds*/

To disable auto-refresh, set zero refresh interval (0 = off). Then you should refresh manually:

[banner refreshWithCompletion:^(BOOL success, NSError * _Nullable error) { }];
banner.refresh() { success, error in   }
banner.refresh() { success, error in   }