Google Play RTDN仅接收测试通知,正式内购无推送问题求助
检查Pub/Sub服务账号权限
测试通知能正常发送,但实际购买的推送需要Google Play的关联服务账号拥有pubsub.topics.publish权限。去Google Cloud控制台,找到绑定Google Play的服务账号,确认它被赋予了Pub/Sub Publisher角色,或者包含该权限的自定义角色。确认IAP产品的实时通知开关
登录Google Play控制台,进入对应IAP产品的详情页,检查「Real-time developer notifications」是否处于开启状态。全局配置Topic后,单个产品可能未同步开启该选项,尤其是新上架的产品容易遗漏。验证Unity IAP的购买确认流程
在Unity的ProcessPurchase回调中,必须确保调用ConfirmPendingPurchase来标记购买完成。如果购买处于Pending状态(比如用户付款后还未同步到Google Play),Google不会触发推送通知。另外,确认购买流程中没有跳过任何Google Play要求的确认步骤。区分生产与测试环境的配置
检查Pub/Sub Topic是否绑定到正式生产环境的应用版本,而非内部测试/封闭测试版本。如果用户使用测试账号购买测试产品,而测试环境未配置对应Topic,也会收不到推送。排查服务器接收逻辑的过滤规则
测试通知的格式相对简单,实际购买推送的消息结构包含更多字段。检查服务器是否因签名验证失败、字段缺失或请求头不符合预期而丢弃了请求。建议在服务器端添加全量日志,记录所有收到的Pub/Sub请求,包括验证失败的请求,确认是否有请求被遗漏。检查Pub/Sub订阅者的Ack机制
如果服务器收到消息但未在超时时间内发送Ack,Pub/Sub会将消息重新推送,但如果持续未处理,消息可能进入死信队列。可以查看订阅者的死信队列是否有积压的消息,同时调整Ack超时时间适配服务器处理速度。考虑推送延迟的可能性
生产环境下,Google Play的实时推送偶尔会有几分钟延迟,尤其是首次购买场景。建议用户完成购买后等待5-10分钟再检查服务器日志,排除延迟导致的误判。
内容的提问来源于stack exchange,提问作者BitQuestions

