首页 > 解决方案 > React-Native-Admob 插页式广告和奖励广告未按预期显示

问题描述

我有一个 React-Native 应用程序,它也安装了 React-Native-Admob。我可以在我的应用程序中看到一个横幅,没有任何问题。但是,我在显示插页式或奖励应用时遇到了一些麻烦。

我更喜欢展示奖励广告,所以我将从这个开始。用户可以免费将图片和信息上传到应用程序。单击报告按钮时,会打开一个模式,询问他们是否愿意免费付费。如果他们选择免费,则模式应关闭并应显示奖励应用程序。查看此内容后,应开始上传。

根据一个示例应用程序,我必须将它们放在 ComponentdidMount 中,所以我想我会将它们放在 useEffect 挂钩中;

useEffect(() => {
    AdMobRewarded.setTestDevices([AdMobRewarded.simulatorId]);
    AdMobRewarded.setAdUnitID('ca-app-pub-3940256099942544/5224354917');

    AdMobRewarded.addEventListener('rewarded', reward =>
        console.log('AdMobRewarded => rewarded', reward),
    );
    AdMobRewarded.addEventListener('adLoaded', () =>
        console.log('AdMobRewarded => adLoaded'),
    );
    AdMobRewarded.addEventListener('adFailedToLoad', error =>
        console.warn(error),
    );
    AdMobRewarded.addEventListener('adOpened', () =>
        console.log('AdMobRewarded => adOpened'),
    );
    AdMobRewarded.addEventListener('videoStarted', () =>
        console.log('AdMobRewarded => videoStarted'),
    );
    AdMobRewarded.addEventListener('adClosed', () => {
        console.log('AdMobRewarded => adClosed');
        AdMobRewarded.requestAd().catch(error => console.warn(error));
    });
    AdMobRewarded.addEventListener('adLeftApplication', () =>
        console.log('AdMobRewarded => adLeftApplication'),
    );
    AdMobRewarded.requestAd().catch(error => console.warn(error));
}, [])

因此,当单击模态中的免费按钮时,会调用 addUsingAdHandler;

const addUsingAdHandler = () => {
    setIsAddMode(false)
    console.log('Rewared video is shown')
    AdMobRewarded.showAd().catch(error => console.warn(error));

但是,当我查看此页面时,我会立即收到警告;

{"framesToPop":1, "code": "E_AD_FAILED_TO_LOAD","nativeStackIOS etc. etc.

Error: Cannot send request while another ad is being presented. Another rewarded ad may be requested after the current ad closes.
    at createErrorFromErrorData (utils.js:6)
    at RNAdMobRewarded.js:30
    at RCTDeviceEventEmitter.emit (EventEmitter.js:189)
    at MessageQueue.__callFunction (MessageQueue.js:366)
    at MessageQueue.js:106
    at MessageQueue.__guard (MessageQueue.js:314)
    at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:105)
    at RNDebuggerWorker.js:2

如果我忽略此警告并单击免费按钮,则模式按预期关闭,还会显示我的控制台日志奖励视频。然而,在日志之后错误:广告尚未准备好显示。

所以我认为这是因为我使用 Admob 的测试 ID 没有在我的帐户/应用程序上在线激活奖励广告。所以我拿了几天前激活的插页式广告。这可以在没有任何警告的情况下工作。但是,当模式关闭并且应该显示广告时,什么也没有发生。

谁能指导我让我的 Admob 与奖励合作?如果需要,我可以再次将我的代码更改为插页式广告并为您测试/显示代码。React-native-cli:2.0.1 React-native:0.59.10 React-native-admob:2.0.0-beta.6

标签: react-nativeadmobadmob-rewardedvideoad

解决方案


推荐阅读