Expo推送通知在Expo GO正常但APK(生产环境)无法使用
确认凭证包名匹配
你的应用包名是com.hyrix.myapp,在Expo凭证页面必须选择对应此包名的凭证组,Legacy(经典构建)凭证不适用于EAS构建。同时检查该凭证下的FCM服务器密钥,确保和Firebase控制台中云消息服务的服务器密钥完全一致。校验google-services.json有效性
确保google-services.json是从Firebase控制台对应com.hyrix.myapp应用下载的,打开文件确认client[0].client_info.android_client_info.package_name字段值与app.json里的android.package完全匹配。EAS构建依赖此文件配置FCM,路径或内容错误会导致配置失效。显式添加通知权限
Android 13+需要POST_NOTIFICATIONS权限,在app.json的android字段中添加权限声明:"android": { // 原有配置保留 "permissions": ["POST_NOTIFICATIONS"] }构建后首次启动App时,需在代码中请求该权限,否则无法接收通知。
检查推送消息格式
发送通知时需确保payload包含notification字段(后台也能弹出),仅data字段需App自行处理展示。示例有效payload:{ "to": "BUILD_APK_PUSH_TOKEN", "sound": "default", "title": "测试通知", "body": "推送内容", "data": { "key": "value" } }重新关联FCM密钥到EAS环境
之前用expo push:android:upload上传的密钥可能未关联到EAS构建环境,执行eas credentials命令,选择Android平台,重新配置FCM服务器密钥,确保与Firebase端一致。使用构建APK的推送令牌测试
Expo GO与自建APK的推送令牌不通用,安装构建后的APK后获取新令牌,用此令牌发送测试通知,避免用Expo GO的令牌测试。
内容的提问来源于stack exchange,提问作者Zaki Kendil

