Leaderboard Ads will be rendered using GAMBannerView through the HyBidGAMLeaderboardCustomEvent
adapter.
Requirements
Ad Zone ID
from the PubNative Publisher DashboardGAM (DFP) Ad Unit ID
for the Ad Placement that you want to request.
Demo App
You can find a demo app with code samples for this type of integration here.
Create a GAMBannerView
- Declare a
GAMBannerView *gamLeaderboard
property.
var gamLeaderboard: GAMBannerView!
@property (nonatomic, strong) GAMBannerView *gamLeaderboard;
- Instantiate the property that you have declared, and also set your
GAM (DFP) Ad Unit ID
.
self.gamLeaderboard = GAMBannerView(adSize: kGADAdSizeLeaderboard)
self.gamLeaderboard.adUnitID = <YOUR GAM (DFP) AD UNIT ID HERE>
self.gamLeaderboard = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeLeaderboard];
self.gamLeaderboard.adUnitID = <YOUR GAM (DFP) AD UNIT ID HERE>;
- Register your view controller as the
gamLeaderboard
's delegate (GADBannerViewDelegate
).
self.gamLeaderboard.delegate = self
self.gamLeaderboard.delegate = self;
- Register your view controller as the
gamLeaderboard
'srootViewController
.
self.gamLeaderboard.rootViewController = self
self.gamLeaderboard.rootViewController = self;
For more information about GAM (DFP) Leaderboard integration, you can refer to the GAM (DFP) Guide as well.
Create HyBid Ad Request
- Import
HyBid
into your class.
import HyBid
#import <HyBid/HyBid.h>
- Declare a
HyBidAdRequest *leaderboardAdRequest
property.
var leaderboardAdRequest = HyBidAdRequest()
@property (nonatomic, strong) HyBidAdRequest *leaderboardAdRequest;
- Instantiate the property that you have declared. Before making a request, set its
adSize
property. After this, you can request an Ad by, passing yourAd Zone ID
and also your registered view controller as theleaderboardAdRequest
's delegate (HyBidAdRequestDelegate
).
self.leaderboardAdRequest.adSize = HyBidAdSize.size_728x90
self.leaderboardAdRequest.requestAd(with: self, withZoneID: <YOUR AD ZONE ID HERE>)
self.leaderboardAdRequest = [[HyBidAdRequest alloc] init];
self.leaderboardAdRequest.adSize = HyBidAdSize.SIZE_728x90;
[self.leaderboardAdRequest requestAdWithDelegate:self withZoneID:<YOUR AD ZONE ID HERE>];
Request Ad from GAM (DFP)
After the ad is successfully received from PubNative, the request should be made to GAM (DFP) with some parameters that will help the ad be chosen properly in the GAM (DFP) waterfall.
The HyBidHeaderBiddingUtils
must be used so that the SDK can generate the proper keywords for the received ad.
extension ViewController : HyBidAdRequestDelegate
{
func requestDidStart(_ request: HyBidAdRequest!)
{
print("Request\(request) started")
}
func request(_ request: HyBidAdRequest!, didLoadWith ad: HyBidAd!)
{
print("Request loaded with ad: \(ad)")
let request = GAMRequest()
request.customTargeting = HyBidHeaderBiddingUtils.createHeaderBiddingKeywordsDictionary(with: ad, with: TWO_DECIMAL_PLACES)
self.gamLeaderboard.load(request)
}
func request(_ request: HyBidAdRequest!, didFailWithError error: Error!)
{
print("Request\(request) failed with error: \(error.localizedDescription)")
}
}
#pragma mark - HyBidAdRequestDelegate
- (void)requestDidStart:(HyBidAdRequest *)request
{
NSLog(@"Request %@ started:",request);
}
- (void)request:(HyBidAdRequest *)request didLoadWithAd:(HyBidAd *)ad
{
NSLog(@"Request loaded with ad: %@",ad);
if (request == self.leaderboardAdRequest) {
GAMRequest *request = [GAMRequest request];
request.customTargeting = [HyBidHeaderBiddingUtils createHeaderBiddingKeywordsDictionaryWithAd:ad withKeywordMode:TWO_DECIMAL_PLACES];
[self.gamLeaderboard loadRequest:request];
}
}
- (void)request:(HyBidAdRequest *)request didFailWithError:(NSError *)error
{
NSLog(@"Request %@ failed with error: %@",request,error.localizedDescription);
}
After making this request to GAM (DFP), it will run its waterfall and if the line item targeted by our keywords gets chosen, the HyBidGAMLeaderboardCustomEvent
adapter will be called to render the ad.