我正在尝试为我的应用程序实现App。我创建了APP id,并能够为我的App生成一个SSL证书(它的类型显示为an开发IOS)。但是,当我试图生成一个配置文件时,在我选择应用程序的AppID的屏幕之后,我没有看到为这个应用程序生成的SSL证书。在“证书”列表中,我只看到以前创建的“IOS开发”类型的证书。
发布于 2015-01-08 01:02:59
您创建的APN证书由文档所称的“APN提供者”使用--在最简单的情况下,这是您自己的服务器,负责跟踪APN设备令牌并生成APN推送有效载荷,指示APN传递到特定设备令牌的消息、声音或徽章。正如应用程序中的可执行代码和其他资产的安排是由加密签名(通过您的iPhone开发或iPhone分发证书和相关的供应配置文件)来保护的一样,您的服务器和Apple网关之间的通信也必须受到保护,以防止流氓第三方冒充您的服务器并向用户发送垃圾推送消息。此APNs证书用于保护和验证服务器与APN的连接,授权它在用户设备上向应用程序提供推送有效负载--确保这些证书的安全!如果有人可以访问SSL证书的私钥,那么他们可以向您的应用程序发送垃圾邮件推送!
您的APN提供程序将需要访问此SSL证书的私钥。没有它,苹果的APN网关将拒绝任何和所有试图连接的尝试。您的提供者不需要您的配置文件--这个an证书完全独立于用于对iOS应用进行代码签名的机制,也就是说,服务器只需要服务器证书,而应用程序需要代码签名证书+供应配置文件。这两项不相交,也不相互交换数据。
的确,您的配置配置文件(开发、Ad分发和apps分发)将需要重新发布,但这特别是为了将aps-environment权限添加到每个配置文件中,允许使用这些配置文件签名的应用程序与APN环境连接。要非常清楚的是,重新颁发这些配置文件并不需要也不应该在profile...your应用程序代码中的任何地方添加APNs证书,因此不需要以任何方式利用该证书,并且会导致应用程序的大小略有增加。
您可以通过打开终端、复制和粘贴以下内容来检查当前的配置配置文件是否包括aps-environment权限,注意更新特定.mobileprovision的路径
/usr/libexec/PlistBuddy -c 'Print :Entitlements' /dev/stdin <<< $(security cms -D -i /path/to/your/application.mobileprovision)
这个命令做了两件事:
security工具从-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或App Store分发版的输出将类似于:
Dict {
get-task-allow = false
com.apple.developer.team-identifier = ABC1DEF2G3
application-identifier = XYZW1ABC2D.com.mycompany.niftyapp
keychain-access-groups = Array {
XYZW1ABC2D.*
}
}现在您已经为应用程序的AppId颁发了APN证书,您确实需要逐步执行并重新发布您的开发、add和分发配置文件,以便将aps-environment权限添加到每个配置文件中。
如果您在这些新文件上再次运行同一组终端命令(如果需要,请记住更新到新.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 --这只会出现在开发配置文件上,允许使用iPhone Developer证书签名的应用程序,并且只能与沙箱APN环境连接aps-environment = production --这只会出现在分发供应配置文件(Ad或apps )上,允许使用iPhone Distribution证书签名的应用程序与生产APN环境连接根据用于签署构建的证书,确定应用程序将连接到哪个APN网关并获取推送令牌,以及您的应用程序将从哪个网关接收推送消息。开发人员在推送通知方面最常见的错误之一是,与其服务器连接到Apple的APN网关的方式与应用程序的签名方式不匹配:
试试看,让我们知道事情进展如何!
https://stackoverflow.com/questions/27658697
复制相似问题