Награда за видео AdMob прерывается при переключении деятельности - PullRequest
0 голосов
/ 25 апреля 2018

Мое приложение состоит из двух действий: MainActivity и RoomOne. Когда пользователь нажимает на кнопку, показывается видео-объявление с вознаграждением, и в качестве вознаграждения пользователь получает доступ к активности RoomOne, однако, когда пользователь попадает в RoomOneактивность, когда он возвращается к MainActivity, он не может снова перейти в RoomOne, потому что отказывается показывать видеообъявление с вознаграждением, поэтому оно выглядит так:

1-пользователь запускает приложение.

2-пользователь хочет получить доступ к RoomOne, поэтому нажмите на кнопку.

3-вознагражденное видеообъявление успешно отображается, когда оно заканчивается, и пользователь получает вознаграждение, переместив его в RoomOne.

4-Пользователь закончил то, что он хотел сделать в RoomOne, и нажмите кнопку «Назад», чтобы вернуться в MainActivity.

5 - Он переведен в MainActivity.

6 - Теперь он хочет вернуться в RoomOne, но он не может, потому что, когда он нажимает кнопку, которую не показывает объявление, теперь ему нужно перезапустить приложение, чтобы иметь возможность войти снова.

Я пытался выяснить, что происходит, wih Тосты и журналы, и кажется, что, когда в мероприятии загружается видео с вознаграждением AdMob, а затем пользователь переходит к другому занятию и возвращается к исходному действию, 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 голосов
/ 25 апреля 2018

Загрузка видео с вознаграждением за рекламу в onResume вместо onCreate:

@Override
    protected void onResume() {
        super.onResume();
        loadRewardedVideo();
}
0 голосов
/ 25 апреля 2018

Просто используйте Flag With Boolean, если пользователь получает вознаграждение, затем установите flag == true, затем используйте условие, например , если (flag == true) , тогда вы можете разрешить пользователю активировать Room Like,

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

теперь, когда пользователь вернулся из Room Activity, вы должны управлять этим флагом, как

(я создал кнопку для перенаправления 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();
                }
            }
        });
...