是否在 React Native 中观看了奖励广告

我在我的 React Native 应用程序中使用 Firebase AdMob,当用户点击特殊按钮时,应该会显示一个奖励广告单元。这个按钮组件和调用广告横幅的功能是在单独的文件中实现的。因此,我的函数需要返回一个值,以显示用户是否已观看完整广告并获得奖励。但是我不知道如何在rewarded.onAdEvent事件以 . 结束后返回值type === RewardedAdEventType.EARNED_REWARD。我的函数有一个调用广告和我的按钮组件的示例:


Ads.js 片段


const showRewarded = () => {

    const rewarded = RewardedAd.createForAdRequest(UNIT_ID, {

      requestNonPersonalizedAdsOnly: false,

    });

    const eventListener = rewarded.onAdEvent((type, error, reward) => {

      if(type === RewardedAdEventType.LOADED) {

        rewarded.show();

      }

      if(type === RewardedAdEventType.EARNED_REWARD) {

        return reward;

      }

      // The reward should be null if user skiped the ad

      return null; 

    }); 

    rewarded.load();

    // Wait for event completion

  }

按钮.js


import React from 'react';

import {

  View,

  Text,

  TouchableOpacity

} from 'react-native';;

import { Ads } from '../components';


class MyButton extends React.Component {


  constructor(props) {

    super(props);

  }


  showAd() {

    // Wait while user has not been get a reward (or skiped the ad)

    const reward = Ads.showRewarded();

    console.log(`The reward is ${reward}`);

  }


  render() {


    return (

      <View>

      <TouchableOpacity onPress={() => this.showAd()}>

        <Text>Show Ad to get a reward</Text>

      </TouchableOpacity>

      </View>

    )

  }

}


export default MyButton;


阿晨1998
浏览 148回答 1
1回答

慕桂英546537

我认为有更好的解决方案,但我是setTimeout在广告单元尚未加载时使用简单的函数完成的。它看起来像这样:const showRewarded = async () => {&nbsp; &nbsp; const rewarded = RewardedAd.createForAdRequest(UNIT_ID, {&nbsp; &nbsp; &nbsp; requestNonPersonalizedAdsOnly: false&nbsp; &nbsp; });&nbsp; &nbsp; var loaded = false;&nbsp; &nbsp; var gotReward = false;&nbsp; &nbsp; const eventListener = rewarded.onAdEvent((type, error, reward) => {&nbsp; &nbsp; &nbsp; if(type === RewardedAdEventType.LOADED) {&nbsp; &nbsp; &nbsp; &nbsp; rewarded.show();&nbsp; &nbsp; &nbsp; &nbsp; loaded = true;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; else if(type === RewardedAdEventType.EARNED_REWARD) {&nbsp; &nbsp; &nbsp; &nbsp; gotReward = true;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; else if(error) {&nbsp; &nbsp; &nbsp; &nbsp; console.warn(error);&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });&nbsp;&nbsp; &nbsp; rewarded.load();&nbsp; &nbsp; while(!loaded) {&nbsp; &nbsp; &nbsp; await new Promise((resolve, reject) => setTimeout(resolve, 1000));&nbsp; &nbsp; }&nbsp; &nbsp; return gotReward;&nbsp; }此函数gotReward仅在广告关闭后返回。如果用户观看了所有广告则为真,如果他已跳过则此值为假。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript