在已发布的 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 应用中启用推送通知的步骤是啥?的主要内容,如果未能解决你的问题,请参考以下文章