如何使用AdMob中介界面?

一世执手 提交于 2019-12-09 16:49:15

1. 集成 AdMob 广告
请按照将AdMob广告集成到应用中的相同说明操作。要集成非插页式广告(横幅尺寸、页首横幅尺寸等),请遵照admob里集成KeyMob横幅式广告教程说明。要集成插页式广告(占据整个屏幕的全屏广告),请遵照admob里集成KeyMob插页式广告教程说明。

完成这些集成步骤之后,您需要执行下文介绍的一些小修改,将AdMob广告展示位置改为中介展示位置,从而展示来自多个广告网络的广告。

2. 添加广告网络适配器和SDK
现在您可以下载并向项目中添加相关广告网络的适配器和 SDK,以便投放来自这些广告网络的广告。您可以在中介网络页面上找到这些广告网络的链接。

要在Xcode中添加您下载的广告网络适配器/SDK,请右键点击您的项目,然后点击Add Files to <project>(将文件添加到 <项目>)

3.添加必需的链接器标记
现在您需要将-ObjC添加到应用目标的构建设置中的 Other Linker Flags(其他链接器标记):
1:在 Xcode 的项目导航器中,按蓝色的顶级项目图标。
2:依次点击目标和Build Settings(构建设置)标签。
3:在Other Linker Flags(其他链接器标记)下,将-ObjC同时添加至 Debug(调试 )和 Release(发布)。

4. 加入广告网络配置
您需要加入所选的广告网络要求的框架、编译器标记或链接器标记。为方便您查阅,中介网络页面中提供了相应链接,指向针对每个广告网络的具体说明。

您无需撰写额外的代码来创建每个广告网络的广告视图。AdMob Mediation SDK 会根据需要调用每个广告网络的适配器和 SDK 以创建广告。下文将介绍如何设置中介监听器,以便您收到所有广告网络的广告事件通知。

5.(可选)指定其他请求参数
您可以视需要在请求中添加用户的地理位置、性别和生日。这些不是必需的参数,但是广告网络可以使用它们投放定位更精确的广告。我们提供了用于设置生日和地理位置的方法,还提供了用于设置性别的属性。系统会将这些信息传递给所有接受这些参数的广告网络。请查看以下示例:
- (void)setBirthdayWithMonth:(NSInteger)m day:(NSInteger)d year:(NSInteger)y;

- (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude accuracy:(CGFloat)accuracyInMeters;

@property (nonatomic, assign) GADGender gender;

typedef enum {
  kGADGenderUnknown,
  kGADGenderMale,
  kGADGenderFemale
} GADGender;
一些广告网络接受用户收入或横幅广告颜色等其他参数。广告网络会逐渐在它们的中介适配器中添加对这些具体参数的支持,不过目前还无法传递针对特定广告网络的参数。

6.(可选)设置事件通知
要收到有关广告生命周期事件(例如展示)的通知,您可以实现GADBannerViewDelegate。在使用中介时,此委托会自动将您正在中介的所有广告网络的事件通知给您。例如,来自任意广告网络的展示会通过GADBannerViewDelegate的方法adViewDidReceiveAd进行报告。

7.(可选)实现自定义事件
利用自定义事件,您可以投放来自您的广告服务器的广告,或投放来自AdMob中介不支持的广告网络的广告,或者调用您选择的任何其他代码。

要创建自定义事件,请定义一个实现GADCustomEventBanner的类。
自定义事件必须在成功收到广告或无法收到广告时向GADCustomEventBannerDelegate回报。为此,您需要调用合适的委托方法(如下所示)。如果无法做到这一点,中介按序调用备用广告的功能就无法正确运行。

理想情况下,您的自定义事件还应通知委托,以报告点击次数和点击操作的结果(呈现全屏模式或退出应用)。这样一来,您的报告中将会显示点击统计信息,您设置的所有事件监听器都会正确运行。

我们会在运行时实例化您的GADCustomEventBanner,并为您设置GADCustomEventBannerDelegate,您无需自行实例化这些类。

下面是一个自定义事件示例:
@implementation MyCustomEventBanner

// Will be set by the SDK.
@synthesize delegate = delegate_;

#pragma mark -
#pragma mark GADCustomEventBanner

- (void)requestBannerAd:(GADAdSize)adSize
              parameter:(NSString *)serverParameter
                  label:(NSString *)serverLabel
request:(GADCustomEventRequest *)request {

// TODO: Use the parameters and self.delegate to make a banner request to your

// ad network. Remember to set this class to be your banner's delegate.

}

#pragma mark -
#pragma mark MyBanner Callbacks

- (void)adViewDidReceiveAd:(MyBanner *)view {
[self.delegate customEventBanner:self didReceiveAd:view];

}

- (void)adView:(MyBanner *)view
didFailToReceiveAdWithError:(NSError *)error {
[self.delegate customEventBanner:self didFailAd:error];

}

- (void)adViewWillPresentScreen:(MyBanner *)adView {
[self.delegate customEventBannerWillPresentModal:self];

}

- (void)adViewWillDismissScreen:(MyBanner *)adView {
[self.delegate customEventBannerWillDismissModal:self];

}

- (void)adViewDidDismissScreen:(MyBanner *)adView {
[self.delegate customEventBannerDidDismissModal:self];

}

- (void)adViewWillLeaveApplication:(MyBanner *)adView {
[self.delegate customEventBannerWillLeaveApplication:self];

}

@end

有关详情,请参阅GADCustomEventBanner.h和GADCustomEventBannerDelegate.h文件。
自定义事件可以调用广告请求的方法以访问年龄或性别等请求参数。有关详情,请参阅GADCustomEventRequest.h。

要创建占据整个屏幕的插页式广告自定义事件,而不是横幅广告视图中的自定义事件,请使用GADCustomEventInterstitial取代GADCustomEventBanner(有关详情,请参阅GADCustomEventInterstitial.h和GADCustomEventInterstitialDelegate.h文件)。

8. (可选)检查 adNetworkClassName的值
您可以视需要检查GADBannerView的adNetworkClassName属性,此属性可返回在调用adViewDidReceiveAd回调后提取了当前横幅广告的广告网络的广告网络类名称:
- (void)adViewDidReceiveAd:(GADBannerView *)bannerView {
NSLog(@"Banner adapter class name: %@", bannerView.adNetworkClassName);

}

同样,对于插页式广告,请在interstitialDidReceiveAd中检查GADInterstitial的adNetworkClassName属性:
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
NSLog(@"Interstitial adapter class name: %@",  interstitial.adNetworkClassName);

}

对于标准Google AdMob广告和通过中介投放的 Google AdMob 广告,adNetworkClassName会返回GADMAdapterGoogleAdMobAds。对于通过自定义事件获取的广告,该属性会返回GADMAdapterCustomEvents。

9.(可选)处理旋转和全宽横向广告
智能横幅广告仍然属于新鲜事物,因此来自其他广告网络的中介支持较为有限。不过,有几个广告网络支持“细长”的广告格式(在 iPhone 上展示的 480x32 和在 iPad 上展示的 1024x66)。对于这些广告网络,您可以在UIViewController中指定kGADAdSizeSmartBannerLandscape智能横幅广告尺寸,以便在横向模式中投放这些细长的广告尺寸。请参见以下示例代码:
1:定义 adSizeForOrientation:
// Define a common function for choosing an ad size based on the device's
// orientation.
- (GADAdSize)adSizeForOrientation:(UIInterfaceOrientation)orientation {
// Landscape.
// Only some networks support a thin landscape size
// (480x32 on iPhone or 1024x90 on iPad).

if (UIInterfaceOrientationIsLandscape(orientation)) {
     return kGADAdSizeSmartBannerLandscape;
  }
  // Portrait.
  // Most networks support banner (320x50) and Leaderboard (728x90)
  // sizes.
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    return kGADAdSizeLeaderboard;
  } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    return kGADAdSizeBanner;
  }
  // Unknown idiom.
  return kGADAdSizeBanner;

}

2:在创建广告时调用尺寸选择函数:
{
// Call the common function you've defined to choose the appropriate ad size
// at ad creation time.
GADAdSize adSize = [self adSizeForOrientation:self.interfaceOrientation];
GADBannerView *adView = [[GADBannerView alloc] initWithAdSize:adSize];
// Request ad

}

3:针对不同的屏幕方向设置广告尺寸:
// In the code of your UIViewController that handles interface rotation, set the
// appropriate ad size.

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration {
self.adView.adSize = [self adSizeForOrientation:orientation];

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!