即使 http2 返回代码 200,iOS APNS 也不会在设备上用于开发和生产

Posted

技术标签:

【中文标题】即使 http2 返回代码 200,iOS APNS 也不会在设备上用于开发和生产【英文标题】:iOS APNS not recv'd on device for dev and prod even tho http2 returns code 200 【发布时间】:2017-09-18 23:32:53 【问题描述】:

我最近将 ios APNS 更改为使用带有 JWT 的 http2,而不是 证书。最初它起作用了,一切都很好。在某个时候我 打破它是因为我没有收到开发 APN,而是生产 正在工作。吊销 APN 开发/产品证书并制作新证书后 并获得一个新的 APN 令牌进行推送(在尝试解决我的第一个问题的过程中),即使 HTTP 反馈代码为 200,我的警报现在对两者(开发和生产)都已损坏。

然后我尝试解决这两个问题,但没有成功。我确定我拥有的代码 工作仍在工作,但似乎苹果有一些问题 他们根本没有出现在我的设备上。

Things Ive done/checked:
1. Re-created both dev and production push certificates
2. both dev and prod mobile provision profiles have been re-done/downloaded and installed.
3. Apple ID's show both Dev and Prod push is 'enabled'
4. in Xcode->Capabilities Push Notifications are turned on
5. deleted the app and re-installed for both dev and prod devices
6. made sure the APN device token (in My Application) is being updated to the server
7. Made sure Im sending to the right Dev/Prod push servers

除非有一些我做错的顺序 开发人员门户并在 Xcode 中安装,我不确定去哪里 从这里。任何帮助表示赞赏! 提前致谢!

[已解决] 我发现 APN 有效负载字符串有问题。这会很有帮助 如果苹果可以为此提供一些反馈代码,但是事实是 它返回代码 200 可能足以表明有问题 有效载荷字符串。

【问题讨论】:

【参考方案1】:

尝试使用命令行发送测试推送通知。如果可行,那么您的服务器设置中存在一些问题。如果不是,那么问题出在您的 SSL 证书上

【讨论】:

【参考方案2】:

在 JSON 负载中使用单引号而不是双引号会导致:

        string payload = " 'aps' :  'alert' : 'Hello'  ";  // wrong

        string payload = " \"aps\" :  \"alert\" : \"Hello\"  ";  // right

【讨论】:

以上是关于即使 http2 返回代码 200,iOS APNS 也不会在设备上用于开发和生产的主要内容,如果未能解决你的问题,请参考以下文章

如何发送 iOS - 带有 P12 证书的 APN 通知 - C# 示例

iOS (APN) - 身份验证失败,因为远程方已关闭 C# 中的传输流

iOS 根据用户的位置显示推送通知

具有 1 个并发流的 HTTP2 请求

无法从我的应用程序连接到IMS apn

curl 将数据发布到 HTTP/1.1,即使使用 APNs 的 http2 选项