为应用程序找不到有效的“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东西不正确,所以刷新它解决了我的问题:
- Xcode – >首选项 – >帐户
- 查看您开发者帐户的详细信息
- 只需点击几次刷新提供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是:
- 从设备中删除关联的供应configuration文件。
- 从Xcode中删除关联的configuration文件。
- closuresXcode
- 双击我下载的
.mobileprovision
文件,将其重新安装到Xcode中 - 打开项目并部署它。
这种方法似乎放松了以前的任何状态,我可以使用新的应用程序/相同的套件ID注册PN。
对于那些在ios 10中出现这个错误的人,可以尝试以下步骤:
1.清理你的项目。
2.并检查目标 – >function – >推送通知。如果它closures,就可以了。
问题将解决。以上步骤帮助我摆脱这个问题。 希望对某人有帮助。
新的configuration文件为我工作。 如果您正在开发中,请确保使用Developer Profile(不要使用Ad Hoc)。 那之后就没事了,不知道为什么老人停止了工作。