插播广告

插屏广告是一种全屏广告格式,会在自然停顿处嵌入到应用内容中,例如当用户进入游戏下一关卡或完成转化操作时。

备注

演示项目 中提供了展示所有格式类型运作原理的示例。

实体

描述

onAdFailedToLoad

如果 onAdFailedToLoad() 返回错误,请勿尝试使用相同方法再次加载新广告。

InterstitialAdEventListener

请勿保存之前显示过的广告的链接。对之前显示的广告调用 set AddEventListener(null)。如果不再使用加载器,请为其调用 setAdLoadListener(null)。这可以释放资源并防止内存泄漏。

adUnitId

使用:

  • Development mode,用于配合演示广告单元 使用。

  • Production mode,用于配合 R-M-XXXXXX-Y 使用(实际 ID 请在 Yandex Advertising Network 界面查询)。R-M-XXXXXX-Y 是您实际广告单元 ID 的模板,将用于接收各种广告创意。

使用即用型 XML 文件创建插屏广告的示例

class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener {

    private var interstitialAd: InterstitialAd? = null
    private lateinit var interstitialAdLoader: InterstitialAdLoader
    private lateinit var binding: ActivityInterstitialAdBinding
    private val adUnitId = "demo-interstitial-yandex" // 使用 R-M-XXXXXX-Y 或演示广告单元(请参阅下方说明)
    private val config = AdRequestConfiguration.Builder(adUnitId).build()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityInterstitialAdBinding.inflate(layoutInflater)
        setContentView(binding.root)

        interstitialAdLoader = InterstitialAdLoader(this)
        binding.showBanner.isEnabled = false

        binding.loadBanner.setOnClickListener { loadAd() }
        binding.showBanner.setOnClickListener { showAd() }

        interstitialAdLoader.setAdLoadListener(object : InterstitialAdLoadListener {
            override fun onAdLoaded(ad: InterstitialAd) {
                interstitialAd = ad
                binding.showBanner.isEnabled = true
            }

            override fun onAdFailedToLoad(error: AdRequestError) {
                binding.showBanner.isEnabled = false
            }
        })
    }

    private fun loadAd() {
        binding.showBanner.isEnabled = false
        interstitialAdLoader.loadAd(config)
    }

    private fun showAd() {
        interstitialAd?.apply {
            setAdEventListener(this@InterstitialAdActivity)
            show(this@InterstitialAdActivity)
        } ?: run {
        }
    }

    override fun onDestroy() {
        interstitialAd?.setAdEventListener(null)
        interstitialAd = null
        interstitialAdLoader.setAdLoadListener(null)
        super.onDestroy()
    }

    override fun onAdClicked() {}
    override fun onAdDismissed() {
        interstitialAdLoader.loadAd(config)
    }
    override fun onAdFailedToShow(adError: AdError) {}
    override fun onAdImpression(impressionData: ImpressionData?) {}
    override fun onAdShown() {}
}
public class InterstitialAdActivity extends AppCompatActivity implements InterstitialAdEventListener {

    private InterstitialAd interstitialAd = null;
    private InterstitialAdLoader interstitialAdLoader;
    private ActivityInterstitialAdBinding binding;

    private final String adUnitId = "demo-interstitial-yandex"; // 使用 R-M-XXXXXX-Y 或演示广告单元(请参阅下方说明)
    private final AdRequestConfiguration config = new AdRequestConfiguration.Builder(adUnitId).build();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityInterstitialAdBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        interstitialAdLoader = new InterstitialAdLoader(this);
        binding.showBanner.setEnabled(false);

        binding.loadBanner.setOnClickListener(v -> loadAd());
        binding.showBanner.setOnClickListener(v -> showAd());

        interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
            @Override
            public void onAdLoaded(@Nullable InterstitialAd ad) {
                interstitialAd = ad;
                binding.showBanner.setEnabled(true);
            }

            @Override
            public void onAdFailedToLoad(@Nullable AdRequestError error) {
                binding.showBanner.setEnabled(false);
            }
        });
    }

    private void loadAd() {
        binding.showBanner.setEnabled(false);
        interstitialAdLoader.loadAd(config);
    }

    private void showAd() {
        if (interstitialAd != null) {
            interstitialAd.setAdEventListener(this);
            interstitialAd.show(this);
        }
    }

    @Override
    protected void onDestroy() {
        if (interstitialAd != null) {
            interstitialAd.setAdEventListener(null);
            interstitialAd = null;
        }
        if (interstitialAdLoader != null) {
            interstitialAdLoader.setAdLoadListener(null);
        }
        super.onDestroy();
    }
    @Override
    public void onAdClicked() {}
    @Override
    public void onAdDismissed() {
        interstitialAdLoader.loadAd(config);
    }
    @Override
    public void onAdFailedToShow(@Nullable AdError adError) {}
    @Override
    public void onAdImpression(@Nullable ImpressionData impressionData) {}
    @Override
    public void onAdShown() {}
}
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".InterstitialAdActivity">

    <Button
        android:id="@+id/loadBanner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load Banner"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent" />

    <Button
        android:id="@+id/showBanner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Banner"
        app:layout_constraintTop_toBottomOf="@id/loadBanner"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginTop="16dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

使用以编程方式生成的活动创建插屏广告的示例

class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener, InterstitialAdLoadListener {

    private lateinit var interstitialAdLoader: InterstitialAdLoader
    private var interstitialAd: InterstitialAd? = null

    private lateinit var loadButton: Button
    private lateinit var showButton: Button

    private val adUnitId = "demo-interstitial-yandex" // 使用 R-M-XXXXXX-Y 或演示广告单元(请参阅下方说明)
    val config = AdRequestConfiguration.Builder(adUnitId).build()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val rootLayout = ConstraintLayout(this).apply {
            layoutParams = LayoutParams(MATCH_PARENT, MATCH_PARENT)
        }

        loadButton = Button(this).apply {
            text = "Load Interstitial"
            id = View.generateViewId()
        }

        showButton = Button(this).apply {
            text = "Show Interstitial"
            id = View.generateViewId()
            isEnabled = false
        }

        rootLayout.addView(loadButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
            topToTop = LayoutParams.PARENT_ID
            bottomToBottom = LayoutParams.PARENT_ID
            startToStart = LayoutParams.PARENT_ID
            endToEnd = LayoutParams.PARENT_ID
        })

        rootLayout.addView(showButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
            topToBottom = loadButton.id
            startToStart = LayoutParams.PARENT_ID
            endToEnd = LayoutParams.PARENT_ID
            topMargin = 24
        })

        setContentView(rootLayout)
        interstitialAdLoader = InterstitialAdLoader(this)
        loadButton.setOnClickListener { loadAd() }
        showButton.setOnClickListener { showAd() }
        interstitialAdLoader.setAdLoadListener(this@InterstitialAdActivity)
    }

    private fun loadAd() {
        interstitialAd = null
        showButton.isEnabled = false
        interstitialAdLoader.loadAd(config)
    }

    private fun showAd() {
        interstitialAd?.apply {
            setAdEventListener(this@InterstitialAdActivity)
            show(this@InterstitialAdActivity)
        }
    }

    override fun onDestroy() {
        interstitialAd?.setAdEventListener(null)
        interstitialAd = null
        interstitialAdLoader.setAdLoadListener(null)
        super.onDestroy()
    }

    override fun onAdClicked() {}
    override fun onAdDismissed() {
        interstitialAdLoader.loadAd(config)
    }
    override fun onAdFailedToShow(adError: AdError) {}
    override fun onAdImpression(impressionData: ImpressionData?) {}
    override fun onAdShown() {}
    override fun onAdFailedToLoad(error: AdRequestError) {}
    override fun onAdLoaded(interstitialAd: InterstitialAd) {
        this.interstitialAd = interstitialAd
        showButton.isEnabled = true
    }
}
public class InterstitialAdActivity extends AppCompatActivity
        implements InterstitialAdEventListener, InterstitialAdLoadListener {

    private InterstitialAdLoader interstitialAdLoader;
    private InterstitialAd interstitialAd;

    private Button loadButton;
    private Button showButton;

    private final String adUnitId = "demo-interstitial-yandex"; // 使用 R-M-XXXXXX-Y 或演示广告单元(请参阅下方说明)
    private final AdRequestConfiguration config =
            new AdRequestConfiguration.Builder(adUnitId).build();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ConstraintLayout rootLayout = new ConstraintLayout(this);
        rootLayout.setLayoutParams(new LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        loadButton = new Button(this);
        loadButton.setText("Load Interstitial");
        loadButton.setId(View.generateViewId());

        showButton = new Button(this);
        showButton.setText("Show Interstitial");
        showButton.setId(View.generateViewId());
        showButton.setEnabled(false);

        LayoutParams loadBtnParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        loadBtnParams.topToTop = LayoutParams.PARENT_ID;
        loadBtnParams.bottomToBottom = LayoutParams.PARENT_ID;
        loadBtnParams.startToStart = LayoutParams.PARENT_ID;
        loadBtnParams.endToEnd = LayoutParams.PARENT_ID;
        rootLayout.addView(loadButton, loadBtnParams);

        LayoutParams showBtnParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        showBtnParams.topToBottom = loadButton.getId();
        showBtnParams.startToStart = LayoutParams.PARENT_ID;
        showBtnParams.endToEnd = LayoutParams.PARENT_ID;
        showBtnParams.topMargin = 24;
        rootLayout.addView(showButton, showBtnParams);

        setContentView(rootLayout);

        interstitialAdLoader = new InterstitialAdLoader(this);
        interstitialAdLoader.setAdLoadListener(this);

        loadButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loadAd();
            }
        });

        showButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showAd();
            }
        });
    }

    private void loadAd() {
        interstitialAd = null;
        showButton.setEnabled(false);
        interstitialAdLoader.loadAd(config);
    }

    private void showAd() {
        if (interstitialAd != null) {
            interstitialAd.setAdEventListener(this);
            interstitialAd.show(this);
        }
    }

    @Override
    protected void onDestroy() {
        if (interstitialAd != null) {
            interstitialAd.setAdEventListener(null);
            interstitialAd = null;
        }
        if (interstitialAdLoader != null) {
            interstitialAdLoader.setAdLoadListener(null);
        }
        super.onDestroy();
    }
    @Override
    public void onAdClicked() {}
    @Override
    public void onAdDismissed() {
        // 可选重新加载
        interstitialAdLoader.loadAd(config);
    }
    @Override
    public void onAdFailedToShow(@Nullable AdError adError) {}
    @Override
    public void onAdImpression(@Nullable ImpressionData impressionData) {}
    @Override
    public void onAdShown() {}
    @Override
    public void onAdFailedToLoad(@Nullable AdRequestError error) {}
    @Override
    public void onAdLoaded(InterstitialAd interstitialAd) {
        this.interstitialAd = interstitialAd;
        showButton.setEnabled(true);
    }
}

检查集成

创建并运行您的项目。您可以通过在 Logcat 中搜索 YandexAds 关键字来检查集成是否成功:

[Integration] Ad type interstitial was integrated successfully