开屏接入说明

加载开屏广告示例

为便于您理解开屏广告的使用,此处通过xml配置广告位信息,在代码中设置相关监听和加载广告,示例如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <com.alibaba.sdk.android.cloudcode.SplashAdView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:cloud_code_cc_slot_id="替换为广告位ID"
        android:id="@+id/splashAdView" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:orientation="vertical">
        <!-- 这里可以放置媒体主logo信息 -->
    </LinearLayout>
</LinearLayout>

对应Activity加载代码,示例如下:

public class SplashActivity extends Activity {

    private boolean isClickAd = false;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置带广告View的布局
        setContentView(R.layout.activity_splash);

        final SplashAdView splashAdView = findViewById(R.id.splashAdView);
        // 设置广告加载监听
        splashAdView.setAdLoadListener(new AdLoadListener() {
            @Override
            public void loadSuccess() {
                LogUtil.checkPoint("广告加载成功");
            }

            @Override
            public void loadFail(String s, String s1) {
                LogUtil.checkFail(s + " " + s1);
            }
        });

        // 设置广告交互监听
        splashAdView.setAdInteractListener(new SplashAdView.SplashAdInteractListener() {
            @Override
            public void onTimeOver() {
                LogUtil.checkPoint("倒计时结束");
                goToMain();
            }

            @Override
            public void jump() {
                LogUtil.checkPoint("用户点击跳过");
                goToMain();
            }

            @Override
            public void onShowed() {
                LogUtil.checkPoint("广告曝光");
            }

            @Override
            public void onClicked() {
                LogUtil.checkPoint("广告点击");
                isClickAd = true;
            }

            @Override
            public void onAction(int i, int i1) {
                LogUtil.checkPoint("广告效果 " + i + " " + i1);
            }
        });

        // 请求加载广告
        splashAdView.loadAd();
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (isClickAd) {
            // 从广告界面返回的
            goToMain();
        }
    }

    private void goToMain() {
        // 开屏广告展示结束,跳转主界面
        startActivity(new Intent(Splash4Activity.this, SampleListActivity.class));
        finish();
    }
}

开屏广告配置

开屏广告可配置内容为:

  1. 广告位ID

  2. 广告位宽高(需要和平台创建的广告位信息一致)

  • 广告位ID配置

    • 在界面的布局文件xml中配置

          <com.alibaba.sdk.android.cloudcode.SplashAdView
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              app:cloud_code_cc_slot_id="替换为广告位ID"
              android:id="@+id/splashAdView" />

      SplashAdView的cloud_code_cc_slot_id属性用于配置广告位ID。

    • 在代码中配置

              final SplashAdView splashAdView = findViewById(R.id.splashAdView);
              // 这里配置广告位ID
              splashAdView.setAdSlot(new AdSlot.Builder().slotId("替换为广告位ID").slotType(AdSlotType.SPLASH).build());

      通过SplashAdView的setAdSlot方法配置广告位信息,参数AdSlot可以通过AdSlot.Builder构建。

开屏广告监听

广告监听主要有广告加载成功失败的监听和广告交互的监听。

        final SplashAdView splashAdView = findViewById(R.id.splashAdView);
        // 设置广告加载监听
        splashAdView.setAdLoadListener(new AdLoadListener() {
            @Override
            public void loadSuccess() {
                LogUtil.checkPoint("广告加载成功");
            }

            @Override
            public void loadFail(String code, String msg) {
                LogUtil.checkFail(code + " " + msg);
            }
        });

        // 设置广告交互监听
        splashAdView.setAdInteractListener(new SplashAdView.SplashAdInteractListener() {
            @Override
            public void onTimeOver() {
                LogUtil.checkPoint("倒计时结束");
                goToMain();
            }

            @Override
            public void jump() {
                LogUtil.checkPoint("用户点击跳过");
                goToMain();
            }

            @Override
            public void onShowed() {
                LogUtil.checkPoint("广告曝光");
            }

            @Override
            public void onClicked() {
                LogUtil.checkPoint("广告点击");
                isClickAd = true;
            }

            @Override
            public void onAction(int i, int i1) {
                LogUtil.checkPoint("广告效果 " + i + " " + i1);
            }
        });

setAdLoadListener设置加载监听,AdLoadListener定义如下:

/**
 * 广告加载的监听回调
 */
public interface AdLoadListener {
    /**
     * 加载成功,
     * 此时可以把广告View展示出来(添加到布局、隐藏改展示、或者类似插屏等需要的时候再展示)
     */
    void loadSuccess();

    /**
     * 加载失败,
     * 此时需要处理广告加载失败的情况,比如直接跳转到下一页或者保持广告view隐藏,不再展示
     * @param code 错误码
     * @param msg 错误信息
     */
    void loadFail(String code, String msg);
}

setAdInteractListener设置广告交互行为监听,可以用于处理逻辑和埋点,SplashAdInteractListener定义如下:

    /**
     * 开屏广告监听
     */
    public interface SplashAdInteractListener {
        /**
         * 倒计时结束
         * 此时需要处理跳转下一个界面的逻辑
         */
        void onTimeOver();

        /**
         * 跳过
         * 此时需要处理跳转下一个界面的逻辑
         */
        void jump();

        /**
         * 广告曝光通知回调
         */
        void onShowed();

        /**
         * 用户点击广告通知回调
         */
        void onClicked();

        /**
         * 广告操作回调,
         * 比如广告效果为点击打开落地页,则落地页加载完成会回调此接口
         */
        void onAction(int action, int event);
    }

开屏广告加载

        final SplashAdView splashAdView = findViewById(R.id.splashAdView);
        // 请求加载广告
        splashAdView.loadAd();

调用SplashAdView的loadAd方法就会开始加载广告,通过AdLoadListener回调加载结果,加载成功之后,就可以用于展示。

开屏广告展示

因为开屏广告的载体是一个View,所以可以有以下几种方式:

  1. 直接放置在布局中,并且设置为visible,当加载成功后直接展示。

  2. 直接放置在布局中,并且设置为gone或者invisible,当加载成功后改为visible

  3. 动态创建SplashAdView,当加载成功后添加到界面的某个view容器中。