iOS:从 AWS SNS 向 APNS 发送推送通知
iOS: Send Push Notification from AWS SNS to APNS
我的 AWS SNS 在 iOS 上停止向我的订阅者发送推送通知,我想了解原因。所以我从头开始,目的是向我的测试设备发送 1 个通知。
我做了以下事情:
- 在 new "Apple Push Services" type, not the old "APNs iOS Production", imported to keychain, exported certificate and private key, added those to AWS as described in the AWS SNS APNS instructions 的 iOS 开发门户上创建新证书。
- 已确认这个新的 APNS 证书出现在门户上我的 App ID 的 "Production SSL Certificate" 列表中。
- 在 AWS SNS 中创建 "iOS Production" 应用程序并加载上面的凭证。
- 为我的测试设备构建应用程序、订阅通知、获取令牌并去除所有空格等,然后使用该令牌在 AWS SNS 上创建一个新端点。
- Select 单个端点并向其发送消息。
我刚刚在 CloudWatch 日志中收到此错误:
"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)"
我已经经历了几次这个过程,创建了新证书,尝试使用旧证书,多次重新安装应用程序等等。我什至 运行 跨越 this issue of the Apple CA certificate expiring today看到我的钥匙串上的大部分证书都显示为红色,并显示消息“此证书有一个无效的颁发者”,但根据 Apple 的说法,显然这不应该是一个问题(以上也不适用于昨天)。
我觉得我已经用尽了我在这里可以做的研究。
我缺少什么?
或者我该如何调试它?我使用我可以成功 "ssh" 到 APN 服务器的凭据,有没有办法交互式地找出一些东西?
更新:
可能是我正在尝试使用 "production" 证书,但我正在使用 Xcode 构建的应用程序?这个新证书不是应该同时适用于 Sandbox/dev 和生产版本吗?
回答这个问题最直接的方法是回答这个:
It could be that I'm trying with the "production" certificate but on an app Im' building from Xcode? Isn't this new certificate supposed to work for both the Sandbox/dev and production version?
简单来说...不是真的。您可以 尝试完成它,但它变得很奇怪。您必须创建一个临时分发并将其加载到您的 phone 上才能使其正常工作。每次单击 Xcode 中的 运行 时,它 运行 是 发布 证书(又名 开发配置文件 。除非你在方案设置中改变了这一点。你不能运行具有开发证书的生产APNS。
扩展 - 生产推送通知证书 匹配 分发临时配置文件 - 沙盒推送通知证书 用于开发者临时配置文件
从 Xcode 到您的 phone 运行 的任何 运行 开发者资料,沙盒证书除外。单击 存档 后,您 应该 在 中为存档设置 分发 管理方案 设置
我的 AWS SNS 在 iOS 上停止向我的订阅者发送推送通知,我想了解原因。所以我从头开始,目的是向我的测试设备发送 1 个通知。
我做了以下事情:
- 在 new "Apple Push Services" type, not the old "APNs iOS Production", imported to keychain, exported certificate and private key, added those to AWS as described in the AWS SNS APNS instructions 的 iOS 开发门户上创建新证书。
- 已确认这个新的 APNS 证书出现在门户上我的 App ID 的 "Production SSL Certificate" 列表中。
- 在 AWS SNS 中创建 "iOS Production" 应用程序并加载上面的凭证。
- 为我的测试设备构建应用程序、订阅通知、获取令牌并去除所有空格等,然后使用该令牌在 AWS SNS 上创建一个新端点。
- Select 单个端点并向其发送消息。
我刚刚在 CloudWatch 日志中收到此错误:
"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)"
我已经经历了几次这个过程,创建了新证书,尝试使用旧证书,多次重新安装应用程序等等。我什至 运行 跨越 this issue of the Apple CA certificate expiring today看到我的钥匙串上的大部分证书都显示为红色,并显示消息“此证书有一个无效的颁发者”,但根据 Apple 的说法,显然这不应该是一个问题(以上也不适用于昨天)。
我觉得我已经用尽了我在这里可以做的研究。
我缺少什么?
或者我该如何调试它?我使用我可以成功 "ssh" 到 APN 服务器的凭据,有没有办法交互式地找出一些东西?
更新:
可能是我正在尝试使用 "production" 证书,但我正在使用 Xcode 构建的应用程序?这个新证书不是应该同时适用于 Sandbox/dev 和生产版本吗?
回答这个问题最直接的方法是回答这个:
It could be that I'm trying with the "production" certificate but on an app Im' building from Xcode? Isn't this new certificate supposed to work for both the Sandbox/dev and production version?
简单来说...不是真的。您可以 尝试完成它,但它变得很奇怪。您必须创建一个临时分发并将其加载到您的 phone 上才能使其正常工作。每次单击 Xcode 中的 运行 时,它 运行 是 发布 证书(又名 开发配置文件 。除非你在方案设置中改变了这一点。你不能运行具有开发证书的生产APNS。
扩展 - 生产推送通知证书 匹配 分发临时配置文件 - 沙盒推送通知证书 用于开发者临时配置文件
从 Xcode 到您的 phone 运行 的任何 运行 开发者资料,沙盒证书除外。单击 存档 后,您 应该 在 中为存档设置 分发 管理方案 设置