我遇到了著名的错误:
无法获取令牌,错误:错误域 = NSCocoaErrorDomain Code = 3000“找不到应用程序的有效'aps-environment'权利字符串”UserInfo = 0x413be0 {NSLocalizedDescription =没有找到应用程序的有效'aps-environment'权利字符串}
我能修复它通过编辑以下文件:
/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 上运行该应用程序可以生成用于推送的设备令牌。
这是我发现解决该问题的唯一方法。
(如果遇到此错误,您可以使用此信息进行自己的故障排除)
现在,我在另一台笔记本电脑上运行相同的项目(与 git 同步),
使用相同的 Xcode 版本 4.6。
这个问题确实不会发生在那台笔记本电脑上。
两台机器上的项目设置/配置文件等都是 100% 相同的。
(请相信我这一点)
有人在 Xcode 4.6 中遇到过这样的问题吗?
我或许也应该向苹果的支持部门开一张票。
只是想知道是否有另一个更优雅的解决方案可用。
Update:
上述修复仅适用于开发阶段,但不适用于发布阶段。