Xcode 4.6自动授权不起作用 - “没有有效的aps环境”

时间:2013-03-28 17:04:39

标签: ios push token xcode4.6

我得到了一个着名的错误:
无法获取令牌,错误:错误Domain = 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的问题?
我也许应该在Apple的支持下开一张票。

只是想知道是否还有其他更优雅的解决方案。

更新

上述修复仅适用于开发阶段,但不适用于发布。

1 个答案:

答案 0 :(得分:1)

覆盖默认Entitlements.plist的更优雅的解决方案是复制您编辑的默认Entitlements.plist,并将其放入项目中。

然后,为您遇到问题的目标构建设置代码签名权利(在本例中我将其设置为Debug)。

http://i.stack.imgur.com/mph9t.png

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