为应用程序找不到有效的“aps-environment”授权string

我试图configuration我的应用程序来支持推送通知,但不断得到这个错误:无法获得令牌,错误:错误域= NSCocoaErrorDomain代码= 3000“没有有效的'aps环境'授权stringfind应用程序”UserInfo = 0x1f818fc0 { NSLocalizedDescription =为应用程序find没有有效的“aps-environment”授权string}

  • 我确实启用了我的应用程序来支持推送通知(仅在此时进行开发)。
  • 我确实在启用推送通知后创build了configuration文件。
  • 我的包标识符与configuration文件中显示的相同。
  • 在我的configuration文件中有一个string:aps-environment
  • 我确保在“代码签名标识”部分下的项目和目标中,所有值都被select为我的预configuration文件。

还有什么想法? 谢谢。

就我而言,我的configuration文件中的东西:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision ... <key>application-identifier</key> <string>P5GM95Q9VV.com.dca.spolsky</string> <key>aps-environment</key> <string>development</string> 

与实际构build的应用程序中的内容不同(可以通过查看Xcode的“日志”选项卡find它的构build位置)

 codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app' <dict> <key>application-identifier</key> <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string> </array> </dict> 

即使 “代码签名标识”下的“当前匹配”提示文本显示正确的configuration文件 – 这很奇怪吗? 为了制作一个奇怪的故事,我运行时(设置 – >一般 – >configuration文件),正确的供应configuration文件被安装在设备上,导致我相信configuration文件是正确的 – 但它回落到通配符ID当应用程序实际上启动

线索是这两个命令输出的区别:

Y2X6Z7Z2GR .com.dca。 spolsky-ios vs P5GM95Q9VV .com.dca。 斯波斯基

当做粗体部分匹配时,斜体部分自动匹配。 此外,安全和协议的输出是一致的,没有更多的权利错误。

我的猜测是XCode在我的非通配符ID上使用了通配符风格的匹配。 (“spolsky”毕竟相当“spolsky-ios”),这就解释了“Currently Matches”输出。 但是构build链中的某些内容对此更加严格,因此在构build期间它会回落到实际的通配符ID

问题是由于当前Provisioning Profile不包含APNS信息,因为Provisioning Profile是创buildAPNS证书之前创build的。

因此,要解决该问题,请创build一个新的Provisioning Profile,然后在Xcode中selectProvisioning Profile将清除错误。

推送通知已经在我的设备上工作后,我也遇到了同样的问题。 看起来像Xcodecaching东西不正确,所以刷新它解决了我的问题:

  1. Xcode – >首选项 – >帐户
  2. 查看您开发者帐户的详细信息
  3. 只需点击几次刷新提供configuration文件。 每次刷新我都看到这些变化。 保持清爽,直到他们停止改变。

我得到这个错误,并没有创build一个新的configuration文件; 创build一个新的,然后不得不重新启动xCode,但现在的作品!

请注意,捆绑软件标识符必须以区分大小写的方式匹配供应configuration文件。 当com.firstlast.appname应该是com.FirstLast.appname时, 那么,这让我忙了很长一段时间。

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

select项目>目标>function>打开推送通知

检查图像

如果升级到Xcode 8后突然出现这个问题,你可能会在能力屏幕上发现一个警告,让你自动解决这个问题:

select项目>目标>function>打开推送通知

产品 – >清洁为我做了。 希望它为别人做。

我碰到这可能是一个非常频繁的用例。 我正在使用Xcode 6和iOS 8.我正在创build一系列全新的应用程序项目,并尝试重新使用相同的包ID,以免再次通过所有的门户端设置。 这也只是沙箱testing。

我会发现,虽然设置和注册将工作正常的第一个应用程序,如果我从设备删除该应用程序,设置相同的捆绑ID为第二个应用程序,然后尝试注册与该应用程序的PN,我会得到这个错误。

我的解决scheme是:

  1. 从设备中删除关联的供应configuration文件。
  2. 从Xcode中删除关联的configuration文件。
  3. closuresXcode
  4. 双击我下载的.mobileprovision文件,将其重新安装到Xcode中
  5. 打开项目并部署它。

这种方法似乎放松了以前的任何状态,我可以使用新的应用程序/相同的套件ID注册PN。

对于那些在ios 10中出现这个错误的人,可以尝试以下步骤:

1.清理你的项目。
2.并检查目标 – >function – >推送通知。如果它closures,就可以了。

问题将解决。以上步骤帮助我摆脱这个问题。 希望对某人有帮助。

新的configuration文件为我工作。 如果您正在开发中,请确保使用Developer Profile(不要使用Ad Hoc)。 那之后就没事了,不知道为什么老人停止了工作。