You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native 激励插屏广告调用报错undefined is not an object 求助

问题原因

  1. 模块导入导出不匹配:你的Ads.js文件仅定义了showRewarded函数,但没有对外导出符合预期的结构,你在业务代码中导入的{ Ads }对象不存在,因此调用Ads.showRewarded时触发undefined报错。
  2. 异步函数调用不规范:showRewarded是async异步函数,你直接调用获取到的是Promise对象,而非实际的奖励结果。
  3. 广告加载逻辑的轮询实现存在隐患:while循环每1秒轮询加载状态的方式容易引发内存泄漏,也不符合Admob的事件驱动设计规范。

修复方案

第一步:修改Ads.js的导出逻辑

在Ads.js末尾补充导出代码,同时优化广告加载逻辑:

import { RewardedAd, RewardedAdEventType } from "@react-native-firebase/admob";

// 确保替换为你自己的广告单元ID
const UNIT_ID = '你的广告单元ID';

const showRewarded = async () => {
  return new Promise((resolve, reject) => {
    const rewarded = RewardedAd.createForAdRequest(UNIT_ID, {
      requestNonPersonalizedAdsOnly: false,
    });

    const eventListener = rewarded.onAdEvent((type, error, reward) => {
      if (type === RewardedAdEventType.LOADED) {
        rewarded.show();
      } else if (type === RewardedAdEventType.EARNED_REWARD) {
        eventListener(); // 移除事件监听避免内存泄漏
        resolve(true);
      } else if (type === RewardedAdEventType.CLOSED) {
        eventListener();
        resolve(false);
      } else if (error) {
        eventListener();
        console.warn(error);
        resolve(false);
      }
    });

    rewarded.load().catch(err => {
      eventListener();
      console.warn(err);
      resolve(false);
    });
  });
};

// 导出Ads对象,匹配你业务代码的导入逻辑
export const Ads = {
  showRewarded
}

如果你是把Ads.js放在components目录下的index.js里统一导出,还要确保components/index.js里有对应的导出声明:

export * from './Ads';

第二步:修改按钮点击的异步调用逻辑

把showAd改为异步函数,添加await关键字获取实际返回值:

import React from 'react';
import {
  View,
  Text,
  TouchableOpacity
} from 'react-native';
import { Ads } from '../components';

// 改为async异步函数
async function showAd() {
    // 等待广告流程执行完成
    const reward = await Ads.showRewarded();
    console.log(`The reward is ${reward}`);
}

<TouchableOpacity style={styles.item} onPress={() => showAd()}>
    <Text>观看广告</Text>
</TouchableOpacity>

内容的提问来源于stack exchange,提问作者Mohammad Miskatur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:57:03