Jul*_*anB 68 xcode push settings.bundle ios-provisioning
我已经阅读了xcode从哪里获取应用程序的标识符?,来自{PRODUCT_NAME}的XCode包标识符格式,并加载更多但......
我正在尝试推送推送通知并让人感到害怕
"Error Domain = NSCocoaErrorDomain Code = 3000"找不到有效的'aps-environment'权利字符串,用于应用程序"UserInfo = 0x15b200 {NSLocalizedDescription = no valid'atps-environment'权利字符串找到应用程序}"错误.
我很确定我已经正确地遵循了所有步骤,包括:
唯一认为我无法理解的是Bundle Identifier
推送证书适用于
XXXXXXXXXX.com.julianbaker.pwcnewsuk
Run Code Online (Sandbox Code Playgroud)
PwCNewUK-Info.plist中的Bundle Indentifier用于
com.julianbaker.${PRODUCT_NAME:rfc1034identifier}
Run Code Online (Sandbox Code Playgroud)
如果我手动将其更改为
com.julianbaker.pwcnewsuk
Run Code Online (Sandbox Code Playgroud)
我得到一个UDID不匹配错误,因为该应用程序被视为PwCNewsUK
当我用谷歌搜索这个问题似乎有些混乱,但它似乎必须匹配?
题:
Bundle Indentifer应该与
XXXXXXXXXX.com.julianbaker.pwcnewsuk 的推送证书相匹配?
题:
我是否需要为配置文件添加"aps-environment"权利,如果是,在何处以及如何添加?(参见http://www.airplaysdk.com/node/3174等)
喜欢iPhone开发,但有时它可能是一个headbanger!
J.R*_*ong 88
当我从一个开发环境转移到我正在处理的应用程序上的生产环境时,我发现了这个问题.此过程涉及创建新配置文件,新应用程序ID等.我创建了应用程序ID和配置文件,但团队代理必须配置推送通知.当我尝试使用新配置文件恢复测试时(在为推送通知配置应用程序之后),我遇到了"为应用程序找不到有效'aps-environment'权利字符串"的问题.然后我记得在文档中读到一点警告:
"您必须以某种方式修改配置文件(例如,切换选项)以便门户生成新的配置文件.如果配置文件不那么"脏",您将获得没有推送权限的配置文件. "
来源:本地和推送通知编程指南
对我来说,"弄脏"供应配置文件并重新安装它是解决问题所需的全部内容.根据文档,这是必需的,因为配置文件是在为推送通知配置应用程序之前创建的.这可能会或可能不会帮助任何人,但这可能解释(并消除)手动向配置文件添加任何内容的需要.
ozz*_*ozz 20
我遇到了相同的"无效'aps-environment'权利字符串找到应用程序"问题,但上述解决方案对我不起作用.
我找不到关于这个错误甚至只是关键"aps-environment"的非常好的文档.
经过一些修修补补,这就解决了我的问题:
使用文本编辑器打开开发配置证书"Appname.mobileprovision",查找密钥"Entitlements",然后将此处找到的所有值添加到Code Signing Entitlements设置引用的Entitlements文件中.
以下是您可以在其中找到的键/值的示例:
<key>application-identifier</key>
<string>xyz.com.xyz.xyz</string>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>xyz.*</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>xyz.*</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>xyz.*</string>
</array>
Run Code Online (Sandbox Code Playgroud)
将所有这些值添加到我的Entitlements文件后,我的应用程序成功构建,我终于可以回到Push Notifications上.
我不确定这些值是否应该由XCode自动添加到您的权利文件中,但它们肯定不会在我的项目中为我生成.
建立:
Mac OS X 10.8 + Xcode 4.4
我的简单方案:
xcuserdata文件夹.关于该问题的一些提示:
激活我的应用程序的推送通知后,我突然无法再创建临时文件.我尝试安装我的应用程序时,在我的iPhone上的控制台日志中遇到错误:
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr 1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client
Run Code Online (Sandbox Code Playgroud)
有一些技术说明建议codesign -d --entitlements - <YourAppName>.app用于检查您的应用是否已正确签署Apple推送通知.如果codesign命令的输出没有设置为生产或开发的aps环境,那就有些可疑了!
据我所知,到目前为止,我使用adhoc配置文件签名的应用程序总是embedded.mobileprovision在<YourAppName>.app文件夹内部包含特定部分,例如:
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.*</string>
</array>
</dict>
Run Code Online (Sandbox Code Playgroud)
在使用了codesign之后,我意识到实际的二进制文件中<YourAppName>.app也包含了一些XML,它说的是与我的embedded.mobileprovision文件非常不同的东西:
<!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>ABCDEFGH.com.myappname.tester</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.com.myappname.tester</string>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我认为这是我们遇到的错误消息的原因.(虽然这个错误可能有一些不同的根源以及stackoverflow上的其他帖子建议)
The executable was signed with invalid entitlements.
The entitlements specified in your application's Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).
Run Code Online (Sandbox Code Playgroud)
我的猜测是Xcode中存在一些错误,它会阻止你的plist中的设置在你的方案中更新,这会导致你的应用程序最终使用错误的配置文件进行签名.因此,通过删除xcuserdata文件夹,您可以删除所有方案.因此,Xcode将在下次使用适当的设置重新创建它们,您会再次感到高兴.
基本上答案是其他人都说的同样模糊的答案
平静地重复这些步骤直到它起作用,带走了我的五种各种组合.我也从开发转为Ad-hoc,这显然不是必要的,但确实保证了新的mobileprovision文件.
使用XCode4并接收为应用程序找到的相同"无效'aps-environment'权利字符串"我必须执行以下操作:
| 归档时间: |
|
| 查看次数: |
82196 次 |
| 最近记录: |