Banner and MREC ads are rectangular ad formats that occupy a portion of an app’s layout—often positioned at the top or bottom of the screen or placed inline within scrollable content.
They remain visible as users interact with the app, allowing for uninterrupted gameplay or usage, and can be refreshed automatically after a set period.
The following sections show you how to load and then show and hide a banner or MREC ad.
To load a banner, create a MAAdView object that corresponds to your ad unit and call its loadAd method.
To show that ad, add the MAAdView object as a subview of your view hierarchy.
Implement MAAdViewAdDelegate so that you are notified when your ad is ready.
This also notifies you of other ad-related events.
- (void)didDisplayAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
- (void)didHideAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@end
To load a banner, create a MAAdView object that corresponds to your ad unit and call its loadAd method.
To show that ad, add the MAAdView object as a subview of your view hierarchy.
Implement MAAdViewAdDelegate so that you are notified when your ad is ready.
This also notifies you of other ad-related events.
class ExampleViewController: UIViewController, MAAdViewAdDelegate
funcdidDisplay(_ad: MAAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
funcdidHide(_ad: MAAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
}
To load a banner, create a UIViewRepresentable object, a wrapper that lets you integrate MAAdView, a UIKit view type object, into your SwiftUI view hierarchy.
Also provide a custom Coordinator class for the wrapper object that conforms to MAAdViewAdDelegate.
This notifies you when your ad is ready, and notifies you of other ad-related events.
Inside the wrapper’s makeUIView method, create a MAAdView object that corresponds to your ad unit.
Call its loadAd method.
To show that ad, add the UIViewRepresentable wrapper object inside your SwiftUI view hierarchy.
To load an MREC ad, create a MAAdView object corresponding to your ad unit and call its loadAd method.
To show the ad, add the MAAdView object as a subview of your view hierarchy.
Implement MAAdViewAdDelegate so that you are notified when your ad is ready.
This also notifes you of other ad-related events.
- (void)didDisplayAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
- (void)didHideAd:(MAAd *)ad { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
@end
To load an MREC ad, create a MAAdView object corresponding to your ad unit and call its loadAd method.
To show the ad, add the MAAdView object as a subview of your view hierarchy.
Implement MAAdViewAdDelegate so that you are notified when your ad is ready.
This also notifies you of other ad-related events.
class ExampleViewController: UIViewController, MAAdViewAdDelegate
funcdidDisplay(_ad: MAAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
funcdidHide(_ad: MAAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
}
To load an MREC ad, first create a UIViewRepresentable object, a wrapper that lets you integrate MAAdView, a UIKit view type object, into your SwiftUI view hierarchy.
Also provde a custom Coordinator class for the wrapper object that conforms to MAAdViewAdDelegate.
This notifies you when your ad is ready, and notifies you of other ad-related events.
Inside the wrapper’s makeUIView method, create a MAAdView object that corresponds to your ad unit and call its loadAd method.
To show that ad, add the UIViewRepresentable wrapper object inside your SwiftUI view hierarchy.
funcdidDisplay(_ad: MAAd) { /* use this for impression tracking */ }
funcdidHide(_ad: MAAd) { /* DO NOT USE - THIS IS RESERVED FOR FULLSCREEN ADS ONLY AND WILL BE REMOVED IN A FUTURE SDK RELEASE */ }
}
}
// SwiftUI view to show ad
struct ExampleSwiftUIMRECAdView: View
{
// MREC width and height are 300 and 250 respectively, on iPhone and iPad
let height =250
let width =300
var body: some View {
ExampleSwiftUIWrapper()
.frame(width: width, height: height)
}
}
Destroying Banners and MREC AdsCopy Link
You may no longer need a MAAdView instance.
This may happen, for example, if the user purchases ad removal.
Deallocate such a MAAdView instance in order to free resources.
Do not deallocate the MAAdView instance if you use multiple instances with the same Ad Unit ID.
Adaptive banners are responsive ads that dynamically adjust their dimensions based on device type and available width.
Adaptive banners can either be anchored or inline, with each type serving specific integration needs.
Starting in MAX SDK version 13.2.0, you can integrate adaptive banners by initializing your MAAdView with a MAAdViewConfiguration object.
Anchored Adaptive BannersCopy Link
Anchored adaptive banners are those you anchor at the top or bottom of the screen.
They dynamically adjust their height based on the device type and the banner width.
You must set the height of the MAAdView to the value returned by MAAdFormat.banner.adaptiveSize.height instead of using a constant value like 50 or 90.
adView.frame=CGRect(x: x, y: y, width: width, height: height)
// Set background color for banners to be fully functional
adView.backgroundColor=«background-color»
view.addSubview(adView)
// Load the first ad
adView.loadAd()
}
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
funcmakeUIView(context: Context)-> MAAdView
{
let config =MAAdViewConfiguration { builder in
builder.adaptiveType= .anchored
}
let adView =MAAdView(adUnitIdentifier: "«ad-unit-ID»", configuration: config)
adView.delegate= context.coordinator
// Set background color for banners to be fully functional
adView.backgroundColor=«background-color»
// Load the first Ad
adView.loadAd()
return adView
}
⋮
}
// SwiftUI view to show ad
struct ExampleSwiftUIAdaptiveBannerAdView: View
{
// Stretch to the width of the screen for banners to be fully functional
let width = UIScreen.main.bounds.width
// Get the anchored adaptive banner height
let height = MAAdFormat.banner.adaptiveSize.height
var body: some View {
ExampleSwiftUIWrapper()
.frame(width: width, height: height)
}
}
Setting a Custom WidthCopy Link
For more specific integrations, you can configure a custom width in points by calling a MAAdViewConfiguration builder method (as of Google adapter version 10.2.0.2, Google Ad Manager adapter version 10.2.0.1, and Liftoff Monetize adapter version 7.4.5.1).
To fetch the appropriate height for your custom anchored adaptive ad, call the adaptive size API.
let height = adView.adFormat.adaptiveSize(forWidth: width).height
let config =MAAdViewConfiguration { builder in
builder.adaptiveType= .anchored
builder.adaptiveWidth= width
}
let adView =MAAdView(adUnitIdentifier: "«ad-unit-ID»", configuration: config)
⋮
Inline Adaptive BannersCopy Link
Adaptive banners are anchored by default.
Alternatively, you can enable inline adaptive banners, which you can place in scrollable content.
Inline adaptive banners are typically larger than anchored adaptive banners.
They have variable heights that can extend to the full height of the device screen.
Inline adaptive banners are supported starting with iOS Google adapters version 11.7.0.1 and Liftoff Monetize adapter version 7.4.5.1.
To enable inline adaptive banners, set the MAAdViewConfiguration adaptive type to MAAdViewAdaptiveTypeInline as shown in the code below:
The default maximum height for an inline adaptive ad is the entire height of the device screen.
You may want to set a maximum height, in points, for your inline adaptive ad to ensure that the ad is within the height of the MAAdView.
You can do this with code like the following, which uses a maximum height of 100 points as an example:
You can integrate inline adaptive MRECs, starting with iOS Google adapters version 11.13.0.1 and Liftoff Monetize adapter version 7.4.5.1.
You must set inline adaptive MRECs to the type MAAdViewAdaptiveTypeInline for them to function properly.
Inline adaptive MRECs span the full width of the application window by default, but you may optionally specify a custom width in points.
The height is variable and can extend beyond standard MREC dimensions up to the full height of the device screen if you do not specify a maximum height.
You configure an inline adaptive MREC as shown in the following example:
The adaptive ad you load could be smaller than the dimensions you requested.
You may wish to configure your UI in a way that can adapt based on the size of the adaptive ad served.
If so, you can retrieve the width and height of the loaded ad, in points, with code like the following:
You may want to stop auto-refresh for an ad.
You may want to do this, for instance, when you hide a banner ad or you want to manually refresh.
Stop auto-refresh for a banner or MREC ad with the following code: