Expo 53升级后iOS生产环境推送通知失效,Expo Go中功能正常
我太懂你这种折腾的滋味了——升级Expo 53后iOS生产环境推送直接“失联”,Expo Go里却一切正常,每次打包验证都要耗半天时间,简直头大。结合我之前帮开发者排查类似问题的经验,给你几个实用的排查和解决方向:
先核对Expo 53专属的推送配置变更
Expo 53对iOS推送的配置细节做了调整,比如新增了权限描述要求,或者APNs证书的适配规则变了。你可以先检查app.json里的ios.infoPlist,确认NSUserNotificationUsageDescription和NSRemoteNotificationUsageDescription这两个权限描述都写全了,有没有符合苹果的新要求。另外,生产环境的APNs证书建议重新生成一次,大版本升级后旧证书可能会出现兼容问题。锁定
expo-notifications的配套版本
你提到升级了依赖到稳定版,但Expo的SDK和配套依赖是强绑定的,不能随便用最新稳定版,得用SDK指定的版本。比如Expo 53对应的expo-notifications应该是~0.28.11,你可以运行npx expo install expo-notifications,让Expo自动安装和SDK适配的版本,避免版本不兼容导致的推送异常。检查生产环境的推送环境配置
看看eas.json里是不是正确指定了production环境的配置,推送请求的目标是不是Expo的生产推送服务器,而不是开发服务器。另外,在代码里加几行日志,看看设备能不能正常获取到推送令牌,有没有在获取令牌时抛出错误——有时候生产环境的令牌获取失败,直接导致收不到推送。用自定义开发构建节省验证时间
每次打正式包太费时间?你可以试试Expo的自定义开发构建,用命令eas build --profile development --platform ios创建一个模拟生产环境配置的开发包,在这个包里测试推送功能,能大大减少等待打包的时间,快速验证问题。临时回退+关注官方动态
如果上面的方法都没解决,先暂时回退到Expo 52稳住业务,同时多留意Expo官方的更新日志和社区反馈,说不定这是Expo 53的已知bug,官方很快会推出修复补丁。
内容来源于stack exchange




