在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) => {
                });
            }

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何在我的heroku账户中列出所有免费测功机?

2022-5-12 11:00:18

解决方案

Django Apache配置静态文件

2022-5-12 12:00:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索