-
Notifications
You must be signed in to change notification settings - Fork 4
HyBid Interstitial Ads
Interstitial Ads will be rendered using the HyBid SDK.
-
Ad Zone IDfrom the PubNative Publisher Dashboard
You can find a demo app with code samples for this type of integration here.
- Import
HyBidinto your class.
Swift:
import HyBidObjective-C:
#import <HyBid/HyBid.h>
#if __has_include(<HyBid/HyBid-Swift.h>)
#import <HyBid/HyBid-Swift.h>
#else
#import "HyBid-Swift.h"
#endif- Create a
HyBidInterstitialAdproperty and initialize it by passing yourAd Zone IDand also your registered view controller as theinterstitialAd's delegate (HyBidInterstitialAdDelegate).
Swift:
var interstitialAd : HyBidInterstitialAd!
self.interstitialAd = HyBidInterstitialAd(zoneID: <YOUR AD ZONE ID HERE>, andWith: self)Objective-C:
@property (nonatomic, strong) HyBidInterstitialAd *interstitialAd;
self.interstitialAd = [[HyBidInterstitialAd alloc] initWithZoneID:<YOUR AD ZONE ID HERE> andWithDelegate:self];- Use the
loadmethod to request an Ad.
Swift:
self.interstitialAd.load()Objective-C:
[self.interstitialAd load];Swift:
extension ViewController : HyBidInterstitialAdDelegate
{
func interstitialDidLoad()
{
print("Interstitial did load:")
self.interstitialAd.show()
// or alternatively you can show the interstitial ad from the specified view controller
self.interstitial.show(from: viewController)
}
func interstitialDidFailWithError(_ error: Error!)
{
print("Interstitial did fail with error: \(error.localizedDescription)")
}
func interstitialDidTrackClick()
{
print("Interstitial did track click:")
}
func interstitialDidTrackImpression()
{
print("Interstitial did track impression:")
}
func interstitialDidDismiss()
{
print("Interstitial did dismiss:")
}
}Objective-C:
#pragma mark - HyBidInterstitialAdDelegate
- (void)interstitialDidLoad
{
NSLog(@"Interstitial did load");
[self.interstitialAd show];
// or alternatively you can show the interstitial ad from the specified view controller
[self.interstitialAd showFromViewController:viewController];
}
- (void)interstitialDidFailWithError:(NSError *)error
{
NSLog(@"Interstitial did fail with error: %@",error.localizedDescription);
}
- (void)interstitialDidTrackClick
{
NSLog(@"Interstitial did track click");
}
- (void)interstitialDidTrackImpression
{
NSLog(@"Interstitial did track impression");
}
- (void)interstitialDidDismiss
{
NSLog(@"Interstitial did dismiss");
}If you don't want to show the ad right away after being loaded, you can use the
isReadyproperty that returns aBOOLstating if the ad has been loaded and is ready to be displayed.
Once the ad is loaded successfully from the server, the HyBidInterstitialAd will render it and notify when it's ready via the interstitialDidLoad callback. Any error during fetch or rendering will be received via the interstitialDidFailWithError callback.
interstitialDidTrackClick, interstitialDidTrackImpression interstitialDidDismiss and just notify of clicks, impressions and dismissal of the Interstitial. No code needs to be added there. Use those callbacks in case you want to hide the ad after click or some similar use case.
In some integration scenarios like in-app bidding, pre-caching the ad assets is not needed since there’s no guarantee that the ad will end up being displayed. For this reason the HyBid SDK provides controls to disable ad caching. This will allow you to access properties like the bid price right after the ad server has responded with a creative.
To disable the ad caching, the function:
Swift:
func isAutoCacheOnLoad(_ isAutoCacheOnLoad: Bool)Objective-C:
- (void)setIsAutoCacheOnLoad:(BOOL)isAutoCacheOnLoad;in the HyBidInterstitialAd can be used. It is enabled by default.
Swift:
var interstitialAd = HyBidInterstitialAd(zoneID: "<YOUR AD ZONE ID HERE>", andWith: self)
self.interstitialAd?.isAutoCacheOnLoad = falseObjective-C:
HyBidInterstitialAd *interstitialAd = [[HyBidInterstitialAd alloc] initWithZoneID:@”<YOUR AD ZONE ID HERE>” andWithDelegate:self];
[interstitialAd setIsAutoCacheOnLoad: NO];Once the ad has finished loading, the prepare function can be used to force a creative cache. This will ensure that the interstitial renders faster, thus creating a smoother user experience.
Swift:
func interstitialDidLoad() {
interstitialAd?.prepare()
}Objective-C:
- (void)interstitialDidLoad {
[self.interstitialAd prepare];
}You can use the show function as usual to render the ad. Even if prepare is not called, the rendering will work as well but the user might notice a small delay for video ads.