从推送通知中获取错误
Posted
技术标签:
【中文标题】从推送通知中获取错误【英文标题】:Getting an error from push notification 【发布时间】:2011-03-28 10:55:45 【问题描述】:在我的应用中,我需要推送通知。我正在执行推送通知文档中的所有说明。但我收到推送通知的错误:
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
我做错了什么?
【问题讨论】:
阅读这里,它可能会帮助你urbanairship.com/docs 请将我的答案标记为正确答案,因为它对其他新用户也有帮助! 【参考方案1】:启用推送后,生成一个新的配置文件,它就会起作用!
【讨论】:
【参考方案2】:我使用的是 Xcode 6.1.1
您不必删除或重新创建任何内容。您只需让 Xcode 更新您的活动证书(包括新的推送通知证书)。
只需转到 Xcode > Preferences > Accounts > 选择您的帐户 > 选择您的团队 > 查看详细信息
点击左下角的刷新按钮。 (还要在构建设置中检查您的代码签名)
【讨论】:
不幸的是,在 Xcode 7 中,这个按钮被替换为“全部下载”【参考方案3】:我遇到了同样的问题,我解决了这个问题,确保在 Built Settings 中,debug 的 Code Signing Identity 是设置为正确的Provisioning Profile您在其中启用了推送通知。
【讨论】:
【参考方案4】:首先,您需要确保使用不带通配符的应用 ID。 然后,您需要为该应用启用推送通知以进行开发。
例如,检查this tutorial。
即使您为推送启用了应用 ID,它也可能需要几个小时才能工作。
【讨论】:
【参考方案5】:这让我发疯了。我交叉检查了所有内容,但仍然遇到相同的错误。 也尝试了网络上提供的所有其他解决方案。 但是,这对我有用。我在启用 APNS 之前创建了 .mobileprovision 文件。这是真正的错误。 这个问题的解决方法:
-
创建应用 ID
启用 APNS
然后创建配置文件
如果您之前创建了配置文件并启用了 APNS,您应该从系统中的任何位置删除配置文件(XCode、keychain、iTuneConnect)。然后再次创建配置文件。
【讨论】:
我刚刚做了这一步,它奏效了。这让我很头疼……Apple 需要让这个过程对用户更友好!!!! Jeremy : 是的..对于一个新用户来说,一次知道如何做到这一点是一件非常忙碌的事情。苹果需要照顾它。你可以接受答案。编码快乐!!【参考方案6】:我刚刚处理了这个问题。虽然可能发生了很多事情,但这是我学到的。
当您更改应用 ID(例如启用推送通知)时,您需要创建新的配置文件。我一定是创建了我的应用 ID,使用它创建了配置文件,然后在应用 ID 上启用了通知。
从门户和设备中删除配置文件后,我使用修改后的应用 ID 创建了一个新配置文件。下载它,把它扔到我的设备上,wham bam 谢谢你,女士它有效。希望这对未来的人们有所帮助!
【讨论】:
【参考方案7】:这只是为我解决了它,所以我会分享。 如果您更新您的应用程序 ID,则必须从您的设备、xcode 和 developer.apple.com 中删除配置文件。然后创建一个新的匹配配置文件,该配置文件使用新的应用程序 ID 设置进行更新。最好将其命名为稍有不同的名称,以便您知道自己选择了正确的名称。
【讨论】:
【参考方案8】:首先你必须在设备中运行 applcaiton。
这将在 xcode 3.2.6 中发生。因为当你让一切都变得完美时。但是您的应用程序没有在您的 iphone、ipad 或 ipod 中注册。您需要生成一个 Entitlement.plst 文件。
步骤:首先在xcode中选择你的项目创建一个文件。选择名为 entitlement.plist(默认名称)的代码设计文件。 将其放在资源文件夹中。 右键单击打开为 xml 编辑器。 然后以文本编辑模式打开您的配置文件,例如 your_apllicationName.mobileprovision(您为 Apns 服务器创建的)。现在从您的配置文件中复制如下几行到您的权利文件中:
<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 服务器将通知您。
【讨论】:
这对我有用。关键是将整个内容(包括application-identifier
)复制到我的权利中。
在 Xcode 4.3 中不适合我 :( 权利文件现在似乎被命名为 PROJECTNAME.entitlements,例如我的 Tinker6 项目的“Tinker6.entitlements”。
什么是错误以及如何在应用程序中实现推送通知。
请注意plist文件必须命名为Entitlements.plist,上面的答案是字母“s”的缩写。 :)【参考方案9】:
使配置文件正确。也许您没有设置配置文件。
【讨论】:
【参考方案10】:对我来说 -> 进入项目设置 -> 应用目标 -> 功能
启用推送通知!
【讨论】:
【参考方案11】:只要确保您使用的是特定的供应证书
转到:https://developer.apple.com/ios/manage/provisioningprofiles/index.action 检查您的供应证书的状态,在最坏的情况下只需创建一个新的,下载它并再次将其分配给您的项目。
确定您使用的是哪种类型的配置,“开发”或“分发”
【讨论】:
【参考方案12】:我也一样。这是我的解决方法。
1) 删除了 ~/Library/MobileDevice/Provisioning Profiles
的配置文件
2) 从开发者帐户中删除的配置文件
3) 创建并安装新的配置文件
请注意,重新生成配置文件并没有解决问题。
【讨论】:
【参考方案13】:好吧,有点尴尬,但有时你会花几个小时在最愚蠢的错误上 -
所以,我在 DEBUG 模式而不是 AD-HOC 模式下运行应用程序。
要改变它,请这样做:
方案 -> 编辑方案...
选择左侧的运行,并在构建配置下更改为Ad-Hoc dist。
*当然,您需要在构建设置\代码签名下拥有合适的临时配置文件,并在创建配置文件时附上合适的 APNS 证书。
**一旦你运行它,它会崩溃,因为它没有处于调试模式,但你仍然可以从设备运行。
【讨论】:
【参考方案14】:如果您在一台服务器上管理多个应用推送,请考虑以下事实。
您需要将单独的 私钥处理为 p12 文件以准备 pem 文件,并且此私钥在 keychain 应用程序中生成时您创建一个 .certSigningRequest 文件。因此,此 CSR 可以在到期后重复用于同一应用,但任何其他应用都需要单独。
【讨论】:
【参考方案15】:我在 XCode 4.6.1 中遇到了同样的错误,它对我有用,然后我从 Mac 中删除了以前的 APNS 配置文件并从会员中心重新下载了 APNS 供应配置文件。在目标模式下的构建设置中,代码签名身份应仅在调试模式下,因为 iphone Developer for Release 置为 nil 或删除开发人员或发行版。
【讨论】:
以上是关于从推送通知中获取错误的主要内容,如果未能解决你的问题,请参考以下文章