提交时,Xcode 8“应用程序签名中缺lessaps-environment权利”

我有一个应用程序,我们已经提交了在过去6个月的版本,我们使用APNS。 升级到Xcode 8后,我收到了Apple提供的以下电子邮件

亲爱的开发者

我们发现您最近为APP_NAME交付的一个或多个问题。 您的交货成功,但您可能希望在下一次交货时更正以下问题:

缺less推送通知权利 – 您的应用程序包含用于Apple推送通知服务的API,但应用程序签名中缺lessaps环境权利。 要解决此问题,请确保您的App ID已在Provisioning Portal中启用推送通知。 然后,使用包含aps-environment授权的分发configuration文件签署您的应用程序。 这将创build正确的签名,您可以重新提交您的应用程序。 请参阅本地和推送通知编程指南中的“供应和开发”了解更多信息。 如果您的应用程序不使用Apple推送通知服务,则不需要执行任何操作。 您可以从将来的提交中删除API来停止此警告。 如果您使用第三方框架,则可能需要联系开发人员以获取有关删除API的信息。

纠正问题后,您可以使用Xcode或Application Loader将新的二进制file upload到iTunes Connect。

问候,

App Store团队

奇怪的是我去了developer.apple.com – > 证书,标识符和configuration文件 ,我的AppId仍然启用推送通知。 我没有做任何不同的工作,所以我很好奇,如果Xcode 8更新破坏了一些东西。 有任何想法吗?

顺便说一句:他们给推送通知编程指南的链接在电子邮件中被打破了,所以这不是一个好兆头。

其实很简单。 出于某种原因,它在Xcode 8上被禁用,但转到目标 – >function,并validation推送通知在该视图上都是正确的。 对我来说,它有一个“修理我”,我不得不点击,瞧。

我也有同样的问题,我敢肯定推送通知在Xcode8默认closures。 我没有注意到它。 小心一点。

能力

Xcode 8发生了一些变化,您的权利不再来自应用程序标识符,而是来自应用程序目标中select的function。 所以,就像Unome(OP)说的那样,你必须validation推送通知是否打开。

对我来说,这不是一个“修复我”button,但我有两个权利文件(一个用于开发,一个用于分发)。 切换推送通知function会将aps-environment密钥(包含值development )添加到开发权利文件,但不会将其添加到分发权利文件中。 将相同的密钥复制到发行版可以在上传到iTunes Connect时摆脱警告电子邮件。

对于大多数项目来说,切换推送通知应该足够了,或者如果已经打开了,但密钥不在授权范围内,请尝试将其closures再打开。

从Xcode 发行说明 :

Xcode 8在构build时不会自动从configurationconfiguration文件中复制aps-environment权利。 这种行为是有意的。 要使用此授权,请在项目编辑器的“function”窗格中启用“推送通知”,或手动将授权添加到您的授权文件中。 (28076333)

这是一个巨大的变化,因为aps-环境权利不需要plist,而其他许多人却是这样。

对于那些不想盲目地按下“修复我”并且目前没有权利文件的用户,这只是一个plist文件,在您的项目的“生成设置”中的“代码签名授权”下引用,

经过了一天与Xcode 8的斗争,我们无法弄清楚为什么aps-environment开发没有添加到我们的debugging版本中。 在构build的应用程序的权利部分中没有进行debuggingtesting…即使我们已经启用了新的function和权利文件。 问题是需要在Xcode Build Settings for Debug Entitlements中为ANY SDK设置权利文件。

截图

自动管理签名关闭了我

自动pipe理签名已closures,我检查并为我工作正常。

我使用XCode 7.3.1从Apple获得了同样的电子邮件。 我做了什么来解决这个问题是:

  1. 在能力>下按@Bruce Tsai回答设置PUSH通知ON。
  2. 在“构build – 设置”>“代码签名”>“代码签名标识”下,设置开发人员证书以进行debugging,并为发布颁发证书,如图所示:

在这里输入图像说明