更新 iOS 分发证书和推送通知

Posted

技术标签:

【中文标题】更新 iOS 分发证书和推送通知【英文标题】:Renewing iOS Distribution Certificate and Push notifications 【发布时间】:2019-02-20 06:42:03 【问题描述】:

今天早上,我尝试将带有一些错误修复的新版本上传到 AppStore,存档二进制文件成功,但我无法将其上传到 itunesConnect 进行发布。该错误与某些分发证书有关,因此我得到了有关该问题的提示。

在通过钥匙串访问时,我看到我的 ios 分发证书在早上刚刚过期。

我登录了我的开发者帐户并创建了一个新的分发证书并将其安装到我的钥匙串中。 但是在这个新证书之后,我的推送通知不再起作用了。

我的应用没有收到任何类型的推送通知(带有有效负载或简单通知)。我可以在日志中看到通知和数据有效负载。

我读过其他一些帖子,说第二种方法已被弃用并且不再可靠,但在证书更新之前它工作正常。所以我不明白这里发生了什么。 或者我是否缺少在证书更新后需要配置的其他内容,例如配置文件或我的 APNs 证书(但我最近才切换到 APNS auth key.p8)

我在 didReceive remoteMessage 中记录了通知和有效负载 Appdelegate 中的方法。但是 didReceiveRemoteNotification 永远不会被调用。

除了这个分发证书之外,我的开发者证书也即将到期,所以我通过开发帐户撤销了它并生成了一个新的证书并将其安装在 Xcode 中。

Xcode 版本 10.1 (10B61) - 斯威夫特 4.2 - 测试设备 iPhone X 与 iOS 11.2.6

【问题讨论】:

您需要从新证书重新创建 pem 文件。 @SarabjitSingh 你能详细点吗? 如@SarabjitSingh 所述,使用新证书创建推送通知的pem 文件-***.com/questions/21250510/… @Joe 请从您的新证书创建 p12,然后将其转换为 pem,然后将此 pem 与您的通知部分一起使用。 请关注@Akhilrajtr 评论。 【参考方案1】:

您需要使用新的分布式证书生成 .pem 文件,然后使用此 pem 文件接收推送通知。

创建 .pem 文件(按照本文中的步骤操作)

https://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/

使用 pem 文件测试在线推送通知

http://apns-gcm.bryantan.info/

https://www.logisticinfotech.com/send-push-notification-online/

【讨论】:

【参考方案2】:

您可以关注this link获取推送证书。

要测试推送通知,您可以使用Pusher

【讨论】:

谢谢@tomerpacific【参考方案3】:

好的,我通过在钥匙串访问和开发人员帐户的证书页面中删除与我的这个应用程序相关的任何现有证书实例来解决此问题。

从开发帐户证书页面上的 App-IDs,通过在线生成一个、下载、在钥匙串中安装、导出 .p12 证书并上传到 firebase 项目设置,为我的应用程序重新配置推送通知 SSL 证书。对生产 SSL 证书也重复相同的操作。

我正在使用 POSTMAN 客户端向我的应用程序发送数据有效负载通知,并且它现在正在工作。我现在收到所有通知,没有任何问题。

但奇怪的是 didReceiveRemoteNotification 仍然没有被调用。我会调查一下,看看现在有什么问题,因为我在这里实现将通知保存到本地存储以供以后查看。

【讨论】:

所以我猜有些证书仍然指向旧的发行版和开发者证书。

以上是关于更新 iOS 分发证书和推送通知的主要内容,如果未能解决你的问题,请参考以下文章

证书的 iOS 推送通知 AuthenticationException

如果我更新推送通知证书,推送通知会在我的旧应用程序上工作吗?

iOS Build 在提供构建时推送通知失败?

更新 ios 推送通知的 SSL 证书时是不是需要重新创建 CK.pem?

推送通知在 iOS 5.0.1 上不起作用

获取推送通知的生产 iOS 设备令牌