Interstitial Ad
1. 基本要求
ADX iOS SDK添加到项目中。
使用为插页式广告颁发的广告单元 ID。
在请求广告之前 SDK 初始化请先进行。
SDK 初始化请在应用运行时只调用一次,并且 广告请求必须在初始化完成后进行。
如果支持 iOS 14 及以上, ATT(应用追踪透明性) 权限请求完成后再请求广告。
2. 实现
使用
initWithAdUnitId:方法实例化ADXInterstitialAd,并注册ADXInterstitialAdDelegate callback。调用 loadAd以加载广告。isLoaded确认是否有可显示的广告,showAdFromRootViewController:用于展示广告。
#import <ADXLibrary/ADXInterstitialAd.h>
@interface InterstitialViewController () <ADXInterstitialAdDelegate>
@property (strong) ADXInterstitialAd *interstitialAd;
@end
@implementation InterstitialViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.interstitialAd = [[ADXInterstitialAd alloc]
initWithAdUnitId:@"<ADX_INTERSTITIAL_AD_UNIT_ID>"];
self.interstitialAd.delegate = self;
}
- (IBAction)loadAd:(id)sender {
[self.interstitialAd loadAd];
}
- (IBAction)showAd:(id)sender {
if (self.interstitialAd.isLoaded) {
[self.interstitialAd showAdFromRootViewController:self];
}
}
#pragma mark - ADXInterstitialAdDelegate
- (void)interstitialAdDidLoad:(ADXInterstitialAd *)interstitial {
NSLog(@"interstitialAdDidLoad");
}
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd didFailToLoadWithError:(NSError *)error {
NSLog(@"interstitialAd:didFailToLoadWithError: %@", error);
}
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd didFailToShowWithError:(NSError *)error {
NSLog(@"interstitialAd:didFailToShowWithError: %@", error);
}
- (void)interstitialAdWillPresentScreen:(ADXInterstitialAd *)interstitialAd {
NSLog(@"interstitialAdWillPresentScreen");
}
- (void)interstitialAdWillDismissScreen:(ADXInterstitialAd *)interstitialAd {
NSLog(@"interstitialAdWillDismissScreen");
}
- (void)interstitialAdDidDismissScreen:(ADXInterstitialAd *)interstitialAd {
NSLog(@"interstitialAdDidDismissScreen");
}
- (void)interstitialAdDidClick:(ADXInterstitialAd *)interstitialAd {
NSLog(@"interstitialAdDidClick");
}
@endimport UIKit
import ADXLibrary
class InterstitialViewController: UIViewController {
fileprivate var interstitialAd: ADXInterstitialAd!
override func viewDidLoad() {
super.viewDidLoad()
interstitialAd = ADXInterstitialAd(adUnitId:
"<ADX_INTERSTITIAL_AD_UNIT_ID>");
interstitialAd.delegate = self
}
@IBAction func loadAd(_ sender: Any) {
interstitialAd.load()
}
@IBAction func showAd(_ sender: Any) {
if interstitialAd.isLoaded {
interstitialAd.show(fromRootViewController: self)
}
}
}
extension InterstitialViewController: ADXInterstitialAdDelegate {
func interstitialAdDidLoad(_ interstitialAd: ADXInterstitialAd) {
print("interstitialAdDidLoad")
}
func interstitialAd(_ interstitialAd: ADXInterstitialAd, didFailToLoadWithError error: Error) {
print("interstitialAd didFailToLoadWithError")
}
func interstitialAd(_ interstitialAd: ADXInterstitialAd, didFailToShowWithError error: Error) {
print("interstitialAd didFailToShowWithError")
}
func interstitialAdWillPresentScreen(_ interstitialAd: ADXInterstitialAd) {
print("interstitialAdWillPresentScreen")
}
func interstitialAdWillDismissScreen(_ interstitialAd: ADXInterstitialAd) {
print("interstitialAdWillDismissScreen")
}
func interstitialAdDidDismissScreen(_ interstitialAd: ADXInterstitialAd) {
print("interstitialAdDidDismissScreen")
}
func interstitialAdDidClick(_ interstitialAd: ADXInterstitialAd) {
print("interstitialAdDidClick")
}
}3. Callback
可通过设置 ADXInterstitialAdDelegate接收特定的事件。
- (void)interstitialAdDidLoad:(ADXInterstitialAd *)interstitialAd;
- (void)interstitialAdWillPresentScreen:(ADXInterstitialAd *)interstitialAd;
- (void)interstitialAdWillDismissScreen:(ADXInterstitialAd *)interstitialAd;
- (void)interstitialAdDidDismissScreen:(ADXInterstitialAd *)interstitialAd;
- (void)interstitialAdDidClick:(ADXInterstitialAd *)interstitialAd;
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd
didFailToLoadWithError:(NSError *)errorr;
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd
didFailToShowWithError:(NSError *)error;func func interstitialAdDidLoad(_ interstitialAd: ADXInterstitialAd)
func interstitialAdWillPresentScreen(_ interstitialAd: ADXInterstitialAd)
func interstitialAdWillDismissScreen(_ interstitialAd: ADXInterstitialAd)
func interstitialAdDidDismissScreen(_ interstitialAd: ADXInterstitialAd)
func interstitialAdDidClick(_ interstitialAd: ADXInterstitialAd)
func interstitialAd(_ interstitialAd: ADXInterstitialAd,
didFailToLoadWithError error: Error)
func interstitialAd(_ interstitialAd: ADXInterstitialAd,
didFailToShowWithError error: Error)4. Ad Revenue (paidEventHandler)
您可以查看广告展示的预估广告收入。
#import <UIKit/UIKit.h>
#import <ADXLibrary/ADXInterstitialAd.h>
#import <FirebaseAnalytics/FirebaseAnalytics.h>
#import <AppsFlyerAdRevenue/AppsFlyerAdRevenue.h>
@interface InterstitialViewController () <ADXInterstitialAdDelegate>
@property (strong) ADXInterstitialAd *interstitialAd;
@end
@implementation InterstitialViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.interstitialAd = [[ADXInterstitialAd alloc]
initWithAdUnitId:@"<ADX_INTERSTITIAL_AD_UNIT_ID>"];
self.interstitialAd.delegate = self;
__weak typeof(self) weakSelf = self;
self.interstitialAd.paidEventHandler = ^(double eCPM) {
__strong typeof(self) strongSelf = weakSelf;
if(!strongSelf) { return; }
NSNumber * revenue = [NSNumber numberWithDouble:eCPM/1000];
[strongSelf handleAdRevenue:revenue];
};
}
- (void)handleAdRevenue:(NSNumber *)revenue {
// 1) Firebase Analytics
[FIRAnalytics logEventWithName:kFIREventAdImpression parameters: @{
kFIRParameterAdPlatform: @"AD(X)",
kFIRParameterAdFormat: @"InterstitialAd",
kFIRParameterAdUnitName: @"ADX Interstitial Ad",
kFIRParameterCurrency: @"USD",
kFIRParameterValue: revenune
}];
// 2) AppsFlyer
NSDictionary * adRevenueParams = @{
@"AdUnitName" : @"ADX Interstitial Ad",
@"AdType" : @"InterstitialAd",
};
AppsFlyerAdRevenue * appsFlyerAdRevenue = [AppsFlyerAdRevenue shared];
[appsFlyerAdRevenue
logAdRevenueWithMonetizationNetwork:@"AD(X)"
mediationNetwork:AppsFlyerAdRevenueMediationNetworkTypeCustom
eventRevenue:revenune
revenueCurrency:@"USD"
additionalParameters:adRevenueParams];
}
#pragma mark - ADXInterstitialAdDelegate
- (void)interstitialAdDidLoad:(ADXInterstitialAd *)interstitial {}
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd didFailToLoadWithError:(NSError *)error {}
- (void)interstitialAd:(ADXInterstitialAd *)interstitialAd didFailToShowWithError:(NSError *)error {}
- (void)interstitialAdWillPresentScreen:(ADXInterstitialAd *)interstitialAd {}
- (void)interstitialAdWillDismissScreen:(ADXInterstitialAd *)interstitialAd {}
- (void)interstitialAdDidDismissScreen:(ADXInterstitialAd *)interstitialAd {}
- (void)interstitialAdDidClick:(ADXInterstitialAd *)interstitialAd {}
@endimport UIKit
import ADXLibrary
import FirebaseAnalytics
import AppsFlyerAdRevenue
class InterstitialViewController: UIViewController {
var interstitialAd: ADXInterstitialAd!
override func viewDidLoad() {
super.viewDidLoad()
interstitialAd = ADXInterstitialAd(adUnitId:
"<ADX_INTERSTITIAL_AD_UNIT_ID>")
interstitialAd.delegate = self
interstitialAd.paidEventHandler = { [weak self] eCPM in
let revenue:NSNumber = (eCPM / 1000) as NSNumber
self?.handleAdRevenue(revenue: revenue)
}
}
func handleAdRevenue(revenue:NSNumber) {
// 1) Firebase Analytics
Analytics.logEvent(
AnalyticsEventAdImpression,
parameters: [
AnalyticsParameterAdPlatform: "AD(X)",
AnalyticsParameterAdUnitName: "ADX Interstitial Ad",
AnalyticsParameterAdFormat: "InterstitialAd",
AnalyticsParameterValue: revenune,
AnalyticsParameterCurrency: "USD",
])
// 2) AppsFlyer
let adRevenueParams:[AnyHashable: Any] = [
"AdUnitName" : "ADX Interstitial Ad",
"AdType" : "InterstitialAd",
]
AppsFlyerAdRevenue.shared().logAdRevenue(
monetizationNetwork: "AD(X)",
mediationNetwork: .custom,
eventRevenue: revenune,
revenueCurrency: "USD",
additionalParameters: adRevenueParams)
}
}
extension InterstitialViewController: ADXInterstitialAdDelegate {
func interstitialAdDidLoad(_ interstitialAd: ADXInterstitialAd) {}
func interstitialAd(_ interstitialAd: ADXInterstitialAd, didFailToLoadWithError error: Error) {}
func interstitialAd(_ interstitialAd: ADXInterstitialAd, didFailToShowWithError error: Error) {}
func interstitialAdWillPresentScreen(_ interstitialAd: ADXInterstitialAd) {}
func interstitialAdWillDismissScreen(_ interstitialAd: ADXInterstitialAd) {}
func interstitialAdDidDismissScreen(_ interstitialAd: ADXInterstitialAd) {}
func interstitialAdDidClick(_ interstitialAd: ADXInterstitialAd) {}
}最后更新于
这有帮助吗?