繁体   English   中英

在应用商店中找不到适用于应用程序的有效“aps-environment”权利字符串

[英]No valid 'aps-environment' entitlement string found for application on app store

所以我有一个名为 Dripper 的应用程序,我大约在一个月前发布了它,然后在几天前进行了更新。 该更新添加了推送通知和一些小调整。 我使用开发配置文件使用沙箱 apn 对其进行了测试,并且效果很好。 然后我将事情切换到 production-apn 并将其推送到试飞,再次一切正常。 一旦我在市场上发布更新并运行它,我注意到我没有在服务器上获得任何新的推送注册。 我查看了设备的控制台日志,发现了这个:

Dec 4 17:55:15 Ina-touch-it coffco[1210]:注册远程通知
12 月 4 日 17:55:15 Ina-touch-it SpringBoard[52]:找不到应用程序“Dripper”的有效“aps-environment”权利字符串:(空)。 将不会发送通知。
12 月 4 日 17:55:15 Ina-touch-it coffco[1210] <Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

我有点困惑,因为我认为生产 apn 在临时构建和应用商店构建之间的功能相同。

这是我的应用程序 ID 及其权利:

在此处输入图片说明

这是应用商店的配置文件:

在此处输入图片说明

我通过启用推送通知功能解决了这个问题。

点击 .xcodeproj -> Capabilities -> Enable Push Notification

我像这样解决了这个问题:

  • 转到Xcode“首选项”
  • 转到“帐户”选项卡
  • 选择我的 Apple ID,然后单击“查看详细信息”
  • 点击左下角的箭头刷新
  • 点击“完成”

然后再试一次!

来源:

您必须启用 Target-> 功能-> 推送通知。 我使用 Xcode 8 遇到过这个问题。 在此处输入图片说明

此类问题是由于当前的配置文件不包含 APNS 信息,因为配置文件是在创建 APNS 证书之前创建的。

因此,要解决此问题,请创建一个新的 Provisioning Profile 并在 Xcode 中选择 Provisioning Profile。 然后你就完成了。

另外,当您添加推送时,我相信您也更新了钥匙串中的证书。

关于 Xcode 9,一些答案已经过时或不完整,无法解决这个特定问题。

以下是我要遵循的步骤:

1. 创建配置文件

FCM 不是推送通知的先决条件,但他们的指南非常清楚,这是链接

要在开发过程中测试您的应用程序,您需要一个用于开发的配置文件来授权您的设备运行尚未在 App Store 上发布的应用程序。

  1. 导航到 Apple Developer Member Center 并登录。
  2. 导航到证书、标识符和配置文件。
  3. 在左上角的下拉菜单中,选择 iOS、tvOS、watchOS(如果尚未选择),然后导航到 Provisioning Profiles > All。
  4. 单击 + 按钮以创建新的配置文件。
  5. 选择 iOS App Development 作为配置文件类型,然后单击继续。
  6. 在下拉菜单中,选择您要使用的 App ID,然后单击继续。
  7. 选择您在上一步中选择的 App ID 的 iOS 开发证书,然后单击继续。
  8. 选择要包含在配置文件中的 iOS 设备,然后单击继续。 确保选择要用于测试的所有设备。
  9. 输入此配置文件的名称(例如 Firebase 示例应用程序开发配置文件),然后单击生成。
  10. 单击下载以将配置文件保存到您的 Mac。
  11. 双击 Provisioning Profile 文件进行安装。

2. 激活推送通知功能

  1. 官方手册转到项目编辑器在此处输入图片说明
  2. 在功能部分,激活推送通知在此处输入图片说明

用于添加推送通知功能的导航在更高版本的 Xcode 上略有变化。 这里使用 12.2

Xcode 12 添加通知功能说明

我在使用 iOS 8.0 及以上版本时遇到了同样的问题; 我没有得到设备令牌并给出错误:“没有为应用程序找到有效的‘aps-environment’权利字符串”

我使用以下步骤修复了它

  • 我为应用程序 ID 创建了新的配置文件
  • 将它添加到 xcode
  • 项目转到Xcode“首选项”
  • 转到“帐户”选项卡选择我的 Apple ID 并单击“查看详细信息”
  • 选择您的配置文件
  • 点击左下角的箭头刷新
  • 点击“完成”

现在运行该项目肯定会起作用。

出于某种原因,魏的解决方案对我不起作用。 当点击 Fix entitlements 时,Xcode 生成了两个文件,它仍然不起作用,确实生成的权利文件是空的。

这是由于项目的 PRODUCT_NAME 很长并且包含空格和“ä”和“ö”字母(显然)引起的。 将其更改为仅包含英文字母的简短版本后,Wei 的修复工作正常。

我花了一段时间才弄清楚是什么导致没有有效的 aps-environment 权利错误。 问题是 XCode 项目中有两个 .entitlements 文件。 一个是platform/ios//.entitlements,另一个是platform/ios//Resources/.entitlements,只有当XCode 配置为使用后者时,前一个文件中才会出现相应的权利。 我手动更新了后一个文件,一切都开始工作了。 解决此问题的另一个选择是更改 XCode 使用的 .entitlements。 这可以在 Build Settings --> Signing --> Code Signing Entitlements 配置参数中完成。

我不确定为什么 XCode 中有两个 .entitlements 文件。 难道是cordova push插件创建了第二个(我正在开发一个混合cordova移动应用程序)? .entitlements 文件的正确位置是什么?

我遇到了这个问题并用第一个解决方案解决了它。

但是,我失败了一次,因为我登录了两个苹果帐户。 删除一个后,一切都开始工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM