我一直在使用自动管理签名选项.然而,当我在最近的Xcode 8.0版本中这样做时,它迫使我使用开发者代码签名身份,甚至在Build Settings中发布和分发,这本身是非常奇怪的.当我提交相关的二进制文件时,我得到了苹果公司的可怕的缺少推送通知授权电子邮件.为了弥补它,我禁用了自动选项,并手动返回指定配置文件,并允许我将发行配置文件保存在发行版Build Setting中,并将Apple的警告电子邮件保存.
为什么自动管理以这种方式工作,如何调整其行为?
解决方法
这种新的自动签名功能与以前的Xcode版本不同.之前,当您设置自动配置配置文件时,Xcode正在使用计算机中的第一个配置配置文件和证书,该配置文件和证书与您尝试使用的权限和包标识符相匹配.
在Xcode 8中,自动签名将会为您管理配置文件,权利和证书,但仅适用于开发.如果选择自动,您将被迫使用开发签名和Xcode创建的配置配置文件.
在WWDC 2016 (Session 401 – What’s new in Xcode app signing)年,他们解释了这种新的签名方法,并描述了一些“最佳实践”.当您正在构建分发和使用自动签名或手动时,您应该存档开发,然后导出(从组织者或命令行工具xcodebuild -exportArchive)作为分发.组织者将重新签署您的应用程序分发,即使它已被存档为开发.
您所描述的另一个问题是“缺少推送通知授权”是因为Xcode 8已经改变了应用授权的方式.使用先前版本的Xcode,您不必显式添加APS环境授权,如果您的配置文件具有该权限就足够了.确保您在“功能”选项卡中启用了“推送通知”功能,并检查那里是否有错误.
(编辑:这个新行为是有意的,并在Xcode 8发行说明中描述:https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_44)
Xcode 8 does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement,either enable Push Notifications in the project editor’s Capabilities pane,or manually add the entitlement to your entitlements file. (28076333)