在已发布的 iOS 应用中启用推送通知的步骤是啥?

Posted

技术标签:

【中文标题】在已发布的 iOS 应用中启用推送通知的步骤是啥?【英文标题】:What are the steps to enable Push Notifications in already published iOS App?在已发布的 iOS 应用中启用推送通知的步骤是什么? 【发布时间】:2015-07-22 08:32:23 【问题描述】:

我正在使用Appery 平台开发混合应用程序。对于已经发布到 Apple Store 的应用程序之一,我想启用推送通知。设备正在使用 DeviceID 和 Token 正确注册。但是,当我尝试发送推送通知时,它们并没有通过,平台只返回这个错误,这对我来说并没有透露太多:

描述:尝试与 Apple 服务器通信时出现不可恢复的错误:null 设备数量:100

我尝试了所有可能的尝试来解决这个问题,但都是徒劳的。 大多数教程和问题都是关于创建启用推送通知的新应用程序,而不是关于启用推送通知到已发布的应用程序。因此,我应该从哪里开始,应该更新什么以及应该离开什么,这造成了相当大的混乱(例如,我不能从头开始,我的应用程序已经注册了一个应用程序 ID)

这里我描述了我为我的应用启用 PN 所采取的步骤

    在Apple开发者账户中,我从Identifiers菜单中选择了App IDs,并选择了我的目标App ID,点击Edit,勾选Push Notification选项,它变成了带有黄色灯泡的configurable。 然后,在同一页面中,我单击了Production SSL Certificate 下的Create Certificate。 我上传了很久以前发布应用程序时创建的 CSR 文件。我下载了aps_production.cer 文件 正如here所指出的,我双击aps_production.cer文件将其安装在Keychain Access应用程序中,我可以在Keychain中看到`Apple Production ios Push Service证书及其下方的私钥。 右键单击钥匙串中的证书并导出 .p12 文件 返回 Apple 开发者:在provisioning profiles 菜单下,我选择了distribution 并创建了新的配置文件:分发 -> App Store 选项 -> 继续 -> 我的 App ID 继续 -> 我的应用程序在发布时使用的证书第一次(这里的证书不是我刚才生成的SSL推送通知证书,是我第一次发布App时创建的证书)。 我下载了配置文件。 我将所有证书添加到我的平台(基本上是 .p12 文件和配置文件。捆绑 ID 相同)。然后,我生成了在 xCode 中打开的 xcode 项目 在 xCode 中,在 code Signing 下,我选择了创建应用程序时使用的证书(它是显示的唯一选项),然后双击我的配置文件以显示 provisioning profile 选项 (I'我对此步骤非常怀疑)。我成功构建并验证了项目,提交到 App Store,它出现在 prerelease 部分,并收到了 Test Flight 邀请。 我在 iPhone 和 iPad 上下载了该应用程序,启动该应用程序后,我可以看到它已在后端正确注册。 当我(从 Appery 平台)发送推送通知时,出现上述错误 Appery 支持通知我这与认证不匹配有关

现在我的问题是,我的步骤中导致错误的原因是什么?有什么遗漏或没有正确完成?

这些是我用来解决问题的其他参考资料

How to create APNS certificates Apple Push Notification Services in iOS 6 Tutorial: Part 1/2 JavaPNS error handling - contradiction in the documentation? what type of certificate do you need in iOS

【问题讨论】:

你有pem文件***.com/questions/1762555/creating-pem-file-for-apns @Shklyar 不,我需要它做什么? 【参考方案1】:

我记不清了,但是您需要转换 p12(如上面的链接)并拥有转换后的文件并将在服务器上运行。像这样的东西。

【讨论】:

Appery 平台需要 .p12 文件而不是 .pem ! 很抱歉!当我使用自己的 APNS(使用自己的服务器端)时,我记得这一步的问题。【参考方案2】:

我不确定,但我认为问题可能在第 4 步和第 5 步。 试试我的步骤:

    展开此选项,然后右键单击“Apple Development Push Services”> 导出“Apple Development Push Services ID123”。将其保存为 apns-dev-cert.p12 文件,您可以访问它。

    对展开“Apple Development Push Services”时显示的“私钥”再次执行相同操作,确保将其保存为 apns-dev-key.p12 文件。

    现在需要通过从终端执行以下命令将这些文件转换为 PEM 格式:

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12 openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

如果您想删除密码,请在导出/转换时不要设置或执行:

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

最后,您需要将密钥和证书文件组合成一个 apns-dev.pem 文件,我们将在连接到 APNS 时使用:

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

希望对您有所帮助。

【讨论】:

Appery 平台需要 .p12 文件而不是 .pem !【参考方案3】:
Step1 :

转到 Apple 开发帐户并在证书中按加号按钮并按照步骤操作。

在生产下,选择

“Apple 推送通知服务 SSL(沙盒和生产)”

复选框,然后单击继续。

上传 CSR 证书并继续...

启动钥匙串访问。

在类别部分中,选择我的证书。

找到您要导出的证书并公开其内容。

您会看到证书和私钥。

同时选择证书和密钥,然后选择“文件”>“导出项目”。

从“文件格式”弹出菜单中,选择您的服务器接受的文件格式。

在“另存为”字段中输入文件名,然后单击“保存”。

证书和密钥以个人信息交换格式(文件扩展名为 .p12 的文件)作为文本文件保存到您指定的位置。

关注Link

【讨论】:

以上是关于在已发布的 iOS 应用中启用推送通知的步骤是啥?的主要内容,如果未能解决你的问题,请参考以下文章

从设置应用程序 ios 获取推送通知启用/禁用事件?

如何从应用程序 iOS 8 启用/禁用推送通知

在 iOS 中处理静默推送通知的最佳方法是啥

iOS 推送通知已启用但无法正常工作

在 iOS 9(APPS/PC 日志记录)上启用推送状态消息?

如何显示自定义警报以在 ios 中启用通知