加载多个AdMob视频

zng*_*ngb 15 java android admob rewardedvideoad

出于演示目的,该应用程序只有一个活动可以提供: 在此输入图像描述

您单击一个按钮,查看奖励视频,您将获得任何奖励.

问题

如何加载视频?从我所见,你只能打mAd.loadAd()一次电话.共有3个视频,每个视频都有自己的AD UNIT ID.每个广告单元都可以拥有自己的监听器,但只加载一个视频,因此无关紧要......

尝试加载多个视频时

例如:

mAd1.loadAd("AD_UNIT_1", new AdRequest.Builder().build());
mAd2.loadAd("AD_UNIT_2", new AdRequest.Builder().build());
mAd3.loadAd("AD_UNIT_3", new AdRequest.Builder().build());
Run Code Online (Sandbox Code Playgroud)

导致只有最后一个视频被加载,这在日志中:

W/Ads: Loading already in progress, saving this object for future refreshes.

的onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAd1 = MobileAds.getRewardedVideoAdInstance(this);
    mAd2 = MobileAds.getRewardedVideoAdInstance(this);
    mAd3 = MobileAds.getRewardedVideoAdInstance(this);

    listeners...

    mAd1.loadAd() etc
}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

编辑:很明显我在想这个问题是错的.我有5个以上的广告区域,每个区域都会播放奖励的视频,并给予不同的奖励(例如,一个给出硬币,一个给出一个等级,等等......).没有理由加载5个视频.我应该加载一个onCreate(),所以它在需要时准备就绪,然后在项目获得奖励后再次加载它,以便下次准备好.

所以问题仍然存在,如果只有一个视频,一个广告区域被加载,onCreate()那么我该如何追踪要给予的奖励?

小智 10

这是一个简单的解决方案......

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAd = MobileAds.getRewardedVideoAdInstance(this);

    mAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {

        @Override
        public void onRewarded(RewardItem rewardItem) {
            switch(Constants.currentAd) {
                case("REWARD1"):
                    //do something
                    Constants.currentAd = "";
                    break;

                case("REWARD2"):
                    //do something
                    Constants.currentAd = "";
                    break;

                case("REWARD3"):
                    //do something
                    Constants.currentAd = "";
                    break;
            }
        }
    });

   mAd.loadAd("REWARDED_VIDEO_UNIT_ID", new AdRequest.Builder().build());
}

public void showRewardedVideo() {
        if (mAd.isLoaded()) {
            mAd.show();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Constants.java

public class Constants {
    public static String currentAd = "";
}
Run Code Online (Sandbox Code Playgroud)

点击按钮后显示广告

rewardButton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Constants.currentAd = "REWARD1";
                dismiss();
                ((MainActivity) getActivity()).showRewardedVideo();
            }
        });
Run Code Online (Sandbox Code Playgroud)

REWARDED_VIDEO_UNIT_ID是AdMob中奖励视频的一个广告单元...删除其余部分.不需要其他单位,您可以在听众中跟踪您喜欢的任何内容.