为什么我没有收到连接到 Xcode 调试器的调试版本的 iOS 推送通知?

Why don't I receive iOS Push Notifications with a debug build connected to Xcode debugger?

当我使用 CI 机器构建的 TestFlight 版本测试应用程序时,设备会收到推送通知。

但是当我在 Xcode 本地重建应用程序并连接调试器时,设备没有收到任何推送通知。

为了进一步验证,我再次在本地使用 push notifications tester 进行了测试,设备确实收到了推送通知。

所以代码没有被省略,因为它是 #DEBUG 版本,因为授权和注册通过了。

我的本地构建可能缺少什么?

当您在本地调试构建应用时,您的应用将生成一个唯一的设备令牌,该令牌不会接收生产推送通知。当您使用分发配置文件构建您的应用程序时,它会生成一个在生产环境中有效的不同设备令牌。

Apple 将拒绝开发设备令牌,除非您使用 APNS 沙盒证书专门请求推送通知。

因此,如果您还没有,则必须重新完成证书创建过程,但这次是沙盒证书,请改用该证书。

最终解决方案是我们的 Houston gem 服务器需要将其 APNS 支持配置为 development 模式,而不是production 模式。