Migrate to banner ad unit API for iOS
Switch to the LevelPlay Banner APIs by using an ad unit ID to load and display banner ads.
읽는 시간 5분최근 업데이트: 5일 전
This guide explains how to integrate the LevelPlay APIs using an ad unit ID to load and display banner ads.
Prerequisites
- The min supported SDK is 8.6.0. You can download the latest SDK here.
- Ensure that you initialize the SDK using LevelPlay Initialization API.
- Find the AdUnitID in LevelPlay dashboard.
Create Banner Ad Object and Set Size
The creation of the banner ad object should be done after receiving onInitSuccess callback.// Create the banner view and set the ad unit idself.bannerAdView = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId"];
Banner Sizes
Legacy | Ad Unit (new) | Dimensions in dp |
|---|---|---|
| ISBannerSize | LPMAdSize | (Width X Height) |
| ISBannerSize_BANNER | bannerSize | 320 x 50 |
| ISBannerSize_LARGE | largeSize | 320 x 90 |
| ISBannerSize_RECTANGLE | mediumRectangleSize | 300 x 250 |
| ISBannerSize_SMART | Replaced by Adaptive Ad Size (see below) | Automatically renders ads to adjust size and orientation for mobile & tablets |
Adaptive ad size that adjusts to the screen width (recommended)
This option returns BANNER or LEADERBOARD according to the device type. Networks that support the adaptive feature (Google, Yandex) will return a height based on their optimization logic.LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];[self.bannerAdView setAdSize: bannerSize];
LPMAdSize *bannerSize = [LPMAdSize largeSize];[self.bannerAdView setAdSize: bannerSize];
Placements
We support placements in banners for reporting only. Placements should be set before the loadAd, to affect all reloaded ads.// Set the placement name[self.bannerAdView setPlacementName:@"PlacementName"];
Set Banner Delegates
Implement the LPMBannerAdViewDelegate instead of LevelPlayBannerDelegate in your code to get informed of ad delivery.- It is recommended to set the delegates before loading the banner ad.
- Each banner ad view should have its own delegate implementation.
- Callbacks run on the main thread.
// Set delegate implementation[self.bannerAdView setDelegate:self];#pragma mark - LPMBannerAdViewDelegate- (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo { //Ad was loaded successfully}- (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error { // Ad load failed}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo { // Ad was clicked}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo { // Ad was displayed and visible on screen}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error { // Ad failed to be displayed on screen}- (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo { // User pressed on the ad and was navigated out of the app}- (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo { // Ad is opened on full screen}- (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo { // Ad is restored to its original size}
LevelPlay Ad Info
The LPMAdInfo parameter includes information about the loaded ad.IronSource Legacy API | Ad Unit API | |
|---|---|---|
| Delegates | LevelPlayBannerDelegate | LPMBannerAdViewDelegate |
| Events | didLoad | didLoadAdWithAdInfo |
| didFailToLoadWithError | didFailToLoadAdWithAdUnitId | |
| didClickWithAdInfo | didClickAdWithAdInfo | |
| didPresentScreenWithAdInfo | didExpandAdWithAdInfo | |
| didDismissScreenWithAdInfo | didCollapseAdWithAdInfo | |
| didLeaveApplicationWithAdInfo | didLeaveAppWithAdInfo | |
| - | didDisplayAdWithAdInfo | |
| - | didFailToDisplayAdWithAdInfo |
Load Banner Ad
To load a banner ad, use loadAd instead of IronSource.loadBanner.// Load the banner ad[self.bannerAdView loadAdWithViewController:self];
Pause and Resume Banner Refresh
You can pause banner refresh in your code if the refresh value was defined in the platform. Use the following methods to stop the automatic refresh of the banner ad, or re-enable it after pausing.- pauseAutoRefresh - pauses auto-refresh of the banner ad.
- resumeAutoRefresh - resumes auto-refresh of the banner ad after it has been paused.
// Pause refresh[self.bannerAdView pauseAutoRefresh];// Resume refresh[self.bannerAdView resumeAutoRefresh];
Destroy Banner Ad
To destroy a banner, call the destroy method. A destroyed banner can no longer be shown again. To display more ads, create a new LPMBannerAdView object.[self.bannerAdView destroy];
Multiple Ad Unit Banner APIs
Legacy | Ad Unit (new) | |
|---|---|---|
| Banner Ad View | ISBannerView | LPMBannerAdView |
| API | loadBannerWithViewController | loadAdWithViewController |
| loadBannerWithViewController | setPlacementName | |
| destroyBanner | destroy | |
| - | LPMAdSize.width | |
| - | LPMAdSize.height | |
| - | pauseAutoRefresh | |
| - | resumeAutoRefresh |
Full Implementation Example of Banner Ads
Here is an example for creating and loading a banner ad using adaptive banner size.NS_ASSUME_NONNULL_BEGIN@interface BannerAdViewController () <LPMBannerAdViewDelegate>@property(nonatomic, strong) LPMBannerAdView *bannerAd;@end@implementation BannerAdViewController- (void)dealloc {[self.bannerAd destroy];}- (void)createBannerAd {// Create the banner view and set the ad unit idself.bannerAd = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId"];// Set the placement name (optional)[self.bannerAd setPlacementName:@"PlacementName"];// Set the ad sizeLPMAdSize *bannerSize = [self getBannerSize];// Required when using adaptive ad sizeif (bannerSize == nil) { return; }[self.bannerAd setAdSize:bannerSize];// Set the delegate implementation[self.bannerAd setDelegate:self];// Add the banner view to the view hierarchy with the proper constraints[self addBannerViewWithSize:bannerSize];}- (LPMAdSize *)getBannerSize {// 1. Recommended - Adaptive ad size that adjusts to the screen widthLPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];// 2. Adaptive ad size using fixed width ad size// self.bannerSize = [LPMAdSize createAdaptiveAdSizeWithWidth:400];// 3. Specific banner size - BANNER, LARGE, MEDIUM_RECTANGLE// self.bannerSize = [LPMAdSize mediumRectangleSize];return bannerSize;}- (void)loadBannerAd {[self.bannerAd loadAdWithViewController:self];}- (void)addBannerViewWithSize:(LPMAdSize *)bannerSize {self.bannerAd.translatesAutoresizingMaskIntoConstraints = NO;// Add the banner view to the view hierarchy[self.view addSubview:self.bannerAd];[NSLayoutConstraint activateConstraints:@[ [self.bannerAd.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], [self.bannerAd.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], [self.bannerAd.widthAnchor constraintEqualToConstant:bannerSize.width], [self.bannerAd.heightAnchor constraintEqualToConstant:bannerSize.height]]];}#pragma mark - LPMBannerAdViewDelegate- (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error {}- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}- (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {}@endNS_ASSUME_NONNULL_END