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


103

因此,我有一个名为Dripper的应用程序,大约一个月前发布了,几天前又进行了更新。此更新添加了推送通知和一些小调整。我使用开发配置文件在sandbox-apn上对其进行了测试,并且一切正常。然后,我将其切换到生产应用程序并将其推向试飞状态,再次一切正常。一旦我将更新发布到市场上并运行它,我注意到我在服务器上没有任何新的推送注册。我查看了设备的控制台日志,发现了这一点:

12月4日17:55:15 Ina-touch-it coffco [1210]:注册远程通知
12月4日17:55:15 Ina-touch-it SpringBoard [52]:未找到适用的有效“ 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}

我有点困惑,因为我认为在正式版和应用商店构建之间,Production-apn的功能相同。

这是我的应用程序ID及其权利-> http://i.stack.imgur.com/uf4pB.png

这是应用商店的配置文件-> http://i.stack.imgur.com/AYOV5.png


它在这里签名并上传-> i.stack.imgur.com/AziCI.png 构建设置-> i.stack.imgur.com/j2TFG.png
耶西阿

Answers:


282

我通过启用推送通知功能来解决此问题。

单击.xcodeproj->功能->启用推送通知


15
在XCode 8中,我在本节中看到一个错误,指出需要添加权利文件。我单击此按钮将其更正,然后效果正常。
佩莱特,2016年

开始使用Xcode 8进行开发时,直到最近才弹出​​该窗口,并对其进行了修复。谢谢!
Kody R.

以前在Xcode 7.3上工作,但突然未在Xcode 8上注册,但这通过启用推送通知功能解决了我的问题。
Vinod Rathod

苹果公司决定将此选项隐藏在Xcode 8.1的深处。请让我知道是否有人可以找到它。
托马斯·塞巴斯蒂安

我没有在功能列表中获得“推送通知”选项。这与XCode自动生成我的配置文件有关(我是iOS开发人员的新手,所以我可能是错的...)。我必须登录我的开发人员帐户并手动为我的应用程序创建一个配置文件,然后该应用程序在功能列表中显示“推送通知”。最后,启用它可以解决此问题。
马克斯·芒福德

103

我这样解决了这个问题:

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

然后再试一次!

资源:


6
那么您应该在Build Setting
Hashem Aboonajmi 2015年

2
就我而言,我需要在开发中心重新生成配置文件。然后通过Xcode>首选项>帐户>您的Apple ID>查看右上角的详细信息按钮>下载所有按钮,再次下载所有配置文件和证书。之后,它应该再次工作。
blackjacx

2
我感到很难过,在推送和部署过程中出现了许多小故障。我可以忍受的唯一方法是手动执行100%的所有操作,并知道Xcode尝试执行的操作,并在文件系统上通过iPhone配置实用程序管理钥匙串身份和配置文件。
汤姆·佩斯

57

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


18

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

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

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


我使用的配置文件是在为生产推送apn创建证书后创建的。我可以做些什么来确认它丢失或包含APNS信息吗?
耶西

@耶西(Jessiah):不。.就像我们必须遵循苹果提供的脚步一样。
Fahim Parkar 2014年

6

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

这是我要遵循的步骤:

1.创建配置文件

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

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

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

2.激活推送通知功能

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

4

使用iOS 8.0及更高版本存在相同的问题;我没有获得设备令牌,并且报错:“找不到适用于应用程序的有效'aps-environment'授权字符串”

我通过以下步骤修复了它

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

现在运行该项目肯定会成功。


3

由于某种原因,Wei的解决方案对我不起作用。单击“修订权利”时,Xcode生成了两个文件,但仍然无法运行,实际上,生成的权利文件为空。

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


1

我花了一段时间才弄清楚是什么原因导致没有有效的aps-environment授权错误。问题是XCode项目中有两个.entitlements文件。一个是platform / ios //。entitlements,另一个是platform / ios // Resources / .entitlements,只有在XCode配置为使用后者的情况下,相应的权利才存在于前一个文件中。我手动更新了后一个文件,一切开始工作。解决此问题的另一种方法是更改​​XCode使用的.entitlements。这可以在构建设置->签名->代码签名权利配置参数中完成。

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


-1

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

但是,我失败了一次,因为我已经登录了两个Apple帐户。卸下一个后,一切正常。

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.