缺少推送通知权利


126

我有一个要提交的应用,当它被拒绝并且收到消息时

缺少推送通知权利-您的应用程序似乎已在Apple推送通知服务中注册,但应用程序签名的权利不包括“ aps-environment”权利。如果您的应用程序使用Apple Push Notification服务,请确保在Provisioning Portal中为您的Push ID启用了您的App ID,并在使用包含“ aps-environment”权利的Distribution Provisioning配置文件对您的应用程序进行签名后重新提交。

我检查了临时配置,然后在其中找到了aps环境和生产环境,但是当我打开分配配置时,却没有找到。

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

Answers:


80

是的,这就是App Store被拒绝的原因。如果您的临时配置文件具有aps-environment密钥,则意味着您的应用程序已在Apple Provisioning Portal中正确配置。您需要做的就是删除本地计算机上的App Store分发配置文件,然后从Provisioning Portal重新下载并安装分发配置文件。此新密钥应包含aps环境密钥。


只是为了消除更多的迷雾,它明确指出“分发配置文件中必须包含aps环境等”,并且当我在文本编辑器中打开配置时,我应该发现它位于其中……
mirageservo

我是否需要生成一个新的ssl证书,特别是当我从分发配置文件中更改了某些内容时?
mirageservo

2
不,不需要新的开发人员证书。当您启用了推送通知的分发功能(由于临时配置文件具有aps-environment密钥,您必须完成某些操作)后,iTunes Provisioning Portal会生成一个新的应用商店分发配置文件,其中包含aps-environment密钥。您可能刚刚下载并安装了最新版本。
汤姆(Tom)

在这个问题传到银河之前,还有一件事,我是否需要重新编译(重新存档)ipa,因为项目构建设置可能会发生变化,或者我可以直接分发该应用程序而无需打扰重新编译?
mirageservo

您需要重新存档。与该应用程序关联的供应配置文件被嵌入到.ipa中。
汤姆(Tom)

43

第一个应用程序ID

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

如图所示

在此处输入图片说明

第二证书

从生产部分创建两个具有您的ID的证书(启用推送通知)

App Store和特别证书

Apple Push Notification服务SSL(沙盒)证书

在此处输入图片说明

第三配置概要

在“分发”部分,使用您的ID 创建App Store个人资料

最后

在上载bin时,必须检查使用了什么配置配置文件并拥有许多权利

在此处输入图片说明

所有这些情况都会导致此问题,希望对您有帮助


1
这就是我所缺少的。我必须在Apple开发人员站点中使用带有推送通知的App ID创建新的配置文件。使用新的配置文件,最终将aps-environment权利添加到了我的应用程序中。谢谢!
M.路易莎·卡里昂

38

在XCode 8中,您需要在目标上启用“功能”选项卡中的推送,然后再启用条款和证书上的所有内容: Xcode 8“提交时,应用程序签名中缺少aps环境权利”

我的博客文章在这里


8
这就是经典的苹果。在我提交构建文件的两个小时后,他们发送了一个关于我已经解决很久的问题的错误消息(在开发门户中启用了推送通知应用程序服务),并通过404链接进行了解释。然后事实证明问题是他们在升级到新版本的软件(我已锁定)时没有迁移我的设置。啊。
林布兰特·爱因斯坦

3
同样的故事。我们几乎将错误消息视为Apple错误。
Vaiden

23

我收到此消息的原因有所不同-我通过Xcode提交了一个应用程序,而没有先创建专门针对该应用程序的App Store分发配置文件。如果您已安装Xcode,我相信Xcode会自动使用通配符App Store配置文件。但是使用“推送通知”的应用需要其自己的配置文件。

解决方法是为该应用创建新的App Store分发配置文件。然后下载它,将其拖到Xcode上,然后修改项目的“构建设置”>“代码签名”>“发布”以使用新的配置文件。


11

根据@Vaiden给出的答案,在Xcode 8中,您可以通过选择目标并单击“修复问题”来解决此问题。当然,您仍然需要在Apple Developer门户中设置推送通知(您可以使用新的“自动管理签名”选项稍微简化一下过程,从而省去了下载配置文件的麻烦)。

修复我的选项


8

对于那些实际上在其应用程序中使用推送通知的人,请执行以下操作:

我们的推送证书最近即将到期,因此我们以Apple概述的标准方式创建了新的dev / prod推送证书(我在这里不做详细介绍,更新时网络上有很多信息。您的推送证书可以再使用一年)。

但是,这样做后,此问题中的问题弹出了。无论我们做什么,我们都会在提交我们的应用程序后收到Apple发出的这封电子邮件。当我们在Apple Member Center中检查分发配置文件的设置时,一切看上去都很好(为prod / dev启用了我们的App ID的推送,并且分发配置文件仍与该App ID连接,我们实际上只是创建了按照标准惯例,将新的推证书进行一年。

最后,这就是为我解决的最终结果:

  1. 创建一个指向您的应用程序ID的新分发配置概要文件(保持当前状态不变)
  2. 在Xcode中,通过设置>帐户>选择您的帐户>详细信息>单击刷新图标来刷新配置文件
  3. 手动为您的应用程序创建一个授权plist文件:
    • 文件菜单>新建文件...
    • 选择iOS>资源>属性列表
    • 将新文件命名为“ foo.entitlements”(通常,“ foo”是目标名称)
    • 单击“权利文件”旁边的(+)以添加一个顶级项目(由于文件扩展名,属性列表编辑器将使用正确的架构)
  4. 确保在目标的“构建设置”中使用了此权利文件(“目标”>“构建设置”>“搜索“权利”,在CODE_SIGN_ENTITLEMENTS中设置您刚刚创建的“权利”文件的路径)
  5. 确保将Target中的配置文件/代码签名身份正确设置为适当的分发配置文件/签名身份(这很明显)
  6. 我不确定100%是否会影响它(因为Target设置会覆盖项目设置,所以不应该这样做,但是我还是这么做了),请确保您Project的配置文件/签名身份与Target的配置文件匹配
  7. 在您创建的权利文件中,右键单击空白文件,然后选择“显示原始键/值”
  8. 在名为“ aps-environment”的权利文件中添加一个新条目,并将其值设置为“ production”
  9. 一个主要注意事项,如果您以前使用过keychain-access-groups授权,那么您也想在此添加该关键,因为由于某些原因,手动执行此操作时会为我清除该关键。确保该值与先前版本中使用的值相同(您可以通过在Organizer中找到先前版本,尝试提交到应用商店,选择您的团队来找到该值,然后在提交应用之前,点击“(X)授权”字符串可扩展授权并查看keychain-access-group授权的值。
  10. 存档您的应用程序,然后尝试将其提交到最终的“提交”按钮。您应该看到该应用程序现在使用您在成员中心中创建的新配置文件构建。立即取消。
  11. 返回Apple会员中心并删除您在步骤1中创建的新的配置文件。
  12. 返回Xcode,通过重复步骤2再次刷新您的配置文件列表。
  13. 现在再次存档您的应用程序,您应该看到该应用程序是使用您要使用的旧发行配置文件构建的,并且正确具有aps-environment权利。提交即可完成。

我知道这没有应有的屏幕快照那么详细,我会尽可能尝试用屏幕快照更新它,但暂时我正处于时间紧缺的状态,想获得我在那里所做的。还有很可能没有必要概述我所概述的某些或大多数步骤,因为我做了这些步骤,所以将它们放在这里,它们可能导致了最终解决方案。


谢谢。对我来说#8已设置为发展,这可能是我们的问题。
致词

非常感谢,浪费了整整一整天的时间,第4步是问题所在,由于某种原因,未指定CODE_SIGN_ENTITLEMENTS,仅在应用商店上传时就忽略了权利。
马克·卡扎科夫

5

在iOS Provisioning Portal中的developer.apple.com上检查您的应用程序ID是否已启用推送(如果尚未启用),请为您的应用程序ID配置您的推送SSL证书,然后下载并重新安装在钥匙串中,然后再下载您的分发配置文件在您的Xcode库中


4

即使我根本没有在应用程序中使用推送通知,我也面临着这个问题。创建新的配置文件对我也不起作用。我所做的是:-

1.仅为Ad hoc和App Store创建新的新证书。

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

然后,在没有任何警告的情况下批准此配置文件的新提交的构建。


2
我试过了-没有帮助。仍然得到缺少的推送通知的东西..我不使用推送通知!
亚当

2

就我而言,即使我创建了myapp.profile并手动在xcode中进行设置,当我选择“在finder中显示”并找到了Embedded.mobileprovision并检查以确保文件中存在aps环境时,错误是还在那里。

然后,我去了开发人员中心,发现XC的状态:myapp.profile无效。我更新了它并安装了XC:myapp.profile,它运行良好。

我认为xcode正在尝试管理配置文件,并且在提交二进制文件进行存储时需要检查配置文件,并确保它是正确的配置文件。并且根据其他答案,它可能是由于各种原因引起的,因此可能确实很烦人。

更新:

使用下载的配置文件签名并确认aps-environment要提交到App Store的配置文件后,您应该可以将配置文件和代码签名实体更改为自动和iOS Developer。希望可以在Xcode 7中对其进行改进。


我已经检查了所有配置文件,并且还检查了XC:配置文件已更新,它不包含任何asp环境密钥,但我仍然一次又一次遇到相同的问题。任何帮助将不胜感激。是的,我不需要在应用程序中实现任何推送通知
iOSDev

您可以通过检查配置文件的二进制内容来确保是否看到字符串“ aps-environment”是否在其中吗?如果它位于内部,则需要找到某种方法来摆脱它,否则,您需要确保该配置文件是与您的应用程序签署时使用的配置文件。无论哪种方式都必须有一个问题。
superarts.org 2015年

1
我已经检查了两次,尝试找出更多但没有运气。没有这样的字符串,但是经过2天的搜索和尝试后,我得到一件事,即此问题与Xcode 7 beta无关,而与我的代码无关:)通过Xcode 6.4进行的相同构建完全正常,并且苹果没有电子邮件报告该问题。问题,所以问题出在Xcode 7 beta 4而不是代码或配置文件。
iOSDev

2

这就是为我解决的问题。(我已经尝试过打开/关闭功能,重新创建配置文件等)。

在“ 构建设置”选项卡的“代码签名权利”中,并非所有部分都链接我的.entitlements文件。将其添加到“任何SDK”部分后,该错误已解决。

在此处输入图片说明


2

为了解决博览会“退出”应用程序的问题,我转到功能选项卡,启用了推送,然后再次禁用了它。这从.entitlements文件中删除了APNS的“权利”设置。


在我的“弹出”项目上尝试了此操作,但仍然收到这些通知
webdevbyjoss


0

这突然发生在我身上,因为我的应用程序的分发配置文件已过期。Xcode开始改用通配符配置文件,该配置文件未启用推送通知权利。我没有收到任何警告。解决方法很简单;我只需要在Apple Developer Member Center中为我的应用程序生成另一个分发配置文件,下载它,然后双击以在Xcode中安装即可。


0

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

参考Mina提供的最后一个屏幕截图,在最初存档我的应​​用程序之后,上传期间提到的配置概要文件包含通配符(XC。*)。错了

为了解决这个问题,付出了相当大的努力。我必须将Simon Woodside和Mina Fawzy提供的建议进行组合。

如果您有与项目相关的任何现有证书和配置文件,那么现在是将其全部删除并远程吊销它们的好时机。给自己一个全新的开始。

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

输入西蒙的建议。我需要检查项目内部的两件事。使用XCode,请转到此处:

项目->建筑设置->代码签名

查看代码签名身份供应配置文件属性。确保将这两个属性设置为项目名称的属性。不允许XCode为您自动选择,也不要使用某些通用代码签名身份(例如Iphone Developer)。

在决定存档之前,请确保可以将应用程序实际安装到设备上。


0

最大的问题,我启用后,有Push Notification来自Capabilities和改造的所有证书是,目标名文件夹名,其中储存的项目从2串组成由空格隔开。删除空间后,一切正常!


1
我的应用程序未使用推送通知,但仍然从苹果收到此警告。请建议
月光

0

我遇到了这个问题,因为由于以前的手动编辑,我的权利文件格式错误。我删除了格式错误的权利输入语法,然后可以在功能选项卡中单击“修复”,然后Xcode将权利添加到我的文件中。

以下是格式正确的权利文件(“ Runner.entitlements”)的示例:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

0

FIX IDEA 嗨,大家好,我做了一个应用程序,没有使用任何推送通知功能,但我仍然收到一封电子邮件。在检查了用于在Apple Store中创建我的应用程序的包标识符的ID,ID和配置文件的证书后,我在Apple Developer Portal中发现了推送通知已打开。

您要做的是:

转到Apple开发人员登录站点,您也可以在其中管理证书2.选择右侧的“证书,ID和配置文件”选项卡3.现在选择“标识符” 4.以及列表右侧的捆绑软件ID 5.现在向下滚动直到看到推送通知6.将其关闭。7.存档您的内部版本并将其重新上传到Apple Store Connect

希望能帮助到你!

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.