从 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 的证书有问题。
我们遵循的流程:
从 Apple Developer 网站访问导航至 证书、ID 和配置文件 > 标识符 > 应用程序 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
返回钥匙串 select 密钥,突出显示应用私钥并将其导出到 .p12
文件。
返回命令提示符 运行 根据 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 文档是否已过时,但它们肯定已经过时了。
这里是:
从 Apple Developer 网站访问导航到证书、ID 和配置文件 > 标识符 > App ID
创建新的 App ID 并启用推送通知服务。
单击创建新的生产 SSL 证书,然后在 Mac 上的本地钥匙串中创建新的 CSR 文件,将其上传到开发者网站(在证书生成过程中),然后下载生成.cer文件。
双击 .cer 文件将其添加到 mac 上的钥匙串中。
打开钥匙串,select 'My Certificates'高亮第3步添加的证书,可能以'Apple Push Services'开头。
右键单击证书并将其导出(扩展名为 .p12)。如果它要求您设置密码,您可以留空。
在 AWS SNS 中,导航到应用程序,单击进入您的 APNS 应用程序(或添加新应用程序)。在 'platform application actions' 下单击更新凭据并上传导出的 .p12 文件。
最后点击'Load credentials from file'更新退出应用设置
在您的应用中享受推送通知。
这对我有用,我不确定为什么 AWS 文档建议使用命令来转换文件,看起来它们不是必需的并且造成了很大的混乱。
希望这个别人。
我已成功测试使用 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 的证书有问题。
我们遵循的流程:
从 Apple Developer 网站访问导航至 证书、ID 和配置文件 > 标识符 > 应用程序 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
返回钥匙串 select 密钥,突出显示应用私钥并将其导出到
.p12
文件。返回命令提示符 运行 根据 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 文档是否已过时,但它们肯定已经过时了。
这里是:
从 Apple Developer 网站访问导航到证书、ID 和配置文件 > 标识符 > App ID
创建新的 App ID 并启用推送通知服务。
单击创建新的生产 SSL 证书,然后在 Mac 上的本地钥匙串中创建新的 CSR 文件,将其上传到开发者网站(在证书生成过程中),然后下载生成.cer文件。
双击 .cer 文件将其添加到 mac 上的钥匙串中。
打开钥匙串,select 'My Certificates'高亮第3步添加的证书,可能以'Apple Push Services'开头。
右键单击证书并将其导出(扩展名为 .p12)。如果它要求您设置密码,您可以留空。
在 AWS SNS 中,导航到应用程序,单击进入您的 APNS 应用程序(或添加新应用程序)。在 'platform application actions' 下单击更新凭据并上传导出的 .p12 文件。
最后点击'Load credentials from file'更新退出应用设置
在您的应用中享受推送通知。
这对我有用,我不确定为什么 AWS 文档建议使用命令来转换文件,看起来它们不是必需的并且造成了很大的混乱。
希望这个别人。