文档

​
​

Development

User Acquisition

Monetization

工业

LevelPlay SDK - iOS

Unity SDK

Android SDK

iOS SDK

Adobe AIR SDK

Flutter SDK

React Native SDK

LevelPlay SDK - iOS

Unity LevelPlay
​
​
iOS SDK
  • 开始使用
  • 法规和设置
  • 广告格式
    • 奖励广告服务
      • Migrate to rewarded ad unit API
    • 插页式视频
    • Banner 和 MREC
    • iOS 原生广告服务集成
  • 聚合网络
  • 测试集成
  1. 实现游戏增长
  2. Unity LevelPlay
  3. LevelPlay SDK
  4. 适用于 iOS 开发者的 LevelPlay SDK

迁移到 iOS 的奖励广告单元 API

通过初始化广告单元、设置委托和处理广告事件,在 iOS app 中实现奖励视频广告单元。
阅读时间9 分钟
最后更新于 2 天前

本指南介绍如何从 SDK 9.0.0 版本开始集成 LevelPlay API,使用广告单元 ID 作为瀑布流标识符来加载和显示奖励广告服务。
重要
使用本文中介绍的 API,而不是当前使用的集成方法(IronSource init、IronSource 加载奖励、奖励监听器)。您可以在 API 比较 部分中找到 API 替换。
高级设置和法规设置没有更改,在初始化 LevelPlay SDK 之前或之后支持这些设置和设置。

在 LevelPlay 平台中找到广告单元 ID

要加载和显示奖励广告服务,需要使用 LevelPlay 聚合平台中的广告单元 ID:
  1. 在 LevelPlay 帐户中,导航到 Setup > Ad Units。
  2. 复制奖励的广告单元 ID 并将其集成到代码中。

初始化 LevelPlay SDK

要初始化 LevelPlay SDK,请执行以下步骤:
  1. 定义完成处理程序的成功和失败。
  2. 定义要在会话中初始化的广告格式列表。这应包括要使用非多个广告单元 API 的所有广告格式。
  3. 使用 appKey、广告格式和用户 ID(如果相关)调用 LevelPlay init API。
// 使用 app 密钥创建请求构建器。添加 User ID(如果有)LPMInitRequestBuilder *requestBuilder = [[LPMInitRequestBuilder alloc] initWithAppKey:@"appKey"];[requestBuilder withUserId:@"UserId"];// 构建初始请求LPMInitRequest *initRequest = [requestBuilder 构建];// 使用准备好的请求初始化 LevelPlay[LevelPlay initWithRequest:initRequest 完成:^(LPMConfiguration *_Nullable 配置,NSError *_Nullable 报错){ 报错 { // 初始化时报错。采取必要的操作或重试 } else { // 初始化成功。现在可以加载横幅广告或执行其他任务 }}];
// 使用 app 密钥创建请求构建器。添加 User ID(如果有)let requestBuilder = LPMInitRequestBuilder(appKey:"appKey") .withUserId("UserId")// 构建初始请求let initRequest = requestBuilder.build()// 使用准备好的请求初始化 LevelPlay LevelPlay.initWith(initRequest) { config,报错 if let error = error { // 初始化时报错。采取必要的操作或重试 } else { // 初始化成功。现在可以加载广告或执行其他任务 }}

初始化结果

Success:初始化成功完成时触发。收到此指示后,您可以创建和加载广告。
报错:未成功检索配置,无法加载广告服务。建议稍后尝试并初始化 LevelPlay SDK(当互联网连接可用或故障原因得到解决时)

组件

旧版

广告单元(新)

APIIronSource.initWithAppKeyLevelPlay.initWithRequest
初始化结果onInitializationComplete完成
–error

创建奖励广告

必须在收到完成结果后才能创建奖励广告对象。
该对象是可重用的实例,可以处理多个加载并在整个会话中显示。创建后,应使用 来加载和展示同一广告单元的广告服务。
对于更高级的实现,如有必要,您可以创建多个奖励广告对象。
// 创建奖励广告self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"];
// 创建奖励广告self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId")

实现奖励委托

为创建的奖励广告单元实现 LPMRewardedAdDelegate,从而了解广告投放情况。
  • 建议在加载奖励广告之前设置监听器。
  • 每个奖励广告都应有自己的监听器实现。
  • 回调在主线程上运行。
// 创建奖励广告self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; // 实现委托self.rewardedAd.delegate = self;#pragma mark - LPMRewardedAdDelegate 方法- (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 {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo 奖励:(LPMReward *)奖励{
// 创建奖励广告self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId")// 实现委托 self.rewardedAd.setDelegate(self)// 标记:LPMRewardedAdDelegate 方法func didLoadAd(包含 adInfo:LPMAdInfo) {func didFailToLoadAd(withAdUnitId adUnitId:字符串,报错:报错) {func didChangeAdInfo(_ adInfo:LPMAdInfo) {func didDisplayAd(包含 adInfo:LPMAdInfo) {func didFailToDisplayAd(包含 adInfo:LPMAdInfo,报错:报错) {func didClickAd(包含 adInfo:LPMAdInfo) {func didCloseAd(包含 adInfo:LPMAdInfo) {func didRewardAd(包含 adInfo:LPMAdInfo,奖励:LPMReward) {

LevelPlay 奖励广告事件

didLoadAd:成功加载广告时提供。
didFailToLoadAd:在广告加载失败时提供。包含广告单元信息。
didDisplayAd:在显示广告时提供。这相当于展示。
didFailToDisplayAd:广告无法显示时提供。
didRewardAd:在广告获得奖励时提供。其中包含广告单元信息和奖励信息。
didClickAd(可选):在用户点击广告时提供。
didCloseAd:在广告关闭时提供。
didChangeAdInfo(可选):在更新广告信息时提供。加载另一个广告后可用,并且包含更高的 CPM/速率。

组件

旧版

广告单元(新)

委托LevelPlayRewardedAdDelegateLPMRewardedAdDelegate
事件onAdReadydidLoadAd
onAdLoadFaileddidFailToLoadAd
onAdOpeneddidDisplayAd
onAdCloseddidCloseAd
onAdShowFaileddidFailToDisplayAd
onAdRewardeddidRewardAd
onAdClickeddidClickAd
onAdShowSucceeded–(已弃用)
–didChangeAdInfo

加载奖励广告

收到 onInitSuccess 回调后,即可加载奖励广告。应使用 方法执行此操作:
// 加载或重新加载广告[self.rewardedAd loadAd];
// 加载或重新加载广告self.rewardedAd.loadAd()

显示奖励广告

您可以在收到 onAdLoaded 回调后使用 showAd API 展示奖励广告。 如果使用广告位,请将广告位名称作为 API 的一部分共享,如下所示。
// 显示而不放置/位置 [self.rewardedAd showAdWithViewController:self placementName:nil];// 显示与放置/位置 [self.rewardedAd showAdWithViewController:self placementName:placementName];
// 显示而不放置/位置 self.rewardedAd.showAd(viewController: self, placementName: nil)// 显示与放置/位置 self.rewardedAd.showAd(viewController: self, placementName: placementName)

检查 Ad is Ready

为了避免展示失败,并确保广告可以正确展示,建议在调用 showAd API 之前使用以下 API。
isAdReady:如果广告已成功加载且广告单元未设置上限,则返回 true,否则返回 false。
isPlacementCapped:限制有效放置/位置时返回 true。如果放置/位置无效或未设置上限,此 API 将返回 false。
// 检查广告是否已准备就绪并且放置/位置未设置上限 if ([self.rewardedAd isAdReady] && ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName];}
// 检查广告是否已准备就绪并且放置/位置未设置上限 if self.rewardedAd.isAdReady(), !LPMRewardedAd.isPlacementCapped(placementName) { self.rewardedAd.showAd(viewController: self, placementName: placementName)}
当广告成功展示给玩家时,您可以加载另一个广告,重复加载奖励广告步骤。一时间加载单个广告时,无需创建新的广告实体。

奖励用户

LevelPlay SDK 将在用户每次成功完成视频时触发 didRewardAd。
didRewardAd 和 didCloseAd 是异步的。确保设置监听器以提供奖励,即使 didRewardAd 在 didCloseAd 之后被触发也是如此。
- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo 奖励:(LPMReward *)奖励 { // 实现向用户授予奖励的逻辑 NSString *name = reward.name; NSInteger *amount = reward.amount;}
func didRewardAd(包含 adInfo:LPMAdInfo,奖励:LPMReward) {// 实现向用户授予奖励的逻辑字母名称:字符串 = reward.name 信件金额:Int = reward.amount}

多个广告单元奖励 API

旧版

广告单元(新)

类IronSourceLPMRewardedAd
APIloadRewardedVideoloadAd
showRewardedVideoshowAd
isRewardedVideoPlacementCappedisPlacementCapped
isRewardedVideoAvailableisAdReady
placement.getRewardNamereward.name
placement.getRewardAmountreward.amount

奖励广告的完整实现示例

NS_ASSUME_NONNULL_BEGIN@interface RewardedAdViewController () <LPMRewardedAdDelegate>@property(nonatomic, strong) LPMRewardedAd *rewardedAd;@end@implementation RewardedAdViewController- (void)createRewardedAd { self.rewardedAd = [[LPMRewardedAd alloc] initWithAdUnitId:@"adUnitId"]; self.rewardedAd.delegate = self;}- (void)loadRewardedAd { // 加载或重新加载广告 [self.rewardedAd loadAd];}- (void)showRewardedAd { if ([self.rewardedAd isAdReady]) { [self.rewardedAd showAdWithViewController:self placementName:NULL]; }}- (void)showRewardedAdWithPlacementName:(NSString *)placementName { } // 检查广告是否已准备就绪并且放置/位置未设置上限 if ([self.rewardedAd isAdReady] &amp;&amp; ![LPMRewardedAd isPlacementCapped:placementName]) { [self.rewardedAd showAdWithViewController:self placementName:placementName]; }}#pragma mark - LPMRewardedAdDelegate 方法- (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 {}- (void)didRewardAdWithAdInfo:(LPMAdInfo *)adInfo 奖励:(LPMReward *)奖励{@endNS_ASSUME_NONNULL_END
类 RewardedAdViewController:UIViewController、LPMRewardedAdDelegate {var rewardAd:LPMRewardedAd!func createRewardedAd() { self.rewardedAd = LPMRewardedAd(adUnitId: "adUnitId") self.rewardedAd.setDelegate(self)}func loadRewardedAd() { // 加载或重新加载广告 self.rewardedAd.loadAd()}func showRewardedAd() { if self.rewardedAd.isAdReady() { self.rewardedAd.showAd(viewController: self, placementName: nil) }}func showRewardedAd(withPlacementName placementName:字符串) { // 检查广告是否已准备就绪并且放置/位置未设置上限 if self.rewardedAd.isAdReady(), !LPMRewardedAd.isPlacementCapped(placementName) { self.rewardedAd.showAd(viewController: self, placementName: placementName) }}// MARK: LPMRewardedAdDelegate methodsfunc didLoadAd(包含 adInfo:LPMAdInfo) {func didFailToLoadAd(withAdUnitId adUnitId:字符串,报错:报错) {func didChangeAdInfo(_ adInfo:LPMAdInfo) {func didDisplayAd(包含 adInfo:LPMAdInfo) {func didFailToDisplayAd(包含 adInfo:LPMAdInfo,报错:报错) {func didClickAd(包含 adInfo:LPMAdInfo) {func didCloseAd(包含 adInfo:LPMAdInfo) {func didRewardAd(包含 adInfo:LPMAdInfo,奖励:LPMReward) {}

Copyright © 2026 Unity Technologies
法律信息隐私政策CookiesDocumentation Terms of Use请勿出售或分享我的个人信息您的隐私选择(Cookie 设置)

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属公司在美国和其他地方的商标或注册商标(此处查看更多信息)。其他名称或品牌是其各自所有者的商标。

为方便起见,一些页面是机器翻译的,可能包含不准确的内容。如有信息不一致的情况,以英文版本为准。

  • 在本页上
    • 在 LevelPlay 平台中找到广告单元 ID

    • 初始化 LevelPlay SDK

      • 初始化结果

    • 创建奖励广告

    • 实现奖励委托

      • LevelPlay 奖励广告事件

    • 加载奖励广告

    • 显示奖励广告

      • 检查 Ad is Ready

    • 奖励用户

    • 多个广告单元奖励 API

    • 奖励广告的完整实现示例


报告此页面的问题