Показывать объявление с вознаграждением AdMob несколько раз в React Native - PullRequest
0 голосов
/ 22 апреля 2020

Я создал кнопку для отображения вознагражденного объявления всякий раз, когда на него нажимают. Сейчас есть две проблемы: 1. Загрузка рекламы занимает слишком много времени (я могу нажать кнопку один или два раза, прежде чем что-то случится). 2. Я хочу перезагрузить объявление сразу после его закрытия. Это работает, но приложение должно быть перезапущено.

AdMobRewardedComponent. js

  async componentDidMount() {
  await setTestDeviceIDAsync("EMULATOR");
  AdMobRewarded.setAdUnitID("ca-app-pub-3940256099942544/5224354917");

  AdMobRewarded.addEventListener("rewardedVideoDidLoad", () => {
  console.log("VideoLoaded")
  });
  AdMobRewarded.addEventListener("rewardedVideoDidFailToLoad", () =>
  console.log("FailedToLoad")
  );
  AdMobRewarded.addEventListener("rewardedVideoDidOpen", () =>
  console.log("Opened")
  );
  AdMobRewarded.addEventListener("rewardedVideoDidClose", () => {
    loadAd(request.build());
  console.log("Closed")
  });
  AdMobRewarded.addEventListener("rewardedVideoWillLeaveApplication", () =>
  console.log("LeaveApp")
  );
  AdMobRewarded.addEventListener("rewardedVideoDidStart", () =>
  console.log("Started")
  );
  AdMobRewarded.addEventListener("rewardedVideoDidRewardUser", () =>
  console.log("Rewarded"),
  );
  await AdMobRewarded.requestAdAsync();
}

componentWillUnmount() {
  AdMobRewarded.removeAllListeners();
}

_handlePress = async () => {
  await AdMobRewarded.showAdAsync();
};

render() {
  const { loadedAd } = this.state;
  return (
  <TouchableButton onPress={this._handlePress} title="Coins erhalten!" image="adButton" status="active" style={styles.adButton}/>
    );
  }
};

Есть ли способ запросить новое объявление без перезапуска всего приложения? Спасибо за каждый ответ!

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы предотвратить проблему, которую можно нажать несколько раз, вы можете использовать функцию debounce: React Native: Использование loda sh debounce

Или вы можете управлять своим откройте рекламу в своем магазине, чтобы убедиться, что вы не открываете объявление дважды, и вы можете открыть новое объявление после закрытия предыдущего объявления, например:

const {  isInterstitialAdOpen,  } = useSelector(state => state.home);

if ((!__DEV__ && !isInterstitialAdOpen)) {
                dispatch(openInterstitialAd());
                AdMobInterstitial.setAdUnitID(AdMobController.getGeneralInterstitialId());
                AdMobInterstitial.setTestDevices([AdMobInterstitial.simulatorId]);
                AdMobInterstitial.addEventListener('adClosed', () => dispatch(closeInterstitialAd()));
                AdMobInterstitial.requestAd().then(() => AdMobInterstitial.showAd()).catch((error) => {
                });
            }
...