从 Amazon SNS(APNS 生产)获取“EndpointDisabled”

Getting “EndpointDisabled” from Amazon SNS (APNS Production)

我已成功测试使用 SNS 向 Apple 设备发送推送通知,目前在 Xcode 中 APNS_SANDBOX。

我们现在已准备好转向生产,并且在 APNS(生产)应用程序端点上正确设置证书绝对是一场噩梦。

我正在遵循我们在开发过程中遵循的相同过程,并参考了多个指南。

每次我们尝试向设备发送推送通知时,我们都会收到以下失败通知:

{"DeliveryAttempts":1,"EndpointArn":"arn:aws:sns:eu-west-1:123456789:endpoint/APNS/Name/e591d1a1-8db3-3382-8091-ab1a3cb3cac5","EventType":"DeliveryFailure","FailureMessage":"Endpoint is disabled","FailureType":"EndpointDisabled","MessageId":"08a70f95-773c-58fb-a6f9-5df1650eeb19","Resource":"arn:aws:sns:eu-west-1:123456789:app/APNS/Name","Service":"SNS","Time":"2017-10-20T15:02:10.824Z"}

我知道这可能与几个问题有关,但很可能是上传到 SNS 的证书有问题。

我们遵循的流程:

  1. 从 Apple Developer 网站访问导航至 证书、ID 和配置文件 > 标识符 > 应用程序 ID

  2. 创建新的 App ID 并启用推送通知服务。

  3. 点击创建一个新的生产 SSL 证书,然后在 Mac 上的本地钥匙串中创建一个新的 CSR 文件,将其上传到开发者网站(在证书生成过程中),然后下载生成 .cer 文件。

  4. 双击 .cer 文件将其添加到 mac 上的钥匙串。

  5. 此时我们已经查阅了 http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html 文档,其中建议 运行 执行以下命令:

openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem

  1. 返回钥匙串 select 密钥,突出显示应用私钥并将其导出到 .p12 文件。

  2. 返回命令提示符 运行 根据 AWS 文档执行以下命令:openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts 生成另一个 .pem 文件。

亚马逊接着说:

新创建的 .pem 文件将用于配置 Amazon SNS 以发送移动推送通知消息。

这让我相信文档已经过时,因为将 .pem 文件上传到 SNS APNS 应用程序凭据管理器 returns 时出现错误,表明它无法读取该文件。

根据 APNS 应用程序的 SNS 凭据管理器,它只接受 .p12 文件...如果是这样,为什么需要创建最终的 .pem 文件?这一步还需要吗?我错过了一步吗?

我还是上传了最终的 .p12 文件,但很明显,它不起作用。

我很欣赏还有其他与此类似的问题,但答案过于广泛,除了反复试验之外没有真正的解决方案。我认为我的问题特别与错误生成的证书有关,或者流程中缺少一个步骤。

我想我正在联系最近做过这件事的任何人,他们可以澄清所涉及的步骤。

谢谢

经过反复试验,我终于成功了。我不确定 AWS 文档是否已过时,但它们肯定已经过时了。

这里是:

  1. 从 Apple Developer 网站访问导航到证书、ID 和配置文件 > 标识符 > App ID

  2. 创建新的 App ID 并启用推送通知服务。

  3. 单击创建新的生产 SSL 证书,然后在 Mac 上的本地钥匙串中创建新的 CSR 文件,将其上传到开发者网站(在证书生成过程中),然后下载生成.cer文件。

  4. 双击 .cer 文件将其添加到 mac 上的钥匙串中。

  5. 打开钥匙串,select 'My Certificates'高亮第3步添加的证书,可能以'Apple Push Services'开头。

  6. 右键单击证书并将其导出(扩展名为 .p12)。如果它要求您设置密码,您可以留空。

  7. 在 AWS SNS 中,导航到应用程序,单击进入您的 APNS 应用程序(或添加新应用程序)。在 'platform application actions' 下单击更新凭据并上传导出的 .p12 文件。

  8. 最后点击'Load credentials from file'更新退出应用设置

  9. 在您的应用中享受推送通知。

这对我有用,我不确定为什么 AWS 文档建议使用命令来转换文件,看起来它们不是必需的并且造成了很大的混乱。

希望这个别人。