React Native iOS TestFlight版本无法接收AWS Pinpoint推送通知
排查TestFlight推送接收问题的步骤
1. 确认APNs证书与TestFlight环境的匹配性
- TestFlight属于Apple的Sandbox推送环境,务必确认AWS Pinpoint中对应TestFlight版本的应用,配置的是Sandbox APNs证书,而非Production证书。即使已上传两类证书,也要检查Pinpoint通道配置是否和TestFlight环境对应,同时验证证书有效期、是否包含TestFlight应用的Bundle ID,以及是否存在Apple后台重新生成证书但未同步到Pinpoint的情况。
- 登录Apple开发者后台的「Certificates, Identifiers & Profiles」,确认对应App ID的Sandbox推送服务已启用。
2. 验证Pinpoint终端节点的环境标识
- 查看Pinpoint中TestFlight用户的终端节点信息,确认
ChannelType为APNS_SANDBOX而非APNS。若终端节点标记为APNS,说明SDK注册时用了生产环境配置,导致TestFlight设备无法接收Sandbox推送。 - 检查终端节点的
EndpointStatus是否为ACTIVE,若为INACTIVE,大概率是推送令牌无效或证书不匹配导致。
3. 核对React Native推送SDK的环境配置
- 确保TestFlight构建时,SDK正确切换到Sandbox环境。以
@react-native-community/push-notification-ios为例,注册APNs时需根据构建环境传入正确参数:import PushNotificationIOS from '@react-native-community/push-notification-ios'; // 根据实际构建逻辑判断是否为Sandbox环境(TestFlight属于Sandbox) const isSandbox = __DEV__ || process.env.BUILD_ENV === 'testflight'; PushNotificationIOS.requestPermissions().then(() => { PushNotificationIOS.getDeviceToken(isSandbox); }); - 检查
aws-exports.js中的pushNotification配置,TestFlight环境下需指定platform为APNS_SANDBOX。
4. 手动测试APNs推送连通性
- 使用
apns-cli工具手动向TestFlight设备的令牌发送Sandbox推送,验证基础连通性:
若手动推送成功,问题出在Pinpoint配置或SDK集成;若失败,重点排查证书、令牌、Bundle ID的匹配性。apns-cli send \ --cert path/to/sandbox-cert.pem \ --key path/to/sandbox-key.pem \ --token <device-token> \ --topic <bundle-id> \ --alert "Test Push" \ --sandbox
5. 查看Pinpoint推送日志
- 进入AWS Pinpoint控制台,查看推送活动(Campaigns/Journeys)的失败记录,定位具体错误原因(如
InvalidToken、DeviceNotRegistered)。 - 开启Pinpoint的CloudWatch日志,查看推送请求的详细错误信息,进一步缩小问题范围。
6. 检查应用端推送状态
- 在TestFlight设备上,确认应用已开启通知权限:进入「设置 > 你的应用 > 通知」,检查权限开关及通知样式配置。
- 在应用代码中添加日志,确认推送令牌是否成功获取并上传到Pinpoint,比如在
register事件回调中打印令牌:PushNotificationIOS.addEventListener('register', (token) => { console.log('Device Token:', token); // 确认此处是否成功将令牌上传至Pinpoint });
内容的提问来源于stack exchange,提问作者charithreddyv
相关产品推荐
相关产品推荐

