切换活动时AdMob奖励视频中断

时间:2018-04-25 10:13:05

标签: android android-studio admob rewardedvideoad admob-rewardedvideoad

我的应用程序包含两项活动:MainActivity和RoomOne,当用户按下按钮时,会显示奖励视频广告,并且作为奖励,用户可以访问RoomOne活动,但是当用户被带到RoomOne时活动,当他回到MainActivity时,他无法再次访问RoomOne因为奖励视频广告拒绝展示,所以它是这样的:

1-User启动应用程序。

2 - 用户想要访问RoomOne所以按下按钮。

3-Rewarded视频广告成功展示,当广告完成后,广告会将用户带到RoomOne。

4-User已完成他想在RoomOne中做的事情,然后按后退按钮返回MainActivity。

5-He被带到MainActivity。

6 - 现在他想回到RoomOne,但他不能,因为当他按下按钮时广告没有显示,现在他需要重新启动应用才能再次进入

我试图弄清楚Toasts和日志发生了什么,似乎当一个AdMob Rewarded视频加载到一个活动中,然后用户转到另一个活动并返回到原始活动时,SDK无法加载AD。我的SDK设置正确,它会正常加载奖励视频但是当用户切换活动时它似乎会中断,但如果他保持相同的活动,则AD视频通常会依次显示。

我的代码:

public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener{

    private RewardedVideoAd mAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //Initialise Rewarded Video
    MobileAds.initialize(getApplicationContext(), "ca-app-pub-3940256099942544/5224354917");
    mAd = MobileAds.getRewardedVideoAdInstance(this);
    mAd.setRewardedVideoAdListener(this);
    loadRewardedVideo();
}

private void loadRewardedVideo(){
    if(!mAd.isLoaded()){
        mAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
    }
}

public void ButtonPressed(View v) {
    if(mAd.isLoaded()){
        mAd.show();
    }
}

@Override
public void onRewardedVideoAdLoaded() {

}

@Override
public void onRewardedVideoAdOpened() {

}

@Override
public void onRewardedVideoStarted() {

}

@Override
public void onRewardedVideoAdClosed() {
    loadRewardedVideo();
}

@Override
public void onRewarded(RewardItem rewardItem) {
    //updateBalance();
    //startTimer();
    startActivity(new Intent(MainActivity.this, RoomOne.class));
}

@Override
public void onRewardedVideoAdLeftApplication() {

}

@Override
public void onRewardedVideoAdFailedToLoad(int i) {

}

@Override
protected void onPause() {
    mAd.pause(this);
    super.onPause();
}

@Override
protected void onResume() {
    mAd.resume(this);
    super.onResume();
}

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:2)

只要使用Flag With Boolean,如果用户获得奖励然后设置flag == true,那么使用条件如 if(flag == true)那么你可以允许用户进行Room Activity Like,

@Override
public void onRewarded(RewardItem rewardItem) {
  flag=true;
    startActivity(new Intent(MainActivity.this, RoomOne.class));
}

现在,当用户从房间活动回来时你必须像

那样管理这个标志

(我创建了重定向RoomActivity的按钮,你可以使用你的意图)

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(flag==true){
                    startActivity(new Intent(MainActivity.this, RoomOne.class));
                }else {
                    Toast.makeText(MainActivity.this, "Plaese watch Video First", Toast.LENGTH_SHORT).show();
                }
            }
        });

答案 1 :(得分:1)

在onResume中加载奖励的视频广告,而不是onCreate:

@Override
    protected void onResume() {
        super.onResume();
        loadRewardedVideo();
}