142

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

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

我检查了我的临时配置,在那里我找到了 aps-environment 和 production 但是,当我打开我的分发配置时,我没有找到这样的。

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

4

18 回答 18

83

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

于 2013-02-11T06:59:55.520 回答
42

第一个应用 ID

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

如图所示

在此处输入图像描述

二级证书

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

App Store 和 Ad Hoc证书

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

在此处输入图像描述

第三个配置文件

从分发部分使用您的 ID创建App Store配置文件

最后

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

在此处输入图像描述

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

于 2015-07-16T08:12:06.277 回答
38

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

我的博客文章在这里

于 2016-09-21T14:21:16.450 回答
23

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

解决方法是为应用创建一个新的 App Store Distribution 配置文件。然后你下载它,把它拖到 Xcode 上,然后修改你的项目 Build Settings > Code Signing > Release 以使用新的配置文件。

于 2013-08-19T04:36:57.293 回答
12

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

修复我选项

于 2017-01-12T11:33:06.473 回答
9

对于遇到此问题但实际上在其应用程序中使用推送通知的用户:

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

然而,这样做之后,这个问题中的问题就出现了。不管我们做什么,在提交我们的应用程序后,我们都会收到来自 Apple 的这封电子邮件。当我们在 Apple 会员中心检查分发配置文件的设置时,一切看起来都很好(为 prod / dev 的 App ID 启用了推送,并且我们的分发配置文件仍然连接到这个 App ID,我们实际上只是创建了按照标准做法,新的推送证书再延长一年)。

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

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

我知道这并不像它应该有屏幕截图那样详细,我会尽可能用屏幕截图更新它,但目前我正处于时间紧缩状态,想了解一下我在那里做了什么。我列出的部分或大部分步骤也很有可能不是必需的,我将它们放在这里是因为我做了它们,它们可能已经导致了最终解决方案。

于 2015-09-23T21:11:01.133 回答
5

在 iOS 配置门户中的 developer.apple.com 上检查您的 App Id 是否已启用 Push 如果没有,则为您的 App Id 配置您的 Push SSL 证书在你的 Xcode 库中

于 2013-02-11T07:06:15.123 回答
4

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

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

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

然后新提交的带有此配置文件的构建被批准,没有任何警告。

于 2015-09-16T09:29:56.903 回答
4

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

Build Settings选项卡的Code Signing Entitlements中,我的.entitlements文件不是所有部分的链接。一旦我将它添加到 Any SDK 部分,错误就解决了。

在此处输入图像描述

于 2016-12-21T14:42:34.593 回答
3

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

于 2017-10-01T20:46:35.160 回答
3

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

于 2018-05-28T11:29:37.250 回答
3

FIX IDEA 嘿伙计们,所以我制作了一个应用程序并且没有使用任何推送通知功能,但我仍然收到一封电子邮件。在检查了我用来在苹果商店中创建我的应用程序的捆绑标识符的证书、ID 和配置文件后,在苹果开发者门户中连接我意识到推送通知已打开。

你要做的是:

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

希望能帮助到你!

于 2020-04-08T22:50:21.433 回答
2

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

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

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

更新:

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

于 2015-02-11T04:11:29.067 回答
2

我遇到了这个问题,因为我的权利文件由于以前的手动编辑而格式错误。我删除了格式错误的权利条目语法,然后我可以单击功能选项卡中的“修复”,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>
于 2019-11-22T14:33:00.687 回答
1

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

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

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

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

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

输入西蒙的建议。我需要在我的项目中检查两件事。使用 XCode,去这里:

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

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

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

于 2016-07-14T19:55:06.357 回答
1

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

于 2017-07-27T15:11:40.523 回答
1

在颤振中

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>
于 2021-04-16T04:59:10.143 回答
0

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

于 2015-08-31T19:23:35.867 回答