我的应用程序有一个打开奖励视频的按钮>>当第一次按下此按钮时,它会“检查您的互联网连接”,当第二次或第三次点击时,它会显示没有问题的视频
MobileAds.initialize(getActivity(), getString(R.string.VID_App_ID));
mRewardVideoAd = MobileAds.getRewardedVideoAdInstance(getActivity());
mRewardVideoAd.loadAd(getString(R.string.VID_App_Unit_ID), new AdRequest.Builder()
.addTestDevice(getString(R.string.TestDeviceID))
.build());
mRewardVideoAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
以下是使用的方法:
private void loadRewardedVideoAd() {
mRewardVideoAd.loadAd(getString(R.string.VID_App_Unit_ID), new AdRequest.Builder()
.addTestDevice(getString(R.string.TestDeviceID))
.build());
}
@OnClick(R.id.button_more_money)
public void more_money() {
if (mRewardVideoAd.isLoaded()) {
mRewardVideoAd.show();
} else
{
Toast.makeText(getActivity(), "Check your internet connection", Toast.LENGTH_LONG).show();
loadRewardedVideoAd();
}
}
@Override
public void onResume() {
mRewardVideoAd.resume(getActivity());
super.onResume();
loadRewardedVideoAd();
}
编辑:已解决 - 花了一些时间,解决方案是加载onCreate() 感谢Martin De Simone和Avi Levin
答案 0 :(得分:1)
奖励视频需要一段时间才能加载,您的代码很好,第一次按下时,视频正在加载,然后当您按下时可能已加载视频。
尝试在onAdLoaded中烘烤一些东西来检查这个
答案 1 :(得分:1)
正如Martin所说,RV广告需要一段时间才能加载。基本上,它需要下载~30秒的视频,有时需要几秒钟。
我建议使用SDK提供的RewardedVideoAdListener界面,它可以帮助您了解广告何时可以展示。此外,它还可以帮助您了解AdMob奖励视频广告的生命周期。
为了使用它,您需要执行以下阶段:
Toast
UI消息进行可视化,可以将其删除)代码:
@Override
public void onRewarded(RewardItem reward) {
Toast.makeText(this, "onRewarded! currency: " + reward.getType() + " amount: " +
reward.getAmount(), Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdLeftApplication() {
Toast.makeText(this, "onRewardedVideoAdLeftApplication",
Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdClosed() {
Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdLoaded() {
Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdOpened() {
Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoStarted() {
Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}
BTW:在通话显示之前,我建议使用isLoaded()
方法,以便AdMob准备好展示某些内容,例如:
if (mAd.isLoaded()) {
mAd.show();
}
可以在Google AdMob doc's
中找到更多信息