android - 切换 Activity 时 AdMob 奖励视频中断

标签 android android-studio admob rewardedvideoad admob-rewardedvideoad

我的应用程序由两个 Activity 组成:MainActivity 和 RoomOne,当用户按下按钮时,会显示奖励视频广告,作为奖励,用户可以访问 RoomOne Activity ,但是当用户被带到 RoomOne 时 Activity ,当他返回 MainActivity 时,他无法再次访问 RoomOne,因为奖励视频广告拒绝展示,所以情况如下:

1-用户启动应用程序。

2-用户想要访问 RoomOne,因此请按按钮。

3 奖励视频广告成功展示,广告结束后会奖励用户前往 RoomOne。

4-用户已在 RoomOne 中完成了他想做的事情,并按返回按钮返回到 MainActivity。

5-他被带到 MainActivity。

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

我试图弄清楚 Toast 和日志发生了什么情况,似乎当 AdMob 奖励视频加载到某个 Activity 中,然后用户转到另一个 Activity 并返回到原始 Activity 时,SDK 无法加载广告。我的 SDK 设置正确,并且可以正常加载奖励视频,但是当用户切换 Activity 时,它似乎会中断,但如果他保持相同的 Activity ,广告视频通常会一个接一个地显示。

我的代码:

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();
}

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

如果用户获得奖励,只需使用带有 bool 值的 Flag,然后设置 flag==true,然后使用 if (flag==true) 这样的条件,然后您就可以允许用户进行 Room Activity Like,

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

现在,当用户从房间 Activity 回来时,您必须像这样管理此标志

(我创建了用于重定向 RoomActivity 的按钮,您可以使用您的 Intent )

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();
                }
            }
        });

关于android - 切换 Activity 时 AdMob 奖励视频中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019627/

相关文章:

java - Android Studio Project的Gradle守护程序无法启动

java - 如何在 Java 而不是 XML 中以编程方式设置 View 的重力和布局重力?

android - AdMob 横幅广告未展示

android - cursor.moveToFirst() 总是返回 false

java - 任务 ':app:mergeDebugResource' 执行失败

java - 编译代码出错

android - 广告不可见。不刷新广告。屏幕关闭后

android - Android 9 (API 28) 中 ad.loadClass 中的 ClassNotFoundException

android 动态壁纸 水波纹效果

android - 约束布局需要澄清