iOS TestFlight构建的Expo通知点击后打开Expo GO而非应用的问题求助
解决方案:点击推送通知直接打开TestFlight安装的Expo应用
核心问题原因
使用Expo HTTP/2 API发送推送时,若未正确指定应用Bundle Identifier和APNs环境,推送会默认关联Expo GO的标识,导致点击通知跳转至Expo GO。
具体修复步骤
1. 推送请求中添加正确的apns配置
向Expo HTTP/2 API发送POST请求时,必须在message字段下添加apns对象,明确指定以下关键参数:
bundleId: 你的应用在Apple Developer后台注册的Bundle Identifier(例如com.yourcompany.yourapp)environment: TestFlight环境需填"production"(TestFlight属于生产沙盒环境,不能设为development)
示例请求体结构:
{ "to": "EXPO_PRODUCTION_PUSH_TOKEN", "message": { "title": "通知标题", "body": "通知内容", "apns": { "payload": { "aps": { "category": "default" } }, "bundleId": "com.yourcompany.yourapp", "environment": "production" } } }
2. 验证项目配置文件一致性
检查app.json或app.config.js中的ios.bundleIdentifier是否与Apple后台完全一致,同时确保ios.buildNumber和version与TestFlight提交的版本匹配:
{ "expo": { "ios": { "bundleIdentifier": "com.yourcompany.yourapp", "buildNumber": "1.0.0", "version": "1.0.0" } } }
3. 确认APNs密钥配置
- Apple Developer后台生成的APNs密钥,必须关联你的应用Bundle Identifier,且权限包含推送通知
- 已在Expo Dashboard项目设置中正确配置该APNs密钥
4. 使用生产环境推送令牌
确保推送请求中使用的是TestFlight安装应用后获取到的生产环境推送令牌,而非Expo GO中获取的开发令牌,两类令牌格式不同,不可混用。
关键注意事项
- 绝不能省略
apns.bundleId和apns.environment,这两个参数是将通知关联到你的应用而非Expo GO的核心 - TestFlight环境属于Apple生产沙盒,
environment必须设为"production",否则会导致通知送达失败或跳转错误
内容的提问来源于stack exchange,提问作者Christian Molinari
相关产品推荐
相关产品推荐

