我有一个应用程序,我们已经提交了过去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:他们为推送通知编程指南提供的链接在电子邮件中被破坏了,所以这不是一个好兆头。
答案 0 :(得分:145)
实际上很容易。出于某种原因,它在Xcode 8上被禁用但是转到目标 - >功能和验证推送通知在该视图上都是正确的。对我来说,它有一个“修复我”,我不得不点击,瞧。
答案 1 :(得分:79)
答案 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设置权利文件。
答案 5 :(得分:6)
我使用XCode 7.3.1从Apple收到了同样的电子邮件。我为解决这个问题所做的是:
答案 6 :(得分:5)
如果您使用的是Firebase框架并且没有使用推送通知,则有两种解决方案1.只需提出问题'每次上传二进制文件时都会发送给整个团队的消息。只要您没有实际使用通知,您就可以忽略该警告,该应用仍会被接受为提交。或2.执行此操作:https://stackoverflow.com/a/46802075/7529450。这将删除烦人的电子邮件通知,并被接受为提交。
答案 7 :(得分:4)
答案 8 :(得分:4)
使用Xcode 9推送通知已启用。
我尝试停用/重新启用推送通知功能。 (没有工作)
我尝试停用/重新启用自动管理签名。 (没有工作)
原来我必须删除并重新添加我的配置文件。 (see here how to do it) 您可能必须在病房后禁用/重新启用自动管理签名。
答案 9 :(得分:2)
对我来说,问题是因为有两个授权文件:Entitlements-Debug.plist
和Entitlements-Release.plist
。而且其中只有一个(调试)需要设置。
将构建设置>签名>代码签名权利的多个值更改为单个MyAppName/MyAppName.entitlements
,然后重新启用功能>推送通知切换器,这对我来说很成功
希望有帮助。
答案 10 :(得分:0)
另一个可行的选择:将AppName/Entitlements-Debug.plist
的源粘贴到AppName/Entitlements-Release.plist
中。