我遇到了著名的错误:
无法获取 token ,错误:错误域= NSCocoaErrorDomain代码= 3000“没有为应用程序找到有效的'aps-环境'权利字符串” UserInfo = 0x413be0 {NSLocalizedDescription =没有为应用程序找到有效的'aps-环境'权利字符串}

我可以通过编辑以下文件来修复:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

并手动添加aps-environment密钥,如下所示:
<?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>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

然后,Xcode生成正确的Xcent文件,该文件包含位于以下位置的aps-environment密钥:
/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

并且在iPhone上运行该应用程序能够产生用于推送的设备 token 。
这是我发现解决此问题的唯一方法。
(如果遇到此错误,您可以将此信息用于自己的故障排除)

现在,我在另一个笔记本电脑上运行了同一个项目(与git同步),
与相同的Xcode版本4.6。
该问题在该笔记本电脑上不会发生
两台机器上的项目设置/配置文件等都100%相同。
(请相信我)

有没有人遇到过Xcode 4.6这样的问题?
我也应该在苹果公司的支持下开张罚单。

只是想知道是否还有另一个更优雅的解决方案。

更新:

上面的修复程序仅对于开发阶段就足够了,而对于发布来说则不足够。

最佳答案

覆盖默认Entitlements.plist的一种更优雅的解决方案是制作一个已编辑的默认Entitlements.plist的副本,并将其放入项目中。

然后,为您遇到问题的任何目标版本设置“代码签名权利”(在这种情况下,我已将其设置为“调试”)。

然后,应将此plist文件用于Debug版本(即,只需按Run即可),并且您的设备将向APNs开发服务器注册

10-05 21:48