Banner Ad

1. 基本要求

  • ADX iOS SDK添加到项目中。

  • 请使用为横幅广告颁发的 Ad Unit ID。

  • 在请求广告之前 SDK 初始化请先进行。

    • SDK 初始化请在应用启动时仅调用一次并且, 广告请求应在初始化完成后进行。

    • 如果支持 iOS 14 及以上, ATT(应用追踪透明性) 权限请求完成后再请求广告。

2. 实现

  1. 使用 initWithAdUnitId:adSize:rootViewController: 方法实例化 ADXAdView,并注册 ADXAdViewDelegate 回调。

    ADXAdSize
    Size (width * height)

    ADXAdSizeBanner

    320 * 50

    ADXAdSizeLargeBanner

    320 * 100

    ADXAdSizeMediumRectangle

    320 * 250

    ADXAdSizeLeaderboard

    728 * 90

  2. 设置 bannerViewframe,并将 bannerView 添加到 ViewController 中。

  3. 调用 loadAd 以加载广告。

#import <ADXLibrary/ADXAdView.h>

@interface BannerViewController () <ADXAdViewDelegate>

@property (strong) ADXAdView *bannerView;

@end

@implementation BannerViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.bannerView = [[ADXAdView alloc] 
        initWithAdUnitId:@"<ADX_BANNER_AD_UNIT_ID>"
        adSize:ADXAdSizeBanner
        rootViewController:self];

    self.bannerView.delegate = self;
    
    self.bannerView.frame = CGRectMake(
        (self.view.bounds.size.width - ADXAdSizeBanner.width) / 2,
        0,
        ADXAdSizeBanner.width,
        ADXAdSizeBanner.height);
    
    [self.view addSubview:self.bannerView];
    
    [self.bannerView loadAd];
}

#pragma mark - ADXAdViewDelegate

- (void)adViewDidLoad:(ADXAdView *)adView {
    NSLog(@"adViewDidLoad");
}

- (void)adView:(ADXAdView *)adView didFailToLoadWithError:(NSError *)error {
    NSLog(@"adView:didFailToLoadWithError: %@", error);
    
}
- (void)adViewDidClick:(ADXAdView *)adView {
    NSLog(@"adViewDidClick");
}

3. Callback

可通过设置 ADXAdViewDelegate接收特定的事件。

- (void)adViewDidLoad:(ADXAdView *)adView;
- (void)adView:(ADXAdView *)adView didFailToLoadWithError:(NSError *)error;
- (void)adViewDidClick:(ADXAdView *)adView;

4. Ad Revenue (paidEventHandler)

您可以查看广告展示的预估广告收入。

  • 如下示例所示, 使用 paidEventHandler 可以确认预估的 eCPM 值。

  • 在中介设置过程中手动设置的值与精确值混合, 建议将其用作预估值

  • eCPM 的货币单位为 USD。

  • 可以将广告收入数据与 MMP 对接。详细信息请参阅下面的 SDK 对接指南。

#import <UIKit/UIKit.h>
#import <ADXLibrary/ADXAdView.h>
#import <FirebaseAnalytics/FirebaseAnalytics.h>
#import <AppsFlyerAdRevenue/AppsFlyerAdRevenue.h>

@interface BannerViewController () <ADXAdViewDelegate>
@property (strong) ADXAdView * bannerView;
@end

@implementation BannerViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.bannerView = [[ADXAdView alloc] 
        initWithAdUnitId:@"<ADX_BANNER_AD_UNIT_ID>"
        adSize:ADXAdSizeBanner
        rootViewController:self];
                        
    self.bannerView.delegate = self;    
    
    __weak typeof(self) weakSelf = self;
    self.bannerView.paidEventHandler = ^(double eCPM) {
        __strong typeof(self) strongSelf = weakSelf;
        if(!strongSelf) { return; }
        NSNumber * revenue = [NSNumber numberWithDouble:eCPM/1000];
        [strongSelf handleAdRevenue:revenue];
    };
}

- (void)handleAdRevenue:(NSNumber *)revenue {
    // Firebase Analytics 示例
    [FIRAnalytics logEventWithName:kFIREventAdImpression
                        parameters: @{
        kFIRParameterAdPlatform: @"AD(X)",
        kFIRParameterAdFormat: @"BannerAd",
        kFIRParameterAdUnitName: @"ADX Banner Ad",
        kFIRParameterCurrency: @"USD",
        kFIRParameterValue: revenune
    }];
    
    // AppsFlyer 示例
    NSDictionary * adRevenueParams = @{
        @"AdUnitName" : @"ADX Banner Ad",
        @"AdType" : @"BannerAd",
    };
    
    AppsFlyerAdRevenue * appsFlyerAdRevenue = [AppsFlyerAdRevenue shared];
    [appsFlyerAdRevenue 
        logAdRevenueWithMonetizationNetwork:@"AD(X)"
        mediationNetwork:AppsFlyerAdRevenueMediationNetworkTypeCustom
        eventRevenue:revenune
        revenueCurrency:@"USD"
        additionalParameters:adRevenueParams];
}

#pragma mark - ADXAdViewDelegate
- (void)adViewDidLoad:(ADXAdView *)adView {}
- (void)adView:(ADXAdView *)adView didFailToLoadWithError:(NSError *)error {}
- (void)adViewDidClick:(ADXAdView *)adView {}

@end

最后更新于

这有帮助吗?