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

时间:2016-09-18 04:40:26

标签: ios swift xcode apple-push-notifications

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

  

亲爱的开发人员,

     

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

     

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

     

纠正问题后,您可以使用Xcode或Application   将新二进制文件上载到iTunes Connect的加载程序。

     

此致

     

App Store团队

奇怪的是我去了 developer.apple.com - > 证书,标识符&配置文件和我的AppId确实启用了推送通知。我没有做任何不同的事情然后我做过它所以​​很好奇,如果Xcode 8更新破坏了什么。有任何想法吗?

BTW:他们为推送通知编程指南提供的链接在电子邮件中被破坏了,所以这不是一个好兆头。

11 个答案:

答案 0 :(得分:145)

实际上很容易。出于某种原因,它在Xcode 8上被禁用但是转到目标 - >功能和验证推送通知在该视图上都是正确的。对我来说,它有一个“修复我”,我不得不点击,瞧。

答案 1 :(得分:79)

我也遇到同样的问题,我确信Xcode8默认关闭Push通知。我没有注意到它。小心一点。

capability

答案 2 :(得分:27)

Xcode 8发生了变化,您的权利不再来自应用标识符,而是来自应用目标中选择的功能。因此,像Unome(OP)所说,你必须验证Push Notifications是否已打开。

对我来说,这不是一个"修复我"按钮,但我有两个权利文件(一个用于开发,一个用于分发)。切换推送通知功能会将aps-environment密钥(值为development)添加到开发权利文件中,但不会将其添加到分发权利文件中。将相同的密钥复制到分发时,可以在上传到iTunes Connect时删除警告电子邮件。

对于大多数项目,只需切换推送通知,或者如果它已经打开但权利不在权利中,请尝试将其关闭再打开。

答案 3 :(得分:27)

来自Xcode release notes

  

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

这是一个很大的改变,因为aps-environment权利不需要plist,但很多其他人都这样做,这总是很奇怪。

对于那些不想盲目按“修复我”并且当前没有权利文件的人,它只是一个plist文件,在项目的“构建设置”下的“代码签名权利”中引用

答案 4 :(得分:12)

经过一天与Xcode 8的斗争后,我们无法弄清楚为什么aps-environment开发没有添加到我们的调试版本中。它在构建的应用程序的权利部分中缺少用于调试测试......即使我们已经启用了新的功能和权利文件。问题是需要在Xcode Build Settings for Debug Entitlements中为任何SDK设置权利文件。

screenshot

答案 5 :(得分:6)

我使用XCode 7.3.1从Apple收到了同样的电子邮件。我为解决这个问题所做的是:

  1. 功能不足>按照@Bruce Tsai回答中的说明设置PUSH通知。
  2. 在构建设置>下;代码签名>代码签名标识设置用于调试的开发人员证书和用于发布的分发证书,如图所示:
  3. enter image description here enter image description here

答案 6 :(得分:5)

如果您使用的是Firebase框架并且没有使用推送通知,则有两种解决方案1.只需提出问题'每次上传二进制文件时都会发送给整个团队的消息。只要您没有实际使用通知,您就可以忽略该警告,该应用仍会被接受为提交。或2.执行此操作:https://stackoverflow.com/a/46802075/7529450。这将删除烦人的电子邮件通知,并被接受为提交。

答案 7 :(得分:4)

Automatically manage signing was off for me

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

答案 8 :(得分:4)

使用Xcode 9推送通知已启用。

我尝试停用/重新启用推送通知功能。 (没有工作)

我尝试停用/重新启用自动管理签名。 (没有工作)

原来我必须删除并重新添加我的配置文件。 (see here how to do it您可能必须在病房后禁用/重新启用自动管理签名

答案 9 :(得分:2)

对我来说,问题是因为有两个授权文件:Entitlements-Debug.plistEntitlements-Release.plist。而且其中只有一个(调试)需要设置。

构建设置>签名>代码签名权利的多个值更改为单个MyAppName/MyAppName.entitlements,然后重新启用功能>推送通知切换器,这对我来说很成功

希望有帮助。

答案 10 :(得分:0)

另一个可行的选择:将AppName/Entitlements-Debug.plist的源粘贴到AppName/Entitlements-Release.plist中。