为什么我无法将APN开发iOS类型证书添加到配置文件

为什么我无法将APN开发iOS类型证书添加到配置文件,第1张

概述我正在尝试为我的应用程序实现APNS.我创建了APP id并且能够为我的App生成SSL证书(该类型显示为APNs开发 IOS).但是,当我尝试生成配置文件时,在我选择我的应用程序的AppID的屏幕后面,我没有看到我为此应用程序生成的SSL证书.在证书列表中,我只看到之前创建的“IOS开发”类型的证书. 您创建的APNs证书由文档称为“APNs提供者”使用 – 在最简单的情况下,这是您自己的服务器 我正在尝试为我的应用程序实现APNS.我创建了APP ID并且能够为我的App生成SSL证书(该类型显示为APNs开发 IOS).但是,当我尝试生成配置文件时,在我选择我的应用程序的AppID的屏幕后面,我没有看到我为此应用程序生成的SSL证书.在证书列表中,我只看到之前创建的“IOS开发”类型的证书.解决方法 您创建的APNs证书由文档称为“APNs提供者”使用 – 在最简单的情况下,这是您自己的服务器,负责跟踪APN设备令牌并生成APNs Push Payloads指示APN要传递给特定设备令牌的消息,声音或徽章.正如您的应用程序中的可执行代码和其他资产的安排由加密签名(通过您的iPhone开发或iPhone分发证书和相关的配置文件)保护一样,您的服务器和Apple APNs网关之间的通信也必须得到保护,以防止流氓第三方伪装成您的服务器并向您的用户发送垃圾邮件推送消息.此APNs SSL证书用于保护和验证服务器与APN的连接,授权其将推送有效负载传送到用户设备上的应用程序 – 保证这些证书的安全!如果任何人都可以访问SSL证书的私钥,那么他们就可以向您的应用发送垃圾邮件!

您的APNs提供商需要访问此SSL证书的私钥.没有它,Apple的APN网关将拒绝任何和所有连接尝试.您的提供商不需要拥有您的配置文件 – 此APNs证书与用于对iOS应用程序进行代码签名的机制完全分开,即服务器只需要服务器证书,而应用程序需要代码签名证书配置轮廓.这两个项目不相交,也不相互交换数据.

确实需要重新发布您的配置文件(开发,Ad-Hoc分发和App Store分发),但这是专门为每个配置文件添加aps-environment权利,允许使用这些配置文件签名的应用程序进行连接与APNs环境.为了绝对清楚,重新发布这些配置文件不会也不应该在配置文件中的任何位置添加您的APN SSL证书…您的应用程序代码不需要以任何方式利用此证书,并且会导致应用程序的大小略微增加.

您可以通过打开终端,复制和粘贴以下内容来检查您当前的配置文件是否包含aps-environment权利,注意更新特定.mobileprovision的路径:

/usr/libexec / PListBuddy -c’打印:权利’/ dev / stdin<<< $(security CMS -D -i /path/to/your/application.mobileprovision) 这个命令做了两件事:
>使用OS X中的安全工具从-i参数后面标识的.mobileprovision文件中提取pList内容,并将所有这些内容传递给…
> PListBuddy将EnTitlements键的全部内容打印到屏幕上.

尚未启用推送通知的基本开发配置文件的输出将类似于以下内容:

Dict {  get-task-allow = true  com.apple.developer.team-IDentifIEr = ABC1DEF2G3  application-IDentifIEr = XYZW1ABC2D.com.mycompany.niftyapp  keychain-access-groups = Array {      XYZW1ABC2D.*  }}

虽然尚未启用推送通知的基本Ad-Hoc或App Store distribution的输出类似于:

Dict {  get-task-allow = false  com.apple.developer.team-IDentifIEr = ABC1DEF2G3  application-IDentifIEr = XYZW1ABC2D.com.mycompany.niftyapp  keychain-access-groups = Array {      XYZW1ABC2D.*  }}

现在您已经为应用程序的AppID颁发了APNs证书,您需要单步执行并重新发布开发,临时和分发配置文件,以便为每个配置文件添加aps-environment权利.

>导航到Certificates,Identifiers,and Profiles工具,找到与此应用程序关联的配置文件之一.
>单击“编辑”按钮并浏览向导的每个步骤 – 您不必对先前定义的设置进行任何更改,只需重新发布当前配置文件即可!
>单击向导末尾的“下载”按钮.
>将更新后的配置文件拖放到Dock上的Xcode图标上进行安装.

如果您在这些新文件上再次运行同一组终端命令(请记住在必要时更新新.mobileprovision的路径!)现在您将看到应用程序权利中出现aps-environment密钥:

Dict {  get-task-allow = true  aps-environment = development  com.apple.developer.team-IDentifIEr = ABC1DEF2G3  application-IDentifIEr = XYZW1ABC2D.com.mycompany.niftyapp  keychain-access-groups = Array {      XYZW1ABC2D.*  }}

此新密钥有两个值:

> aps-environment = development – 这将仅显示在Development Provisioning Profiles上,并允许使用iPhone Developer证书签名的应用程序,并且只能与SandBox APNs环境连接
> aps-environment = production – 仅在分发配置文件(Ad-Hoc或App Store)上显示,允许使用iPhone distribution证书签名的应用程序与Production APNs Environment连接

根据您用于签署构建的证书,确定您的应用将连接到哪个APN网关,并获取推送令牌以及您的应用将从哪个网关接收推送消息.开发人员在推送通知方面最常见的错误之一是应用程序签名与服务器连接到Apple的APN网关的方式不匹配:

>使用开发证书签名的应用程序只能在提供商还将开发APNs SSL证书连接到SandBox APNs网关并在其生成的有效负载中使用沙箱设备令牌时成功协商APN并接收推送消息.
>使用分发证书签名的应用程序只能在提供商还将生产APNs SSL证书连接到生产APNs网关并在其生成的有效负载中使用生产设备令牌时成功协商APN并接收推送消息.

试一试,让我们知道事情的进展!

总结

以上是内存溢出为你收集整理的为什么我无法将APN开发iOS类型证书添加到配置文件全部内容,希望文章能够帮你解决为什么我无法将APN开发iOS类型证书添加到配置文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存