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

来源:互联网 发布:不喝牛奶 知乎 编辑:程序博客网 时间:2024/04/30 15:11

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"。
在创建广告单元时,请确保将广告类型指定为"插页式广告"。 插页式广告不会投放到"横幅"类型的广告单元。
0 0