Testflight与Expo Go通知无法正常使用问题求助
排查Testflight推送失效但APK正常的问题
以下是针对你遇到的Testflight无法接收通知、但APK正常的问题,可逐步排查的方向:
确认APNs环境与Firebase配置匹配
Testflight使用APNs沙盒环境,而Android APK使用FCM生产环境。检查Firebase控制台中iOS应用的APNs配置:- 若使用证书,需确保上传的是包含沙盒+生产环境的双重证书,而非仅生产证书;
- 若使用APNs密钥,需确认密钥已启用“Apple Push Notification service (APNs)”权限,且关联的App ID正确覆盖Testflight对应的bundle ID。
直接验证APNs沙盒推送
跳过Firebase,直接向Testflight设备的令牌发送沙盒推送,定位问题是否出在转发环节:- 在应用中打印并获取设备的APNs令牌(注意沙盒令牌与生产令牌格式不同);
- 使用curl命令测试推送:
curl -v -d '{"aps":{"alert":"Test Notification","sound":"default"}}' \ -H "apns-topic: com.your.bundle.id" \ -H "apns-push-type: alert" \ -H "apns-expiration: 0" \ --http2 \ --cert /path/to/your/sandbox-cert.pem:your-cert-password \ https://api.sandbox.push.apple.com/3/device/YOUR_DEVICE_TOKEN
如果此测试能收到通知,说明问题出在Firebase的配置或转发逻辑;若仍收不到,需排查设备权限或Apple侧的配置。
检查EAS构建的iOS配置细节
确认eas.json及应用配置中的关键项:- 确保iOS构建的
buildConfiguration设置正确:Testflight构建可尝试设置为"buildConfiguration": "Release",同时确认distribution为"store"; - 在
app.json/app.config.js中,验证iOS的infoPlist是否包含推送权限配置:"ios": { "infoPlist": { "UIBackgroundModes": ["remote-notification"], "NSNotificationUsageDescription": "需要推送权限接收通知" } } - 确认Expo Notifications模块已正确初始化,特别是iOS端是否请求了通知权限:
Notifications.requestPermissionsAsync()。
- 确保iOS构建的
查看设备与服务端日志
- 在Testflight设备上,通过Xcode连接设备查看控制台日志,过滤关键词
APNs或应用bundle ID,查找推送接收失败的错误信息(如令牌无效、权限被拒等); - 检查Firebase控制台的云消息日志,查看推送请求的状态:若显示“已发送”但设备未收到,可能是APNs令牌与环境不匹配;若显示“失败”,根据错误码排查(如
InvalidRegistration表示令牌无效)。
- 在Testflight设备上,通过Xcode连接设备查看控制台日志,过滤关键词
确认Testflight构建的签名配置
检查EAS构建使用的Provisioning Profile是否包含推送权限(Push Notifications),且Profile对应的证书与Firebase中上传的证书一致。可通过Apple Developer Portal查看Provisioning Profile的权限详情。
内容的提问来源于stack exchange,提问作者Đorđije Lazarević
相关产品推荐
相关产品推荐

