如何在Expo构建的React Native应用中集成Facebook Ads跟踪ID
Expo构建的React Native应用集成Facebook Ads安装/启动追踪操作步骤
前置准备
- 先在Meta开发者平台创建对应应用条目,提前拿到三个核心参数:Facebook App ID、Facebook Client Token、广告事件数据集ID(即需求中提到的Facebook Ads跟踪ID)
- 确认项目Expo SDK版本在49及以上,低版本会存在expo-facebook模块兼容性问题
- 提前整理好两端基础信息:iOS端应用Bundle ID,安卓端应用包名、正式签名的密钥哈希,后续平台配置需要用到
具体操作流程
1. 安装所需依赖
直接安装Expo官方维护的适配模块,不要使用第三方社区包,避免版本不兼容问题:
npx expo install expo-facebook expo-tracking-transparency
其中expo-tracking-transparency用来处理iOS 14+系统要求的应用追踪透明度(ATT)权限申请,缺少这个配置iOS端无法正常获取IDFA,广告转化匹配会直接失效。
2. 配置Expo项目原生参数
打开项目根目录下的app.json或者app.config.js,添加对应插件配置和权限声明,参考配置如下:
{ "expo": { "plugins": [ [ "expo-facebook", { "facebookAppId": "你拿到的Facebook App ID", "facebookClientToken": "你拿到的Facebook Client Token", "facebookDisplayName": "你的应用对外显示名称", "iosAdvertiserIDCollectionEnabled": true, "androidAdvertiserIDCollectionEnabled": true, "autoLogAppEventsEnabled": true } ], [ "expo-tracking-transparency", { "userTrackingPermission": "需要获取追踪权限用于统计广告转化效果,优化广告推荐体验" } ] ], "ios": { "bundleIdentifier": "你的iOS应用Bundle ID", "infoPlist": { "NSUserTrackingUsageDescription": "需要获取追踪权限用于统计广告转化效果", "FacebookAutoLogAppEventsEnabled": true, "FacebookAdvertiserIDCollectionEnabled": true } }, "android": { "package": "你的安卓应用包名", "permissions": ["com.google.android.gms.permission.AD_ID"] } } }
配置项里的
autoLogAppEventsEnabled设为true后,Facebook SDK会自动上报应用安装、首次启动、应用激活三类核心事件,不需要额外手动写埋点逻辑。
3. 入口文件初始化SDK与权限申请
在应用根入口文件(一般是App.js/App.tsx)中,添加SDK初始化和权限申请逻辑,参考代码:
import { useEffect } from 'react'; import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency'; import * as Facebook from 'expo-facebook'; export default function App() { useEffect(() => { const initFbTrack = async () => { // 先向用户申请ATT追踪权限 const trackPerm = await requestTrackingPermissionsAsync(); // 初始化Facebook SDK await Facebook.initializeAsync({ appId: '你的Facebook App ID', clientToken: '你的Facebook Client Token', version: 'v18.0' // 对应你在Meta后台使用的Graph API版本即可 }); // 用户同意追踪后开启广告标识采集 if (trackPerm.status === 'granted') { await Facebook.setAdvertiserTrackingEnabled(true); } // 主动触发一次应用激活事件上报,补全自动上报的覆盖缺口 await Facebook.logEventAsync(Facebook.AppEvents.LogEventName.ACTIVATED_APP); }; initFbTrack(); }, []); // 保留原有应用根组件渲染逻辑 return <>{/* 你的应用页面路由等内容 */}</> }
4. 构建原生包完成平台配置
Facebook SDK是原生依赖,Expo Go环境无法运行,需要用EAS构建开发包或者正式包测试:
- 执行
eas build --profile development --platform ios,android构建开发测试包,安装到测试设备 - 回到Meta开发者平台,在应用配置页填写iOS Bundle ID、安卓包名,以及安卓签名密钥哈希,没有填对哈希的话安卓端事件会被拦截无法上报
生效验证方法
- 打开Meta事件管理器的测试事件模块,输入测试设备的广告标识(安卓为GAID,iOS为IDFA)
- 冷启动测试设备上安装的应用,查看事件管理器后台是否能收到
fb_mobile_first_open(首次启动/安装)、fb_mobile_activate_app(应用启动)两类事件,能正常收到说明追踪链路已经打通 - 可以用Meta广告后台生成的测试广告链接模拟点击,跳转应用商店后安装启动应用,验证是否能匹配到对应的广告点击来源
注意事项
- 安卓13及以上系统必须配置
com.google.android.gms.permission.AD_ID权限,否则无法获取安卓广告ID,转化匹配准确率会大幅下降 - 所有涉及Facebook SDK的配置改动属于原生层改动,必须重新构建原生包才能生效,Expo OTA热更新无法推送这类变更
- 用户拒绝ATT权限时不要强制开启追踪,否则提交App Store审核会被驳回
- 后续如果需要追踪注册、付费等其他转化事件,直接调用
Facebook.logEventAsync方法传入对应事件名和参数即可,不需要额外做配置
内容的提问来源于stack exchange,提问作者Cardoso
相关产品推荐
相关产品推荐

