文档

迁移到适用于 iOS 的插页式广告单元 API

通过使用广告单元 ID 加载和显示插页式广告服务,过过渡 LevelPlay 插页式 API。
阅读时间7 分钟最后更新于 25 天前

本指南介绍如何从当前实现过过渡 LevelPlay 插页式 API(使用广告单元 ID),以加载和显示插页式广告服务。

先决条件

  • 支持的最小 SDK 为 8.6.0。您可以在此处下载最新的 SDK。
  • 确保使用 LevelPlay Initialization API 初始化 SDK。
  • 在 LevelPlay 后台中找到 AdUnitID。

创建插页式广告对象

必须在收到 onInitSuccess 回调后执行插页式广告对象的创建。
该对象是可重用的实例,可以处理多个加载并在整个会话中显示。创建后,应将其用于加载和展示同一广告单元的广告服务。
对于更高级的实现,如果需要,可以创建多个插页式广告对象。
self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"];

实现委托

在代码中实现 LPMInterstitialAdDelegate 而不是 LevelPlayInterstitialDelegate,从而了解广告投放情况。 
  • 建议在加载插页式广告之前设置委托。
  • 每个插页式广告都应有自己的委托实现。
  • 委托方法在主线程上运行。
self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"];self.interstitialAd.delegate = self;#pragma mark - LPMInterstitialAdDelegate 方法- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo 报错:(NSError *)报错 {- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}

旧版

广告单元(新)

委托 LevelPlayInterstitialDelegateLPMInterstitialAdDelegate
事件didLoadWithAdInfodidLoadAdWithAdInfo
didFailToLoadWithErrordidFailToLoadAdWithAdUnitId
didOpenWithAdInfodidDisplayAdWithAdInfo
didCloseWithAdInfodidCloseAdWithAdInfo
didFailToShowWithErrordidFailToDisplayAdWithAdInfo
didClickWithAdInfodidClickAdWithAdInfo
didShowWithAdInfo-(已弃用)
-didChangeAdInfo

LevelPlay 广告信息

间隙监听器回调返回的 ISAdInfo 类已被 LPMAdInfo 替换。

加载 Interstitial Ad

要加载插页式广告,请使用 loadAd 而不是 loadInterstitial。
[self.interstitialAd loadAd];

显示插页式广告

在收到 didLoadWithAdInfo 回调后显示插页式广告,使用 **LPMInterstitialAdDelegate,**而不是 LevelPlayInterstitialDelegate。使用 showAdWithViewController 而不是 showInterstitialWithViewController。
  • 需要共享 ViewController。 
  • 如果使用放置,请在 showAd API 中通道放置/位置名称,如下文 Placements 部分所示。
  • 广告成功展示给用户后,可以通过重复加载步骤加载另一个广告。
- (void)showInterstitialAd { // 检查广告是否已准备就绪 if ([self.interstitialAd isAdReady]) { // 显示而不放置/位置 [self.interstitialAd showAdWithViewController:self placementName:nil]; }}

检查 Ad is Ready

为了避免展示失败,并确保广告可以正确展示,建议在调用 showAd API 之前使用以下 API。
isAdReady – 如果广告已成功加载且广告单元未设置上限,则返回 true,否则返回 false。
isPlacementCapped – 有效放置/位置被限制时返回 true。如果放置/位置无效或未设置上限,此 API 将返回 false。
// 检查广告是否已准备就绪并且放置/位置未设置上限if ([self.interstitialAd isAdReady] && ![LPMInterstitialAd isPlacementCapped:placementName]) { [self.interstitialAd showAdWithViewController:self placementName:placementName];}

广告位

我们支持在 LevelPlay 控制面板上设置插页的广告位节奏和上限。 
如果为插页式广告服务设置了位置,请调用 showAd 方法为指定的放置/位置提供广告。
// 检查广告是否已准备就绪并且放置/位置未设置上限if ([self.interstitialAd isAdReady] && ![LPMInterstitialAd isPlacementCapped:placementName]) { // 显示带有放置/位置的广告 [self.interstitialAd showAdWithViewController:self placementName:@"PlacementName"];}

多个广告单元插页 API

旧版

广告单元(新)

APIloadInterstitialloadAd
showInterstitialWithViewControllershowAdWithViewController
hasInterstitialisAdReady
isInterstitialCappedForPlacementisPlacementCapped

Ad Unit API 的完整实现示例

NS_ASSUME_NONNULL_BEGIN@interface InterstitialAdViewController () <LPMInterstitialAdDelegate>@property(nonatomic, strong) LPMInterstitialAd *interstitialAd;@end@implementation InterstitialAdViewController- (void)createInterstitialAd { self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"]; self.interstitialAd.delegate = self;}- (void)loadInterstitialAd { // 用于加载或重新加载广告 [self.interstitialAd loadAd];}- (void)showInterstitialAd { if ([self.interstitialAd isAdReady]) { [self.interstitialAd showAdWithViewController:self placementName:nil]; }}- (void)showInterstitialAdWithPlacementName:(NSString *)placementName { } // 检查广告是否已准备就绪并且放置/位置未设置上限 if ([self.interstitialAd isAdReady] &amp;&amp; ![LPMInterstitialAd isPlacementCapped:placementName]) { [self.interstitialAd showAdWithViewController:self placementName:placementName]; }}#pragma mark - LPMInterstitialAdDelegate 方法- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo 报错:(NSError *)报错 {- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}@endNS_ASSUME_NONNULL_END

LevelPlay Mediation 演示应用程序

Integration Demo 应用程序演示了如何在 app 中集成插页式广告单元 API。