AdMob 加载多个奖励视频
AdMob loading multiple rewarded videos
我在 Admob 中设置了多个广告单元,每个都是奖励视频。我的问题是我会根据观看的视频获得不同的奖励,而且我只能加载一个视频 onCreate()
例如这只会加载 AD_UNIT_3:
的视频
mAd.loadAd("AD_UNIT_1", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_2", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_3", new AdRequest.Builder().build());
当调用 onRewarded()
时,如果我无法控制要显示的视频 (AD UNIT) 并因此有多个单元的侦听器,我应该如何让侦听器奖励项目?
我现在有一个解决方案设置,可以从正确的广告单元加载正确的视频,方法是仅在我知道将要显示的视频时加载它。例如,当他们打开 "Coins" 页面时,我知道他们需要 "Coins" 视频,因此使用 "Coins" 的监听器来奖励正确的项目。
此解决方案的最大问题是广告可能需要 10 秒才能加载,当然,许多用户会点击 "Coins" 页面并尝试在几秒钟内加载广告 - 我已经添加了我当前的代码低于此无效。
我知道我的想法是错误的,因为没有其他人遇到过这个问题:) 我已经为此工作了很长时间,如果有任何见解,我将不胜感激。谢谢!
onCreate()
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
@Override
public void onRewarded(RewardItem rewardItem) {
switch(Constants.currentAd) {
case("BUST"):
Log.d("AD","BUST: onRewarded()");
reverseBust();
Constants.currentAd = "";
break;
case("SKIPTRAVEL"):
Log.d("AD","SKIPTRAVEL: onRewarded()");
skipTravel();
Constants.currentAd = "";
break;
case("REMOVEHEAT"):
Log.d("AD","REMOVEHEAT: onRewarded()");
removeHeat();
Constants.currentAd = "";
break;
case("SKIPUPGRADEDEALER"):
Log.d("AD","SKIPUPGRADEDEALER: onRewarded()");
skipUpgradeDealer();
Constants.currentAd = "";
break;
case("SKIPDEALER"):
Log.d("AD","SKIPDEALER: onRewarded()");
//skipDealer();
Constants.currentAd = "";
break;
}
}
}`
正在加载视频
public void loadRewardedVideos(String name) {
switch(name) {
case("BUST"):
Constants.currentAd="BUST";
mAd.loadAd("AD_UNIT_ID_1", new AdRequest.Builder().build());
break;
case("SKIPTRAVEL"):
Constants.currentAd="SKIPTRAVEL";
mAd.loadAd("AD_UNIT_ID_2", new AdRequest.Builder().build());
break;
case("REMOVEHEAT"):
Constants.currentAd="REMOVEHEAT";
mAd.loadAd("AD_UNIT_ID_3", new AdRequest.Builder().build());
break;
case("SKIPUPGRADEDEALER"):
Constants.currentAd="SKIPUPGRADEDEALER";
mAd.loadAd("AD_UNIT_ID_4", new AdRequest.Builder().build());
break;
case("SKIPDEALER"):
Constants.currentAd="SKIPDEALER";
mAd.loadAd("AD_UNIT_ID_5", new AdRequest.Builder().build());
break;
}
}
谢谢!
你想错了。 mAd
是实例化的,只能有一个。您只需要使用 mAd
...
的一个实例来处理功能和奖励
我在 Admob 中设置了多个广告单元,每个都是奖励视频。我的问题是我会根据观看的视频获得不同的奖励,而且我只能加载一个视频 onCreate()
例如这只会加载 AD_UNIT_3:
mAd.loadAd("AD_UNIT_1", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_2", new AdRequest.Builder().build());
mAd.loadAd("AD_UNIT_3", new AdRequest.Builder().build());
当调用 onRewarded()
时,如果我无法控制要显示的视频 (AD UNIT) 并因此有多个单元的侦听器,我应该如何让侦听器奖励项目?
我现在有一个解决方案设置,可以从正确的广告单元加载正确的视频,方法是仅在我知道将要显示的视频时加载它。例如,当他们打开 "Coins" 页面时,我知道他们需要 "Coins" 视频,因此使用 "Coins" 的监听器来奖励正确的项目。
此解决方案的最大问题是广告可能需要 10 秒才能加载,当然,许多用户会点击 "Coins" 页面并尝试在几秒钟内加载广告 - 我已经添加了我当前的代码低于此无效。
我知道我的想法是错误的,因为没有其他人遇到过这个问题:) 我已经为此工作了很长时间,如果有任何见解,我将不胜感激。谢谢!
onCreate()
mAd = MobileAds.getRewardedVideoAdInstance(this);
mAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
@Override
public void onRewarded(RewardItem rewardItem) {
switch(Constants.currentAd) {
case("BUST"):
Log.d("AD","BUST: onRewarded()");
reverseBust();
Constants.currentAd = "";
break;
case("SKIPTRAVEL"):
Log.d("AD","SKIPTRAVEL: onRewarded()");
skipTravel();
Constants.currentAd = "";
break;
case("REMOVEHEAT"):
Log.d("AD","REMOVEHEAT: onRewarded()");
removeHeat();
Constants.currentAd = "";
break;
case("SKIPUPGRADEDEALER"):
Log.d("AD","SKIPUPGRADEDEALER: onRewarded()");
skipUpgradeDealer();
Constants.currentAd = "";
break;
case("SKIPDEALER"):
Log.d("AD","SKIPDEALER: onRewarded()");
//skipDealer();
Constants.currentAd = "";
break;
}
}
}`
正在加载视频
public void loadRewardedVideos(String name) {
switch(name) {
case("BUST"):
Constants.currentAd="BUST";
mAd.loadAd("AD_UNIT_ID_1", new AdRequest.Builder().build());
break;
case("SKIPTRAVEL"):
Constants.currentAd="SKIPTRAVEL";
mAd.loadAd("AD_UNIT_ID_2", new AdRequest.Builder().build());
break;
case("REMOVEHEAT"):
Constants.currentAd="REMOVEHEAT";
mAd.loadAd("AD_UNIT_ID_3", new AdRequest.Builder().build());
break;
case("SKIPUPGRADEDEALER"):
Constants.currentAd="SKIPUPGRADEDEALER";
mAd.loadAd("AD_UNIT_ID_4", new AdRequest.Builder().build());
break;
case("SKIPDEALER"):
Constants.currentAd="SKIPDEALER";
mAd.loadAd("AD_UNIT_ID_5", new AdRequest.Builder().build());
break;
}
}
谢谢!
你想错了。 mAd
是实例化的,只能有一个。您只需要使用 mAd
...