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

使用@react-native-firebase/admob时激励广告结束后能否上层展示Alert或自定义View

技术解答

是可以实现该需求的,核心需要注意触发时机和窗口层级的配置:

  • 优先确保弹窗/自定义View的触发时机为激励广告完全销毁关闭后,需监听@react-native-firebase/admob提供的onAdDismissedFullScreenContent(对应v11以下版本为RewardedAdEventType.DISMISSED)事件回调,不要在onUserEarnedReward回调中直接触发UI操作:此时广告的Activity还未完全销毁,直接触发弹窗会被广告层覆盖,或出现窗口异常问题。
  • 若使用React Native自带的Alert组件无需额外配置,在上述正确的回调中触发即可正常展示在应用最上层。
  • 若需展示Android原生Alert或自定义View:
    • 原生Alert默认窗口层级已足够覆盖普通应用窗口,只要当前应用处于前台即可正常展示
    • 若为应用内使用的自定义View,直接挂载到当前活跃Activity的根布局即可,无需额外申请权限;如果需要全局悬浮展示,才需要申请SYSTEM_ALERT_WINDOW悬浮窗权限。
  • 额外适配注意:部分国产Android定制ROM会默认关闭应用的弹窗权限,出现无法展示的情况时可以引导用户检查应用的弹窗权限是否开启。

参考代码示例

import { Alert } from 'react-native';
import { RewardedAd, RewardedAdEventType, TestIds } from '@react-native-firebase/admob';

// 初始化激励广告实例
const rewardedAd = RewardedAd.createForAdRequest(TestIds.REWARDED, {
  requestNonPersonalizedAdsOnly: true,
});

// 绑定广告事件监听
rewardedAd.onAdEvent((type, error, reward) => {
  // 处理奖励发放逻辑,不做UI操作
  if (type === RewardedAdEventType.EARNED_REWARD) {
    console.log('用户已获得奖励', reward);
  }
  // 广告完全关闭后再触发UI展示
  if (type === RewardedAdEventType.DISMISSED) {
    Alert.alert('提示', '您已成功领取观看广告的奖励');
    // 如需调用原生端展示自定义View,可在此处触发原生模块方法
  }
});

内容的提问来源于stack exchange,提问作者Vadim Bondarenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:06:06