缺less推送通知权利

我有一个应用程序提交时,它被拒绝,我得到的消息

缺less推送通知权利 – 您的应用程序似乎向Apple推送通知服务注册,但应用程序签名的权利不包含“aps-environment”权利。 如果您的应用程序使用Apple推送通知服务,请确保您的应用程序ID在供应门户中启用了推送通知,并在使用包含“aps-environment”权利的分发供应configuration文件签署应用程序后重新提交。

我检查了我的临时规定,然后在那里发现了aps-environment和production,但是当我打开我的分发configuration时,我没有发现这样的情况。

这是错误信息和苹果拒绝的原因,我该如何解决?

是的,这是App Store拒绝的原因。 如果您的ad-hoc供应configuration文件具有aps-environment密钥,这意味着您的应用在Apple Provisioning Portal中configuration正确。 您只需在本地计算机上删除App Store分发configuration文件,然后从Provisioning Portal重新下载并安装分发configuration文件即可。 这个新的应该包含aps环境密钥。

第一个应用程序ID

确保在生产端启用ID推送通知

如图中所示

在这里输入图像描述

第二个证书

从生产部分创build两个证书与您的id(启用推送通知)

App Store和Ad Hoc证书

Apple推送通知服务SSL(沙箱)证书

在这里输入图像描述

第三个configuration文件

从分发部分创buildapp storeconfiguration文件与您的ID

最后

当您上传垃圾箱时,您必须检查使用的configuration文件并拥有多个授权

在这里输入图像描述

这一切都会导致这个问题,希望这对你有所帮助

在XCode 8中,您需要在目标上的Capabilities选项卡中启用推送,并启用条款和证书上的所有内容: 提交时Xcode 8“应用程序签名中缺lessaps-environment权限”

我的博客文章在这里 。

我得到这个消息的原因不同 – 我通过Xcode提交了一个应用程序,而没有首先为应用程序创build一个App Store发布configuration文件。 我相信如果你已经安装了Xcode,Xcode会自动使用通配符App Storeconfiguration文件。 但一个应用程序使用推送通知需要自己的configuration文件。

解决的办法是为应用程序创build一个新的App Store发布configuration文件。 然后你下载它,拖到Xcode上,然后修改你的项目“生成设置”>“代码签名”>“发布”以使用新的configuration文件。

对于遇到此问题的用户,他们的应用中实际使用推送通知:

我们的推送证书最近即将到期,所以我们以苹果公司的标准方式创build了新的开发/推送推送证书(我不会在这里详细讨论这个问题,更新时有很多信息在networking上更新您的推送证书再使用一年)。

但是这样做后,这个问题就出现了。 无论我们做了什么,我们在提交我们的应用程序后收到了来自苹果的电子邮件。 当我们检查了Apple会员中心的Distribution Provisioning Profile的设置时,一切看起来都很顺利(对于prod / dev,我们的App ID都启用了Push,而且我们的分发configuration文件仍然连接到这个App ID,我们刚刚创build按照标准惯例,新的推送证书为一年)。

最后,这就是我最终解决的问题:

  1. 创build一个指向你的App ID的新的Distribution Provisioning Profile(保留当前的一个)
  2. 在Xcode中,通过设置>帐户>select您的帐户>详细信息>刷新您的供应configuration文件>单击刷新图标
  3. 手动为您的应用程序创build一个授权plist文件:
    • 文件菜单>新build文件…
    • selectiOS>资源>属性列表
    • 将新文件命名为“foo.entitlements”(通常,“foo”是目标名称)
    • 单击“权利文件”旁边的(+)添加顶级项目(由于文件扩展名,属性列表编辑器将使用正确的模式)
  4. 确保您的目标的Build Settings(目标>编译设置>search“授权”,在CODE_SIGN_ENTITLEMENTS中设置您刚创build的授权文件的path)中使用此授权文件,
  5. 确保Target中的configuration文件/代码签名身份正确设置为适当的分发configuration文件/签名身份(这应该是显而易见的)
  6. 我不是100%确定这是否影响到它(不应该因为目标设置覆盖项目设置,但是我这样做),请确保您的项目的供应configuration文件/签名身份匹配您的目标
  7. 在您创build的权利文件中,右键单击空文件并select“显示原始键/值”
  8. 在名为“aps-environment”的授权文件中添加一个新条目,并将其值设置为“production”
  9. 一个关键的注意事项,如果你以前使用的钥匙串访问组的权利,你也想在这里添加该密钥,因为由于某种原因,手动这样做时清除我。 确保值与先前版本中使用的值相同(您可以通过在pipe理器中查找以前的版本来find该值,尝试提交到app store,select您的团队,然后在提交应用之前点击旁边的箭头“(X)Entitlements”string来扩展权利并查看Keychain-Access-Group权利的价值。
  10. 将您的应用归档并尝试将其提交到最终的“提交”button。 您应该看到这个应用程序现在使用在成员中心创build的新configurationconfiguration文件构build。 现在取消。
  11. 返回到Apple会员中心,并删除在步骤1中创build的新configurationconfiguration文件。
  12. 回到Xcode中,重复步骤2再次刷新您的供应configuration文件列表。
  13. 现在再次存档您的应用程序,您应该看到应用程序是使用您想要使用的旧的分发configurationconfiguration文件构build的,并且正确地拥有aps-environment权限。 提交,你就完成了。

我知道这不像它应该有的详细,因为它应该有截图,我会尝试更新与截图,当我可以但目前我在时间紧缩,现在想要得到的jist我在那里做了什么。 也有一个很可能的机会,我列出的一些或大部分步骤是没有必要的,我把它们放在这里,因为我做了它们,可能导致了最终的解决scheme。

我还面临这个问题,即使我没有在我的应用程序中使用推送通知。制作新的configuration文件也没有为我工作。我做的是:

1.只为Ad hoc&App Store创build新的证书。

2.然后使用此证书制作分发configuration文件并将configuration文件与Xcode集成。

然后新提交的构build与这个configuration文件批准没有任何警告。

继续从@Vaiden给出的答案,在Xcode 8中,您可以通过select目标并单击“修复问题”来解决此问题。 当然,您仍然需要在Apple Developer Portal中设置推送通知(您可以使用新的“自动pipe理签名”选项来简化这一过程,这样可以节省下载configuration文件的麻烦)。

修复我的选择

检查您的应用程序ID是否推送启用或不在iOS上的developer.apple.com供应门户如果不是然后启用它,为您的应用程序IDconfiguration您的推送SSL证书下载它,并重新安装在您的钥匙串再次下载您的分布configuration文件安装在你的Xcode Liabrary

在我的情况下,即使我创build了一个myapp.profile并手动设置在xcode中,当我select“show in finder”并findembedded.mobileprovision并检查以确保文件中存在aps-environment时,错误是还在那儿。

然后我去了开发中心,发现XC:myapp.profile的状态是无效的。 我更新它,并安装了XC:myapp.profile,它工作正常。

我认为xcode试图pipe理configuration文件,当您提交您的二进制文件存储时,您需要检查configuration文件,并确保它是正确的。 而根据其他的答案,它可能是由于各种原因造成的,所以它可以真的很烦人。

更新:

一旦您使用下载的configuration文件进行了签名,并确认当您尝试提交到App Store时, aps-environment在那里,您应该能够将configuration文件和代码签名实体更改为自动和iOS Developer 。 希望在Xcode 7中可以改进。

这是为我固定的。 (我已经尝试打开/closuresfunction,重新创buildconfiguration文件等)。

在“ 生成设置”选项卡的“代码签名授权”中 ,我的.entitlements文件不是所有部分的链接。 一旦我将它添加到Any SDK部分,错误就解决了。

在这里输入图像描述

这突然发生在我身上,因为我的应用的分发configuration文件已经过期。 Xcode开始使用通配符configuration文件,而没有启用推送通知权利。 我没有收到任何警告。 修复很简单, 我只需在Apple Developer Member Center中为我的应用程序生成另一个分发configuration文件,下载它,然后双击安装到Xcode中。

这里有一些非常好的build议。

参考Mina提供的最后一个屏幕截图,在初始存档应用程序之后,在上传过程中提到的configuration文件包含通配符(XC。*)。 这是错误的。

为了解决这个问题,花了相当多的努力。 我必须执行Simon Woodside&Mina Fawzy提供的build议的组合。

如果您有与您的项目相关的任何现有的证书和供应configuration文件,现在将是一个很好的时间在本地删除它们,并远程撤销它们。 给自己一个新的开始。

Mina Fawzy的详细build议非常好。 执行Mina的build议,如果正确执行,应该在网上照顾你。

inputSimon的build议。 我需要检查我的项目内的两件事情。 使用XCode,去这里:

项目 – >build立设置 – >代码签名

查看代码签名标识供应configuration文件属性。 确保将这两个属性设置为项目名称的属性。 不要让XCode为你自动select,也不要使用一些通用的代码签名标识(例如Iphone Developer)。

确定您可以在决定归档之前将应用程序安装到您的设备上。

Capabilities启用“ Push Notification并重新创build所有证书后,我遇到的最大问题是目标名称和存储项目的文件夹名称由2个由空格分隔的string组成。 删除空间后,所有的工作就好了!

我有同样的问题,我的解决scheme是从目标 – >function添加推送通知权利。