从Amazon SNS获取“EndpointDisabled”(APNS制作)

时间:2017-10-20 20:17:34

标签: amazon-web-services apple-push-notifications amazon-sns

我已成功测试使用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上的Keychain。

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

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

    1. 返回内部钥匙串选择键,突出显示应用私钥并将其导出.p12文件。

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

    3. 亚马逊继续说:

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

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

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

      无论如何我上传了最终的.p12文件,但很明显,它不起作用。

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

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

      由于

1 个答案:

答案 0 :(得分:2)

经过大量的反复试验后,我设法让它发挥作用。我不确定AWS文档是否过时,但它们肯定会过度杀戮。

这里是:

  1. 从Apple Developer网站访问导航到证书,ID&个人资料>标识符>应用ID

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

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

  4. 双击.cer文件,将其添加到mac上的Keychain。

  5. 打开钥匙串,选择“我的证书”,突出显示在步骤3中添加的证书,可能以“Apple推送服务”开头。

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

  7. 在AWS SNS中,导航到“应用程序”,单击您的APNS应用程序(或添加新应用程序)。在“平台应用程序操作”下,单击“更新凭据”并上载导出的.p12文件。

  8. 最后,点击“从文件加载凭据”并更新以退出应用程序设置。

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

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

    希望别人有人。