如何在Expo托管应用中使用react-native-google-mobile-ads及iOS开发相关疑问
Expo托管应用集成react-native-google-mobile-ads指南
1. 是否需要eject Expo托管应用?
不需要。目前Expo支持通过Expo Config Plugins或**预构建(Prebuild)**功能集成react-native-google-mobile-ads,无需eject到裸工作流(bare workflow)。eject是旧版方案,会丢失Expo托管的便利性,官方已不推荐。
2. 若执意要eject(不推荐),Windows电脑操作步骤
Windows环境下仅能完成eject流程的基础部分,iOS原生项目仍需Mac+Xcode处理:
- 确保本地装有Node.js、Git,且Expo CLI为最新版:
npm install -g expo-cli - 进入项目根目录,执行:
expo eject - 按终端提示选择"bare workflow",等待依赖安装和原生项目文件生成
- 生成的iOS文件夹需拷贝到Mac电脑,用Xcode打开配置,Windows无法直接编译iOS项目
3. Expo托管应用集成react-native-google-mobile-ads的正确流程
前置要求
- Expo SDK版本≥44(建议用最新稳定版)
- 已安装
expo-cli或使用npx expo命令
具体操作
- 安装依赖
在项目根目录执行:
npx expo install react-native-google-mobile-ads
- 配置Expo项目文件(app.json/app.config.js)
添加Google AdMob的应用ID配置:
{ "expo": { "plugins": [ [ "react-native-google-mobile-ads", { "iosAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX", "androidAppId": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX" } ] ] } }
替换iosAppId为你在Google AdMob后台创建的iOS应用专属ID。
- 预构建本地原生项目(可选,用于本地调试)
若需在Mac的Xcode中调试iOS项目,执行预构建命令生成原生文件:
npx expo prebuild --platform ios
生成后在Mac上打开ios/[你的项目名].xcworkspace即可进行后续配置。
- 测试广告加载
在组件中引入广告组件(以横幅广告为例):
import { BannerAd, BannerAdSize, TestIds } from 'react-native-google-mobile-ads'; export default function App() { return ( <BannerAd unitId={TestIds.BANNER} size={BannerAdSize.BANNER} requestOptions={{ requestNonPersonalizedAdsOnly: true, }} /> ); }
测试阶段使用Google提供的TestIds,上线前替换为真实广告单元ID。
- 构建发布
使用Expo官方构建服务生成iOS安装包:
npx expo build:ios
或推荐使用更高效的EAS Build:
eas build --platform ios
内容的提问来源于stack exchange,提问作者sama
相关产品推荐
相关产品推荐

