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

Uno*_*ome 115 xcode apple-push-notifications ios swift

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

亲爱的开发者,

我们发现您最近为APP_NAME发送了一个或多个问题.您的投放成功,但您可能希望在下次投放时更正以下问题:

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

纠正问题后,您可以使用Xcode或Application Loader将新二进制文件上传到iTunes Connect.

问候,

App Store团队

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

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

Uno*_*ome 151

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

  • 最近苹果必须聘请一些没脑子的人.为什么他们通过默认禁用事物并隐含地设置不适当的值而没有任何警告来减少开发人员的时间.我有一天在创建配置文件,证书,调试和其他恼人的东西时失去了.. (55认同)
  • 关于这个问题的奇怪之处不在于解决方案,事实是在Xcode 7上启用了它并且在升级之后它被禁用了. (4认同)
  • @bek注意你应该把它留作开发.上传到iTunes Connect后,它会自动更改为生产. (4认同)
  • 最后!这太荒谬了,让它变得如此艰难.我已经删除并重新创建了近5个小时的证书/配置文件.好消息是我可以说我完全理解这些证书/配置文件/标识符现在是什么:)谢谢你的提示. (3认同)
  • 我还必须进入权利文件并将“ APS环境”值更改为“生产”,因为在创建时默认将其设置为“开发”。 (2认同)

Bru*_*sai 83

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

能力


tim*_*son 28

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

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

对于大多数项目,应该足以切换推送通知,或者如果它已经打开但是密钥不在权利中,请尝试将其关闭再打开.

  • @meteors如果值是`development`应该没问题.在项目归档时,它将在ipa中更改. (6认同)
  • @AlbertBori奇怪,我只能用它来展示开发,这很好,因为当它存档时,它显示为"生产". (2认同)
  • @timgcarlson这在归档期间实际上不会发生.它在提交期间或导出时发生.还有一些有用的信息可以在这里正确设置:https://developer.apple.com/library/content/qa/qa1798/_index.html (2认同)

mat*_*ohe 27

来自Xcode 发行说明:

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

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

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


小智 13

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

截图


Rub*_*ben 7

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

  1. 在功能>设置PUSH通知ON,如@Bruce Tsai回答中所述.
  2. 在"构建设置">"代码签名">"代码签名标识"下,设置用于调试的开发人员证书和用于发布的分发证书,如图所示:

在此输入图像描述 在此输入图像描述


She*_*Ali 5

自动管理签名对我来说已关闭

自动管理签名对我来说是关闭的,我检查并为我工作正常。


Aar*_*sen 5

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