-1

推送通知实现和测试都很好,但最近遇到了一个奇怪的问题,它在 IT 环境中停止推送通知并在 UAT 中正常工作。

在两种环境(IT 和 UAT)中使用相同的 APS 证书,并且应用程序也具有相同的 APS 证书。

在移动设备中生成的设备令牌在各自环境中的两个用户中注册。

当我们尝试从 UAT 服务器推送通知时,它是成功的,当我们尝试从 IT 服务器推送相同的通知时,响应显示“BadDeviceToken”</p>

        "message": "Notification failed for the devices XXXXXXXXXX8275A19D4EE30C73C18CFEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX : reason -BadDeviceToken"

试图修复:

1) 删除并重新安装应用程序并先测试 IT,然后测试 UAT。但同样的结果——在 UAT 中工作正常,但在 IT 中不行。

2) 在两台服务器上验证 APS 证书,并且是相同的。

3) 测试了一个旧的 iOS 版本,它的推送通知在 IT 早期工作得很好。但同样的结果——在 UAT 中工作正常,但在 IT 中不行。

期望是推送通知应该适用于这两种环境。

4

1 回答 1

0

警告:主要问题之一是误导性术语,如生产开发环境等。在本文后面,我将把您的“IT 和 UAT 环境”称为后端(开发后端、产品后端)。术语环境将用于 APNS 生产环境与沙盒环境。此外,开发不仅是开发后端,也是可以存档 iOS 构建的方法。

问题是您的应用所在的 APNS 环境(沙盒与生产)与后端发送请求的环境不一致。

考虑这个例子:

您有开发和生产后端。开发后端向沙盒环境发送 APNS 请求。生产后端将 APNS 请求发送到生产环境。这就是它通常的工作方式。

接下来,您要构建与开发后端通信的应用程序。如果您进行开发构建(使用开发方法归档的构建),那么您的应用程序将处于沙盒模式,并且由于您的开发后端将 APNS 请求发送到沙盒,因此推送通知将起作用。但是,如果您进行 AdHoc/Appstore 构建,那么您的应用程序将处于生产模式,并且推送通知将停止工作。

现在,如果您想构建与生产后端通信的应用程序,则相反。AdHoc/Appstore 构建将工作,开发构建不会。

总而言之,您的应用程序应该使用与后端向其发送 APNS 请求的环境(Production vs Sandbox )相对应的适当方法( AppStore/AdHoc vs Development )构建。

于 2019-08-22T06:47:28.300 回答