Expo Managed应用中如何成功完成expo-facebook的基础配置
问题根因
- 当前使用的Expo 42为2021年发布的旧版本,配套的expo-facebook 12.0.3内置的Facebook SDK版本远低于Facebook官方要求的最低支持版本,因此后台触发SDK升级提示
- Expo 42版本原生层面默认不会自动配置Facebook要求的SKAdNetwork相关参数,因此会出现第二个待处理任务
- 开发阶段使用Expo Go运行时,expo-facebook的部分原生配置不会生效,只有打包为独立APK/IPA或使用自定义开发客户端后,配置才能被Facebook后台识别
- 你提供的app.json片段存在配置层级错误:所有facebook开头的配置项需要放在
expo对象内部,当前配置处于expo对象外,无法被Expo编译逻辑读取,直接导致配置不生效
解决方案
方案一:升级到高版本Expo(推荐,可长期适配Facebook最新规则)
- 将Expo版本升级至49及以上,废弃原有expo-facebook包,改用官方推荐的
react-native-fbsdk-next包,同时在app.json中配置对应的Expo插件,插件会自动完成SKAdNetwork参数注入、最新版本FB SDK引入等全量配置 - 升级完成后重新构建自定义开发客户端或者打包正式版本,安装运行后Facebook后台会自动识别到最新SDK版本,SDK升级提示将自动消失
- 插件配置完成后,SKAdNetwork相关项会自动添加到IPA的编译配置中,无需手动修改原生代码
方案二:适配当前Expo 42版本(临时可用,不推荐长期使用)
- 先修正app.json的配置层级,将所有facebook开头的配置项移动到
expo对象内部,正确格式参考如下:
{ "expo": { "<不相关配置项>": "对应值", "facebookAdvertiserIDCollectionEnabled": true, "facebookAppId": "<我方15位Facebook应用ID>", "facebookAutoInitEnabled": true, "facebookAutoLogAppEventsEnabled": true, "facebookDisplayName": "<我方含空格的3字应用显示名>", "facebookScheme": "fb<我方15位Facebook应用ID>" } }
- 手动将Facebook要求的SKAdNetwork ID列表添加到app.json的
ios.infoPlist字段下 - 不要使用Expo Go测试Facebook相关功能,必须打包为正式的IPA/APK安装到测试设备,运行至少一次触发SDK上报后,Facebook后台才会同步识别配置
验证步骤
所有配置修改完成后,打包正式版本安装到测试设备,打开应用触发一次启动事件,等待24小时左右查看Facebook后台的待处理任务状态,正常情况下两个待处理项会自动标记为完成,同时开始展示基准数据。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

