缺少推送通知权利

时间:2013-02-11 06:43:15

标签: ios profile apple-push-notifications

我有一个应用程序提交被拒绝时我收到了消息

  

缺少推送通知权利 - 您的应用似乎已注册   使用Apple推送通知服务,但应用程序签名   权利不包括“aps-environment”权利。如果你的   应用程序使用Apple推送通知服务,确保您的应用程序ID   在Provisioning Portal中启用推送通知,然后重新提交   在使用分发配置文件签署您的应用程序之后   包括“aps-environment”权利。

我检查了我的ad-hoc provisiong,然后我找到了aps-environment和production,但是当我打开我的发行版配置时,我找不到这样的。

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

18 个答案:

答案 0 :(得分:73)

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

答案 1 :(得分:41)

  

第一个应用ID

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

如图所示

enter image description here

  

第二证书

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

App Store和Ad Hoc 证书

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

enter image description here

  

第三次配置文件

从“分发”部分创建带有您的ID

App Store 个人资料
  

最后

在上传垃圾箱时,您必须检查所使用的配置文件 并拥有许多权利

enter image description here

这种情况都会导致这个问题 希望这对你有所帮助

答案 2 :(得分:39)

在XCode 8中,除了启用条款和证书上的所有内容之外,您还需要在目标上的“功能”选项卡中启用“推送”: Xcode 8 "the aps-environment entitlement is missing from the app's signature" on submit

我的博客文章here

答案 3 :(得分:22)

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

修复方法是为应用创建新的App Store Distribution配置文件。然后下载它,将其拖到Xcode上,然后修改项目Build Settings>代码签名>发布以使用新的个人资料。

答案 4 :(得分:9)

根据@Vaiden给出的答案,在Xcode 8中,您可以通过选择目标并单击"修复问题"来解决此问题。当然,您仍然需要在Apple Developer portal中设置推送通知(您可以使用新的"自动管理签名"选项来简化流程,这可以节省您的时间下载配置文件的麻烦)。

Fix me option

答案 5 :(得分:8)

对于遇到此问题且实际在其应用中使用推送通知的人:

我们的推送证书最近即将到期,因此我们以Apple概述的标准方式创建了新的dev / prod推送证书(我不打算详细介绍这个,这里有很多信息)在更新推送证书以进行另一年使用时通过网络传播。)

然而,在这样做之后,这个问题突然出现了。无论我们做了什么,我们在提交应用程序后都会收到Apple发来的电子邮件。当我们在Apple会员中心检查我们的分配供应配置文件的设置时,一切看起来都很好(推送已为我们的prod / dev的应用程序ID启用,我们的分发配置文件仍然连接到此应用程序ID,我们确实刚刚创建标准做法是新推出的另一年证书。

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

  1. 创建一个新的分发配置文件,指向您的应用程序ID(保持当前状态)
  2. 在Xcode中,通过设置>刷新您的配置文件。帐户>选择您的帐户>详细信息>单击刷新图标
  3. 为您的应用手动创建权利plist文件:
    • 文件菜单>新文件......
    • 选择iOS>资源>物业清单
    • 将新文件命名为" foo.entitlements" (通常," foo"是目标名称)
    • 点击"权利文件"旁边的(+);添加顶级项目(由于文件扩展名,属性列表编辑器将使用正确的模式)
  4. 确保此权利文件用于目标的构建设置(目标>构建设置>搜索"权利",在CODE_SIGN_ENTITLEMENTS中设置您的权利文件的路径制造)
  5. 确保目标中的配置文件/代码签名标识已正确设置为适当的分发配置文件/签名标识(这应该是显而易见的)
  6. 我不能100%确定这是否会影响它(它不应该因为目标设置覆盖项目设置,但我仍然这样做了),请确保您的项目的配置文件/签名标识匹配您的目标
  7. 在您创建的权利文件中,右键单击空文件并选择"显示原始键/值"
  8. 在权利文件中添加一个名为" aps-environment"并将其设置为" production"
  9. 一个关键注意事项,如果您之前使用的是keychain-access-groups权利,那么您也希望在此处添加该密钥,因为出于某种原因,在手动执行此操作时,它已被清除。确保该值与之前版本中使用的值相同(您可以通过在管理器中查找以前的版本来找到该值,尝试提交到应用商店,选择您的团队,然后在提交应用之前点击旁边的箭头"(X)权利"字符串,用于扩展权利并查看keychain-access-group权利的价值。
  10. 归档您的应用并尝试将其提交到最终版本"提交"按钮。您应该会看到此应用程序现在使用您在成员中心创建的新配置文件构建。现在取消这个。
  11. 返回Apple会员中心并删除您在步骤1中创建的新配置文件。
  12. 返回Xcode,重复步骤2,再次刷新配置文件列表。
  13. 现在再次归档您的应用,您应该看到该应用是使用您想要使用的旧分发配置文件构建的,并且正确拥有了aps-environment权利。提交,您已完成。
  14. 我知道这不应该像应该的那样详细,因为它应该有截图,我会尝试用截屏更新它,但是暂时我现在正处于时间紧缩状态并希望得到我在那里所做的事情。很有可能我已经概述的部分或大部分步骤都没有必要,我将它们放在这里是因为我做了它们并且它们可能导致了最终的解决方案。 / p>

答案 6 :(得分:5)

检查您的应用ID是否已在iOS配置门户中的developer.apple.com上启用 如果未启用,请为您的App Id配置推送SSL证书下载, 然后在您的钥匙串中重新安装再次在Xcode Liabrary中下载您的Distrubution Profile安装

答案 7 :(得分:4)

即使我在我的应用中没有使用推送通知,我也面临着这个问题。新的配置文件对我来说也不起作用。我做了什么是: -

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

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

然后,在没有任何警告的情况下批准了此个人资料的新提交的版本。

答案 8 :(得分:2)

在我的情况下,即使我创建了一个myapp.profile并手动将其设置为xcode,当我选择“show in finder”并找到embedded.mobileprovision并检查以确保文件中存在aps-environment时,错误仍然存​​在。

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

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

更新:

在您使用下载的配置文件进行签名并确认当您尝试提交到aps-environmentApp Store存在时,您应该能够将配置文件和代码签名实体更改为自动和{ {1}}。希望它可以在Xcode 7中得到改进。

答案 9 :(得分:1)

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

构建设置标签中的代码签名权利中,我的 .entitlements 文件并非所有部分的链接。将其添加到Any SDK部分后,错误就解决了。

enter image description here

答案 10 :(得分:1)

要解决这个问题,我选择了一个expo'ejected'应用程序,我进入了功能选项卡,启用了push,然后再次禁用它。这从.entitlements文件中删除了APNS'权利'设置。

答案 11 :(得分:0)

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

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

为了解决这个问题需要付出相当大的努力。我不得不将Simon Woodside和他的建议结合起来。 Mina Fawzy提供。

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

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

输入Simon的建议。我需要在项目中检查两件事。使用XCode,请转到此处:

PROJECT - >构建设置 - >代码签署

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

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

Push Notification启用Capabilities并重新生成所有证书后,我遇到的最大问题是目标名称文件夹名称存储的位置项目由2个以空格分隔的字符串组成。移除空间后一切正常!

答案 14 :(得分:0)

我遇到了同样的问题,我的解决方案是从Target添加推送通知权利 - >能力。

答案 15 :(得分: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>

答案 16 :(得分:0)

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

您要做的是:

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

希望有帮助!

答案 17 :(得分:0)

在颤振中

您可以在 Runner.entitlements 下添加一个文件 ios/Runner,内容如下,创建后您的文件 parh 将类似于 ios/Runner/Runner.entitlements :

<?xml version="1.0" encoding="UTF-8"?>
<!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>
</dict>
</plist>