从推送通知中获取错误
在我的应用程序中,我需要推送通知。 我正在实施推送通知文档中的所有说明。 但是我收到推送通知的错误:
Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x2340a0 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
我做错了什么?
生成推送后,生成一个新的configuration文件,它将工作!
我正在使用Xcode 6.1.1
您不必删除或重新创build任何内容。 你只需要让Xcode更新你的活动证书(包括新的推送通知证书)。
只需转到Xcode>首选项>帐户>select您的帐户>select您的团队>查看详细信息
点击左下angular的刷新button 。 (同时检查您的代码签署生成设置)
我有同样的问题,
我解决了它,确保在内置设置 , debugging的 代码签名身份设置为适当的configuration文件
在其中启用了推送通知。
首先,您需要确保您使用不带通配符的应用程序ID。 然后,您需要启用该应用程序的推送通知进行开发。
例如,查看本教程 。
即使您启用了应用ID进行推送,也可能需要几个小时的时间才能生效。
那让我发疯 我交叉检查了一切,但仍然得到相同的错误。 尝试了所有其他的解决scheme在networking上也是如此。 但是,这对我来说是个诡计。 在启用APNS之前,我创build了.mobileprovision文件。 这是真正的错误。 解决这个问题:
- 创build应用程序ID
- 启用APNS
- 然后创buildconfiguration文件
如果您之前创build了configuration文件,并且启用了APNS,则应该从系统中的任何地方(XCode,钥匙串,iTuneConnect)删除configuration文件。 然后再次创buildconfiguration文件。
我刚刚处理了这个问题。 虽然可能有很多事情正在进行,但这是我学到的东西。
当您更改应用ID时,如启用推送通知,您需要创build一个新的configuration文件。 我必须创build我的应用程序ID,使用它的configuration文件,然后启用应用程序ID的通知。
一旦我从门户和设备中删除configuration文件,我使用修改后的应用程序ID创build了一个新configuration文件。 下载它,扔在我的设备上,哇巴姆谢谢你,夫人它的工作。 希望这有助于未来的人!
这只是解决了我,所以我会分享。 如果您更新您的应用程序ID,则必须从设备,xcode和developer.apple.com中删除configuration文件。 然后创build一个新的匹配供应configuration文件,使用新的应用程序ID设置进行更新。 最好把它命名为稍有不同,所以你知道你正在select正确的。
首先你必须在设备上运行applcaiton。
这将在xcode 3.2.6中发生。 因为当你获得完美的一切。 但是你的应用程序没有注册在你的iPhone,iPad或iPod。 您需要生成一个Entitlement.plst文件。
- 步骤:首先在xcode中select你的项目创build一个文件。 select名为entitlement.plist的密码文件(默认名称)。
- 把它放在资源文件夹。
- 右键点击打开为XML编辑器。
- 然后以textedit模式打开您的provisionfile,如your_apllicationName.mobileprovision(您为Apns服务器创build的)。
现在从您的供应configuration文件复制以下一行到您的权利文件:
<key>application-identifier</key> <string>xyz.com.company_name.app_name</string> <key>aps-environment</key> <string>development</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>xyx.*</string> </array>
- 保存entitlement.plist文件。
- 运行您将通过Apns服务器通知的应用程序。
使configuration文件正确。也许你不设置configuration文件。
对我来说 – >去项目设置 – >应用程序目标 – >function
启用推送通知!
只要确保您使用的是特定的条款证书
请转到: https : //developer.apple.com/ios/manage/provisioningprofiles/index.action检查提供证书的状态,最坏的情况下只需创build一个新的,下载并重新分配给您的项目。
确保你正在使用哪种types的供应,“开发”或“分配”
我也有同样的 这是我如何解决。
1)在~/Library/MobileDevice/Provisioning Profiles
删除了configuration~/Library/MobileDevice/Provisioning Profiles
2)从开发者账户中删除configuration文件
3)创build并安装新的configuration文件
请注意,重新configuration文件没有解决。
好吧,有点尴尬,但有时候你花了几个小时在最愚蠢的错误 –
所以,我在DEBUG模式而不是AD-HOC上运行应用程序。
改变这一点,做:
计划 – >编辑计划…
select左边的运行,然后在构buildconfiguration下更改为Ad-Hoc dist。
*当然,在创build设置configuration文件时,您需要在生成设置\代码签名以及附加的合适的APNS证书下有合适的adhocconfigurationconfiguration文件。
**一旦你运行它,它会粉碎,导致其不在debugging模式,但你仍然可以从设备上运行。
如果您正在pipe理多个应用程序推送到一台服务器上,请考虑以下事实。
您需要将一个单独的 私钥作为p12文件处理,以准备pem文件,并且在创build.certSigningRequest文件时,该私钥在钥匙串应用程序中生成。 所以,这个CSR可以在相同的应用程序到期后重复使用,但其他应用程序需要单独使用。
我在XCode 4.6.1中遇到了同样的错误,它为我工作,然后我从Mac上删除以前的APNSconfiguration文件,并从成员中心重新下载APNS provisioingconfiguration文件。 在目标模式下的“生成设置”中,“代码签名标识”应该只在“debugging模式”下以iphone Developer for Release的forms存在,否则将删除开发人员或分发。