您的位置:首页 > 移动开发

AdMob(app内嵌广告)插页广告

2016-11-12 21:58 253 查看



Demo in GitHub:点击打开链接


插页广告

插页式广告是叠加在应用上的全屏广告。它们通常在自然的应用转换点(如游戏关卡之间)显示。

本指南阐述如何将插页式广告集成至 Google Mobile Ads iOS 应用中。

我们提供的广告单元和示例将返回测试广告。即使您的帐户暂停或停用,测试广告也始终可用。如需了解详细信息,请查看 AdMob 政策 并深入了解无效
Activity。

点击自己的实时广告违反 AdMob 政策。在开发和测试期间,请使用测试广告。如果您确实需要在发布前呈现直播广告,请避免点击它们。如果您点击直播广告,您的 AdMob 帐户可能被暂停。


先决条件

请仔细阅读"入门指南"中的将 SDK 添加到 Xcode 项目 部分。


实用指南

您可以从 GitHub 下载插页式广告示例,并遵照相关说明将插页式广告添加到您的项目中。

OBJECTIVE-C SWIFT

您可能还需要阅读广告事件指南以充分利用插页式广告。 本指南中的部分示例使用广告事件执行更高级的插页式广告集成。


将插页式广告添加到项目

对于 
GADInterstitial
,建议您采用以下生命周期:在应用启动时预加载它,并在它准备就绪后选择合适的时机在应用中展示它。

以下代码段展示了如何创建 
GADInterstitial
 属性、初始化该属性以及并通过广告加载它。


OBJECTIVE-C


SWIFT

@import GoogleMobileAds;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];

  GADRequest *request = [GADRequest request];
  // Requests test ads on test devices.
  request.testDevices = @[@"2077ef9a63d2b398840261c8221a0c9b"];
  [self.interstitial loadRequest:request];
}


当您准备显示插页式广告时,请在尝试显示之前检查它是否已准备就绪。 以下是一个在游戏结束时展示插页式广告的示例。 该应用必须在适当的时间显式调用此方法。


OBJECTIVE-C


SWIFT

- (void)gameOver {
  if ([self.interstitial isReady]) {
    [self.interstitial presentFromRootViewController:self];
  }
  // Rest of game over logic goes here.
}



结果

以下是显示插页广告后的应用效果。




仅加载 GADInterstitial 一次

GADInterstitial
 是仅限一次性使用的对象。若要请求另一个插页式广告,您需要分配一个新的 
GADInterstitial
 对象。

分配另一个插页式广告的最佳位置是在 
GADInterstitialDelegate
 上的 
interstitialDidDismissScreen:
 方法中,以便在上一个插页式广告被清除后下一个插页式广告立即开始加载。

您甚至可以考虑将插页式广告的初始化细分到其自身的 Helper 方法中。


OBJECTIVE-C


SWIFT

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [self createAndLoadInterstitial];
}

- (GADInterstitial *)createAndLoadInterstitial {
  GADInterstitial *interstitial =
      [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
  interstitial.delegate = self;
  [interstitial loadRequest:[GADRequest request]];
  return interstitial;
}

- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
  self.interstitial = [self createAndLoadInterstitial];
}


通过在上一个插页式广告被清除后立即预加载另一个插页式广告,您的应用可以为在下一个逻辑断点再次展示插页式广告做好准备。


常见问题解答

如何优化插页式广告的用户体验?请参阅插页式广告实现指南。我收到一条消息"Cannot present interstitial.It is not ready"。此错误意味着未成功提取插页广告。要防止出现此警告,请使用
isReady
 方法检查插页式广告是否已准备好进行展示。我收到错误消息"Request Error:Will not send request because interstitial object has been used"。插页式广告是仅限一次性使用的对象。您必须分配新的插页式广告对象才能进行另一个插页式广告请求。我没有收到任何返回的广告,但收到错误响应"Request Error:No ads to show"。在创建广告单元时,请确保将广告类型指定为"插页式广告"。
插页式广告不会投放到"横幅"类型的广告单元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: