iOS:从 AWS SNS 向 APNS 发送推送通知

Posted

技术标签:

【中文标题】iOS:从 AWS SNS 向 APNS 发送推送通知【英文标题】:iOS: Send Push Notification from AWS SNS to APNS 【发布时间】:2016-02-14 21:20:57 【问题描述】:

我的 AWS SNS 停止在 ios 上向我的订阅者发送推送通知,我正试图了解原因。所以我从头开始,旨在向我的测试设备发送 1 个通知。

我做了以下事情:

在 new "Apple Push Services" 类型的 iOS 开发门户上创建新证书,而不是旧的“APNs iOS 生产”,导入到钥匙串、导出的证书和私钥,按照in the AWS SNS APNS instructions 的描述将它们添加到 AWS。 确认此新的 APNS 证书显示在门户上我的 App ID 的“生产 SSL 证书”列表中。 在 AWS SNS 中创建“iOS 生产”应用程序并加载上述凭证。 为我的测试设备构建应用程序,订阅通知,获取令牌并去除所有空格等,然后使用该令牌在 AWS SNS 上创建一个新端点。 选择单个端点并向其发送消息。

我刚刚在 CloudWatch Logs 中收到此错误:

"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)"

我已经经历了几次这个过程,创建了新证书,尝试使用旧证书,多次重新安装应用程序等等。我什至遇到了this issue of the Apple CA certificate expiring today,因为我在我的钥匙串上看到了大部分证书显示为红色并显示消息“此证书的颁发者无效”,但显然这不应该是 Apple 的问题(上述内容从昨天开始也不起作用)。

我觉得我已经用尽了我可以在这里做的研究。

我错过了什么?

或者我该如何调试呢?我使用可以成功“ssh”到 APN 服务器的凭据,有没有办法以交互方式找出一些东西?

更新:

可能是我正在尝试使用“生产”证书,但在我从 Xcode 构建的应用程序上?这个新证书不应该适用于 Sandbox/dev 和生产版本吗?

【问题讨论】:

【参考方案1】:

回答这个问题最直接的方法是回答这个问题:

可能是我正在尝试使用“生产”证书,但在我从 Xcode 构建的应用程序上?这个新证书不应该适用于 Sandbox/dev 和生产版本吗?

简单来说......不是真的。您可以尝试解决这个问题,但它变得很奇怪。您必须创建一个临时分发并将其加载到您的手机上才能使其正常工作。每次您在 Xcode 中单击运行时,它都会运行 release 证书(也称为 Development Profile除非您已在方案设置中更改此设置. 您不能使用开发证书运行生产 APNS。

扩展 - 生产推送通知证书匹配分发临时配置文件 - 沙盒推送通知证书用于开发人员临时资料

从 Xcode 运行到您的手机的任何内容都会运行开发人员配置文件,并且沙盒证书除外。一旦您点击存档 - 您应该在您的管理方案设置中为您的存档设置分发

【讨论】:

尽管 Apple 表示新证书应该适用于两者,但事实并非如此。它只添加到 App Id 中 SSL 证书列表的“生产”部分,不能添加到“开发”中。这只是令人困惑。使用单独的证书工作.s. 正确,使用两个不同的。

以上是关于iOS:从 AWS SNS 向 APNS 发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

AWS - SNS 端点为 iOS 自行禁用 - Apple 设备(推送通知失败)

发布时禁用 AWS SNS EndPoint

设置 AWS SNS 以向 iOS 设备发送推送通知

如何测试 sns APNS 推送通知到单个设备

AWS SNS 推送通知说明

Amazon SNS Apple 推送通知教程中的错误(空指针异常)