Apple 推送通知服务故障排除

Troubleshooting Apple Push Notification Services

我的推送通知大约在一个月前就开始工作了。我正在从事生产推送通知工作。由于其他约定,我有一段时间没有从事我的项目,当我回来时,我无法再发送推送通知。

创建链接到我的生产 sns 的日志后,我注意到了这一点:

"delivery": { "deliveryId": "d3675e8a-45b0-58db-9b79-11e284987bbb", "destination": "arn:aws:sns:us-east-1:445291524102:endpoint/APNS/BusyTime/587673f1-cf48-3b3e-9e74-04d39f8affc3", "providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)", "dwellTimeMs": 319, "attempts": 1, "token": "55d7b18b064eecad93fb666818651d4f33b612487ee810b092f081cef41d4e43", "statusCode": 8 },

调查此事后,我开始尝试检查我的凭据,看看我是否可以进入服务器。

我尝试使用 apple 文档,这让我得到了这个命令:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert BusyTimeProductionKey.pem -debug -showcerts -CAfile ProductionAPS.pem

不久前我使用 Raywenderlich.com 教程设置它并使用此命令再次检查它:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ProductionAPS.pem -key BusyTimeProductionKey.pem

两者都吐出大量输出并给了我这行表明连接没问题: SSL 握手已读取 3160 字节并写入 2319 字节

但是,我还注意到在看起来有效的所有内容上方的这一行:

verify error:num=20:unable to get local issuer certificate
verify return:0

错误行与此错误有什么关系吗?如果没有,我应该如何解决我的这个问题?请记住,我已经在 xcode 中设置了一个调试点,手动获取了我正在测试的设备的设备令牌,并将其插入到 sns 控制台中以隔离它没有使用错误的令牌。感谢您的时间和考虑。我也有一个理论,我可能没有使用正确的配置文件。我是否需要检查我是否在使用生产配置文件?如果是这样,我该怎么做?

结果证明 sns 不是问题,正如我在问题中所说的那样,问题也是 APNS。我正在从 xcode 下载我的应用程序,我猜它没有为我提供正确的生产设备令牌。我还没有尝试过,但是当我恢复到应用商店中的最新版本时,它开始工作了。当我在 xcode 访问我的最新版本时,它停止工作了。我想在应用商店和不在应用商店时,设备令牌的生成是不同的。

如果您尝试直接从 XCODE 运行 应用程序,您需要使用 APNS_SANDBOX 端点,而不是上面示例中的 APNS 端点。一旦您 "deploy" 您的应用程序(通过 TestFlight 或 AppStore),非沙盒 (APNS) 端点将工作。