从Amazon SNS(APNS Production)获取“EndpointDisabled”
我已经成功测试使用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。
我们所遵循的过程:
从苹果开发者网站访问导航到证书,标识&型材>标识符>应用ID
创建一个新的App-ID,并推送通知服务。
点击创建一个新的生产SSL证书,然后在Mac上的本地钥匙串中创建一个新的CSR文件,将其上传到开发者站点(在证书生成过程中),然后下载生成的
.cer
文件。双击
.cer
文件将其添加到Mac上的钥匙串。在这一点上,我们已经咨询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文件,但很明显,它不起作用。
我知道还有其他类似的问题,但答案如此广泛,除了试错之外,没有真正的解决方案。我相信我的问题与不正确生成的证书具体相关,或者缺少一个步骤。
我想我正在接触任何最近做过这件事的人,他们可以澄清所涉及的步骤。
谢谢
经过大量的试验和错误,我设法让它工作。我不确定AWS文档是否过时,但肯定是过度杀手。
这里所说:
从苹果开发者网站的访问浏览到证书,标识&配置文件>标识>应用ID
创建一个新的应用程序ID并启用推送通知服务。
点击创建一个新的生产SSL证书,然后在Mac上的本地钥匙串中创建一个新的CSR文件,将其上传到开发者站点(在证书生成过程中),然后下载生成的.cer文件。
双击.cer文件将其添加到Mac上的钥匙串。
打开钥匙串,选择“我的证书”突出显示在第3步中添加的证书,可能以“Apple推送服务”开头。
右键单击证书并导出它(扩展名为.p12)。如果它要求您设置密码,您可以留空。
在AWS SNS中,导航到应用程序,单击您的APNS应用程序(或添加一个新应用程序)。在“平台应用程序操作”下,点击更新凭据并上传您导出的.p12文件。
最后,单击“从文件加载凭据”并更新以退出应用程序设置。
在您的应用中享受推送通知。
这为我工作,我不知道为什么AWS文档建议的命令来转换文件,它看起来像他们是没有必要的,造成很大的混乱。
希望这是别人。
你是否按照验证pem文件的步骤操作? 'openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem' –
@Michael - sqlbot我的确是,但没有改变任何东西。经过大量的试验和错误,我得到了它的工作。我不认为任何AWS建议的控制台命令是必要的。 – Goodbytes