在React Native中多次显示AdMob奖励广告。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在React Native中多次显示AdMob奖励广告。相关的知识,希望对你有一定的参考价值。

我已经创建了一个按钮,每当它被点击时就会显示一个奖励广告。现在有两个问题:1.加载广告需要太多时间(我可以在任何事情发生之前点击一两次按钮)。我想在广告关闭后立即重新加载广告。它可以工作,但App需要重新启动。

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

有什么方法可以在不重启整个App的情况下请求一个新的广告吗? 谢谢大家的回答

答案

为了防止按钮被多次点击的问题,你可以使用debounce功能。React Native。使用lodash 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) => {
                });
            }

以上是关于在React Native中多次显示AdMob奖励广告。的主要内容,如果未能解决你的问题,请参考以下文章

React Native Admob无法正常工作ERROR_CODE_INTERNAL_ERROR

当我在项目应用程序中安装并链接 react-native-admob 在加载时崩溃

如何在 adMobPro 中显示加载的奖励视频?

React Native 添加谷歌广告

在 React Native 中多次提示用户权限

@react-native-firebase/admob 的基本用法给出:“TypeError: (0, _admob.default) is not a function”。是不是已弃用?或为啥不起