Expo推送通知在Release模式下无法正常工作
以下是针对Release模式推送失效的常见排查和修复步骤:
核对推送凭证配置
iOS要确保生产环境的APNs证书已正确上传到Expo控制台,Android需确认FCM生产服务器密钥配置无误。Dev模式用的是Expo沙箱推送服务,Release模式必须切换到生产环境凭证。可以运行expo credentials:manager查看并验证凭证状态,避免过期或配置错误。更新推送令牌
Dev模式下获取的令牌仅适用于沙箱环境,Release打包后必须重新获取生产环境令牌。不要复用Dev阶段保存的旧令牌,同时确保代码中getExpoPushTokenAsync的调用逻辑在Release模式下正常执行,没有被环境判断语句屏蔽。确认权限配置与授权
在app.json中检查权限声明:"ios": { "infoPlist": { "UIBackgroundModes": ["remote-notification"], "NSNotificationsUsageDescription": "用于接收重要消息提醒" } }, "android": { "permissions": ["POST_NOTIFICATIONS"] }Release版本是全新安装,必须在App启动时主动请求通知权限,不要依赖Dev模式已授权的状态。
检查代码中的环境限制
排查是否存在只在Dev模式下初始化推送监听的代码,比如:if (__DEV__) { Notifications.addNotificationReceivedListener(handleNotification); }这种写法会导致Release模式下无法接收通知,需移除不必要的环境判断,保证推送相关逻辑全环境生效。
验证打包发布配置
打包Release版本时使用正确命令:expo build:ios --release-channel production或expo build:android --release-channel production;如果用EAS Build,要确保profile配置为生产环境,避免混用Dev通道。测试生产环境推送
使用Expo命令行工具直接测试生产令牌:expo push:send --token <你的生产推送令牌> --message "测试生产环境推送"根据返回的错误信息定位问题,比如令牌无效、凭证错误等,针对性修复。
内容的提问来源于stack exchange,提问作者Engr.Aftab Ufaq

