# 间隙集成

> 通过初始化 SDK、在初始化后创建插页式广告对象以及实现监听器来处理广告事件，在 Unity 中集成插页式广告服务。

Unity LevelPlay Interstitial 是一个全屏广告单元，通常在 app 生命周期中的自然过渡点投放。

> **Note:**
>
> 本文档与 SDK 8.4.0+ 相关。

## 先决条件##prerequisites

* 确保已将 LevelPlay SDK 正确集成到应用程序中。[此处](/grow/levelplay/sdk/unity/package-integration.md)概述了集成。
* 确保使用 LevelPlay Initialization API 初始化 SDK。
* 在 LevelPlay 后台中找到 AdUnitID。

## 创建插页式广告对象##create-interstitial-ad-object

必须在收到 **OnInitSuccess** 回调后执行插页式广告对象的创建。

该对象是可重用的实例，可以处理多个加载并在整个会话中显示。创建后，应将其用于加载和展示同一广告单元的广告服务。

对于更高级的实现，如果需要，可以创建多个插页式广告对象。

您可以通过调用以下函数来创建对象：

```cs
// Create Interstitial Ad object
LevelPlayInterstitialAd interstitialAd = new LevelPlayInterstitialAd(interstitialAdUnitId);
```

> **Note:**
>
> `LevelPlayInterstitialAd` 构造函数还支持可选的 `Config` 参数：
>
> ```cs
> // Use optional Config parameter
> •	LevelPlayInterstitialAd(string adUnitId, Config config = null)
> ```
>
> 如果不需要特殊设置，可以省略 `Config` 参数，仅通道 `adUnitId`。

### 使用价格地面创建##creating-with-a-price-floor

要为广告请求设置可选的价格地面，请在创建`LevelPlayInterstitialAd`时通过 `Config` 对象进行通道（[此处](/grow/levelplay/sdk/unity/advanced-settings.md#price-floor-configuration)包含更多信息）：

```cs
// Create Interstitial Ad object with Price Floor in config.
var configBuilder = new LevelPlayInterstitialAd.Config.Builder();
configBuilder.SetBidFloor(1.0); // 最低出价（美元）
var isConfig = configBuilder.Build();

LevelPlayInterstitialAd InterstitialAd = new LevelPlayInterstitialAd(InterstitialAdUnitId, isConfig);
```

## 注册到 Interstitial 事件##register-to-interstitial-events

在代码中实现 **LevelPlayInterstitialAdListener** 以获取广告投放信息。

* 建议在加载插页式广告之前设置监听器。
* 每个插页式广告都应有自己的监听器实现。
* 回调在主线程上运行。

```cs
// Register to interstitial events
interstitialAd.OnAdLoaded += InterstitialOnAdLoadedEvent;
interstitialAd.OnAdLoadFailed += InterstitialOnAdLoadFailedEvent;
interstitialAd.OnAdDisplayed += InterstitialOnAdDisplayedEvent;
interstitialAd.OnAdDisplayFailed += InterstitialOnAdDisplayFailedEvent;
interstitialAd.OnAdClicked += InterstitialOnAdClickedEvent;
interstitialAd.OnAdClosed += InterstitialOnAdClosedEvent;
interstitialAd.OnAdInfoChanged += InterstitialOnAdInfoChangedEvent;

// Implement the events
void InterstitialOnAdLoadedEvent(LevelPlayAdInfo adInfo){}
void InterstitialOnAdLoadFailedEvent(LevelPlayAdError error){}
void InterstitialOnAdDisplayedEvent(LevelPlayAdInfo adInfo){}
void InterstitialOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error){}
void InterstitialOnAdClickedEvent(LevelPlayAdInfo adInfo){}
void InterstitialOnAdClosedEvent(LevelPlayAdInfo adInfo){}
void InterstitialOnAdInfoChangedEvent(LevelPlayAdInfo adInfo){}
```

### LevelPlay 广告信息##levelplay-ad-info

**LevelPlayAdInfo** 参数包含有关加载的广告的信息。

在[此处](/grow/levelplay/sdk/unity/levelplay-listener-adinfo-integration.md)了解有关其实现和可用字段的更多信息。

## 加载 Interstitial Ad##load-interstitial-ad

要加载插页式广告，请使用 **LoadAd**。

```cs
// Load interstitial ad
interstitialAd.LoadAd();
```

## 显示插页式广告##show-interstitial-ad

使用 **LevelPlayInterstitialAdListener** API 在收到 **OnAdLoaded** 回调后显示插页式广告。

* 如果使用放置，请在 **ShowAd** API 中通道放置/位置名称，如下文 Placements 部分所示。
* 广告成功展示给用户后，可以通过重复加载步骤加载另一个广告。 

```cs
// Show ad without placement
interstitialAd.ShowAd();
// Show ad with placement
interstitialAd.ShowAd(placementName: "placementName");
```

### 检查 Ad is Ready##check-ad-is-ready

为了避免展示失败，并确保广告可以正确展示，建议在调用 **ShowAd** API 之前使用以下 API。

**IsAdReady** – 如果广告已成功加载并且广告单元未设置上限，则返回 true，否则返回 false。

**IsPlacementCapped** – 有效放置/位置被限制时返回 true。如果放置/位置无效或未设置上限，此 API 将返回 false。

```cs
// Check that ad is ready and that the placement is not capped
if (interstitialAd.IsAdReady() && !LevelPlayInterstitialAd.IsPlacementCapped(placementName))
{
    interstitialAd.ShowAd(placementName);
}
```

### 广告位##placements

我们支持在 LevelPlay 控制面板上设置插页的[广告位](/grow/levelplay/platform/settings/placements.md)节奏和上限。 

如果为插页式广告服务设置了位置，请调用 **ShowAd** 方法为指定的放置/位置提供广告。

```cs
// Check that ad is ready and that the placement is not capped
if (interstitialAd.IsAdReady() && !LevelPlayInterstitialAd.IsPlacementCapped(placementName))
{
    interstitialAd.ShowAd(placementName);
}
```

## 插页式广告服务的完整实现示例##full-implementation-example-of-interstitial-ads

```cs
public class InterstitialAdSample {
    private LevelPlayInterstitialAd interstitialAd;;
    void CreateInterstitialAd() {
	      //Create InterstitialAd instance
        interstitialAd= new LevelPlayInterstitialAd("interstitialAdUnitId");

        //Subscribe InterstitialAd events
        interstitialAd.OnAdLoaded += InterstitialOnAdLoadedEvent;
        interstitialAd.OnAdLoadFailed += InterstitialOnAdLoadFailedEvent;
        interstitialAd.OnAdDisplayed += InterstitialOnAdDisplayedEvent;
        interstitialAd.OnAdDisplayFailed += InterstitialOnAdDisplayFailedEvent;
        interstitialAd.OnAdClicked += InterstitialOnAdClickedEvent;
        interstitialAd.OnAdClosed += InterstitialOnAdClosedEvent;
        interstitialAd.OnAdInfoChanged += InterstitialOnAdInfoChangedEvent;
    }
    void LoadInterstitialAd() {
        //Load or reload InterstitialAd 	
        interstitialAd.LoadAd();
    }
    void ShowInterstitialAd() {
	       //Show InterstitialAd, check if the ad is ready before showing
        if (interstitialAd.IsAdReady()) {
   		      interstitialAd.ShowAd();
        }
    }
  
    //Implement InterstitialAd events
    void InterstitialOnAdLoadedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) { }
    void InterstitialOnAdClickedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdDisplayedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error) { }
    void InterstitialOnAdClosedEvent(LevelPlayAdInfo adInfo) { }
    void InterstitialOnAdInfoChangedEvent(LevelPlayAdInfo adInfo) { }
}
```

## LevelPlay Mediation 演示应用程序##levelplay-mediation-demo-app

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

[下载 Unity Demo 应用程序](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

验证您与我们的[集成测试套件](/grow/levelplay/sdk/unity/integration-test-suite.md)的集成。

可以在编辑器中测试您的集成。要了解如何在 Unity 编辑器中预览模拟广告服务，请参阅[预览模拟广告服务指南](/grow/levelplay/sdk/unity/preview-mock-ads-in-editor.md)。

## 后续步骤##next-steps

请遵循我们的集成指南来集成其他插页式广告网络或配置其他广告格式：

* [添加聚合网络](/grow/levelplay/sdk/unity/mediation-networks.md)
* [奖励广告服务](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md)
* [横幅广告服务](/grow/levelplay/sdk/unity/banner-integration.md)
