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


118

我有一个应用程序,在过去6个月中我们提交了数十个版本,并且我们确实使用了APNS。升级到Xcode 8后,我从Apple收到了以下电子邮件

亲爱的开发人员,

我们发现您最近为APP_NAME交付商品时遇到一个或多个问题。您的交付成功,但是您不妨在下一次交付中更正以下问题:

缺少推送通知权利-您的应用程序包含Apple的推送通知服务的API,但该应用程序的签名中缺少aps环境权利。要解决此问题,请确保在Provisioning Portal中为推送通知启用了您的App ID。然后,使用包含aps-environment权利的发行配置文件对您的应用程序进行签名。这将创建正确的签名,您可以重新提交您的应用程序。有关更多信息,请参见《本地和推送通知编程指南》中的“ Provisioning and Development”。如果您的应用程序不使用Apple Push Notification服务,则无需采取任何措施。您可以从以后的提交中删除该API,以停止此警告。如果您使用第三方框架,

解决问题之后,可以使用Xcode或Application Loader将新的二进制文件上载到iTunes Connect。

问候,

App Store团队

奇怪的是我去了developer.apple.com- > 证书,标识符和配置文件,而我的AppId确实仍启用了推送通知。我没有做任何其他的事情,所以我对Xcode 8更新是否有问题感到好奇。有任何想法吗?

顺便说一句:他们在“推送通知编程指南”中放置的链接在电子邮件中已损坏,因此不是一个好兆头。

Answers:


156

实际上非常容易。由于某种原因,它在Xcode 8上被禁用,但是转到Targets-> Capabilities并验证Push Notifications在该视图上是否正确。对我来说,它必须单击“ Fix Me”,然后瞧。


4
关于此问题的奇怪之处不是解决方案,而是在Xcode 7上启用了该功能,在升级后将其禁用的事实。
Unome

2
我还必须进入权利文件并将APS Environment值更改为“ production”,因为在创建时默认将其设置为“ development”。
Bek 2016年

61
苹果公司最近一定雇用了一些无头脑的人。他们为什么通过默认禁用某些功能并隐式设置不适当的值而没有任何警告的方式来浪费开发人员的时间。我在创建配置文件,证书,调试和其他讨厌的东西失去的一天..
里斯托·阿塔纳索夫

3
最后!这太荒谬了,使其难以工作。我已经删除并重新创建了证书/配置文件将近5个小时。好消息是,我可以说我现在完全理解这些证书/配置文件/标识符是什么:)谢谢您的提示。
卡米尔·瑞考斯基

4
@bek注意,您可能应该将其保留为开发。上传到iTunes Connect后,它会自动更改为生产版本。
蒙迪迪尔

84

我也有同样的问题,并且我确定在Xcode8中默认情况下,推送通知处于关闭状态。我没注意到 小心点

能力


您能告诉我为什么我的帐户中没有推送通知部分吗?
Anuj

28

Xcode 8发生了变化,您的权利不再来自应用程序标识符,而是来自应用程序目标中选择的功能。因此,就像Unome(OP)所说的那样,您必须验证“推送通知”是否已打开。

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

对于大多数项目,打开“推送通知”应该足够了,或者如果已经打开但该键不在授权中,请尝试将其重新打开。


这是我所在的船,除了无论我在.entitlements文件中为当前config / scheme 指定什么内容,它始终production用作aps-environment
阿尔伯特·博里

切换“功能中的推送通知”会使我的Xcode 8崩溃!
djay 2016年

2
@AlbertBori Weird,我只能将其显示为开发,这很好,因为在存档时它显示为production
timgcarlson

6
@meteors如果值为,应该可以development。归档项目后,它将在ipa中进行更改。
timgcarlson

2
@timgcarlson归档期间实际上不会发生。它在提交期间或导出时发生。还有一些有用的信息来检查它是否在这里正确设置:developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

从Xcode 发行说明

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

这是一个很大的变化,因为aps-environment权利不需要plist总是很奇怪,但是其他许多人却没有。

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


1
我在链接的注释中找不到该报价!
Iulian Onofrei

我不知道谁支持我的评论以及出了什么问题,但现在也可以找到它。
Iulian Onofrei'2

13

经过一天的Xcode 8努力,我们无法弄清为什么未将aps-environment开发内容添加到我们的调试版本中。即使我们已启用了新的功能并且存在权利文件,但在用于调试测试的内置应用程序的“权利”部分中缺少该功能…… 问题是,需要在“调试权限”的“ Xcode构建设置”中为ANY SDK设置权限文件。

屏幕截图


我认为为Debug键设置值和为Debug> 设置值之间没有任何区别Any SDK,因为后者用于覆盖特定SDK的值。
Iulian Onofrei

这是我的解决方案
Himanth,2016年

经过一整天的努力,这也是我遇到的问题。切换功能,生成配置文件,但没有一个起作用。做到了。
Dave S

在某些情况下,这在Xcode 8.3.3上仍然是有效的解决方案
dan

我希望我可以对此进行一百万次投票。我已经挣扎了一个星期,这就是解决方案。仅在顶部的“代码签名权利”中输入文件路径是不够的,还必须在“任何SDK”部分中完成。这是为我解决问题的关键。
罗伯特·本特利

7

我使用XCode 7.3.1从Apple收到了相同的电子邮件。我要解决的问题是:

  1. 在功能下>按@Bruce Tsai答案中所述,将“推送通知”设置为“开”。
  2. 在构建设置>代码签名>代码签名身份下,将开发人员证书设置为调试,将发行证书设置为发布,如图所示:

在此处输入图片说明 在此处输入图片说明


嗨,在“功能”中,我没有获得“功能”>“设置推送”通知
-Anuj,

@Anuj,我添加了一个屏幕截图,该截图应位于您的Xcode中。
鲁宾

5

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


4

自动管理签名对我而言已关闭

对我来说,自动管理签名功能不可用,我检查后就可以正常使用了。


3

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

我尝试禁用/重新启用推送通知功能。(没用)

我尝试禁用/重新启用“ 自动管理签名”。(没用)

原来,我必须删除并重新添加我的配置文件。(请参阅此处的操作方法。您可能必须禁用/重新启用病房后自动管理签名


2

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

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

希望能帮助到你。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.