迁移到适用于 iOS 的插页式广告单元 API
通过使用广告单元 ID 加载和显示插页式广告服务,过过渡 LevelPlay 插页式 API。
阅读时间7 分钟最后更新于 2 天前
本指南介绍如何从当前实现过过渡 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 {}
旧版 | 广告单元(新) | |
|---|---|---|
| 委托 | LevelPlayInterstitialDelegate | LPMInterstitialAdDelegate |
| 事件 | didLoadWithAdInfo | didLoadAdWithAdInfo |
| didFailToLoadWithError | didFailToLoadAdWithAdUnitId | |
| didOpenWithAdInfo | didDisplayAdWithAdInfo | |
| didCloseWithAdInfo | didCloseAdWithAdInfo | |
| didFailToShowWithError | didFailToDisplayAdWithAdInfo | |
| didClickWithAdInfo | didClickAdWithAdInfo | |
| 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
旧版 | 广告单元(新) | |
|---|---|---|
| API | loadInterstitial | loadAd |
| showInterstitialWithViewController | showAdWithViewController | |
| hasInterstitial | isAdReady | |
| isInterstitialCappedForPlacement | isPlacementCapped |
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] && ![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。