1

我已经成功测试使用SNS向Apple设备发送推送通知,目前在Xcode中使用APNS_SANDBOX发送推送通知。从Amazon SNS(APNS Production)获取“EndpointDisabled”

我们现在已准备好转入生产阶段,并且正在获得在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. 从苹果开发者网站访问导航到证书,标识&型材>标识符>应用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

  • 回到内部钥匙扣选择键,突出显示应用程序私钥并将其导出.p12文件。

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

  • 亚马逊接着说:

    新创建的.pem文件将用于配置亚马逊SNS发送手机推送通知消息。

    这使我相信文档已经过时的.pem文件上传到SNS APNS应用程序凭据管理器返回一个错误,指出它无法读取该文件。

    按照SNS凭据管理器的应用APNS,它只接受.p12文件......如果是这样的话,为什么需要创建最终.pem文件?这一步仍然需要?我错过了一个步骤?

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

    我知道还有其他类似的问题,但答案如此广泛,除了试错之外,没有真正的解决方案。我相信我的问题与不正确生成的证书具体相关,或者缺少一个步骤。

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

    谢谢

    +0

    你是否按照验证pem文件的步骤操作? 'openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem' –

    +0

    @Michael - sqlbot我的确是,但没有改变任何东西。经过大量的试验和错误,我得到了它的工作。我不认为任何AWS建议的控制台命令是必要的。 – Goodbytes

    回答

    1

    经过大量的试验和错误,我设法让它工作。我不确定AWS文档是否过时,但肯定是过度杀手。

    这里所说:

    1. 从苹果开发者网站的访问浏览到证书,标识&配置文件>标识>应用ID

    2. 创建一个新的应用程序ID并启用推送通知服务。

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

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

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

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

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

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

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

    这为我工作,我不知道为什么AWS文档建议的命令来转换文件,它看起来像他们是没有必要的,造成很大的混乱。

    希望这是别人。