从推送通知中获取错误

时间:2011-03-28 10:55:45

标签: iphone objective-c apple-push-notifications

在我的应用中,我需要推送通知。我正在实施推送通知文档中的所有说明。但是我从推送通知中得到了一个错误:

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}

我做错了什么?

15 个答案:

答案 0 :(得分:44)

启用Push后生成新的配置文件,它将起作用!

答案 1 :(得分:25)

我正在使用Xcode 6.1.1

您不必删除或重新创建任何内容。您只需要让Xcode更新您的活动证书(包括新的推送通知证书)。

只需转到 Xcode>偏好>帐户>选择你的帐户>选择你的团队>查看详情

点击左下角的刷新按钮。 (还要检查构建设置中的代码签名)

enter image description here

答案 2 :(得分:19)

我遇到了同样的问题,
我解决了这个问题,确保调试 内置设置代码签名身份 >设置为正确的配置文件

,您在其中启用了推送通知。

答案 3 :(得分:18)

首先,您需要确保使用没有通配符的应用ID。 然后,您需要为推送通知启用该应用程序以进行开发。

例如,检查this tutorial

即使您已经为推送启用了应用ID,也可能需要几个小时才能实现。

答案 4 :(得分:8)

这让我发疯了。我交叉检查了一切,但仍然得到了同样的错误。 尝试了网上提供的所有其他解决方案。 然而,这对我有用。我在启用APNS之前创建了.mobileprovision文件。这是真正的错误。 解决这个问题:

  1. 创建应用ID
  2. 启用APNS
  3. 然后创建配置文件
  4. 如果您之前已创建配置文件并且已启用APNS,则应从系统中的任何位置(XCode,keychain,iTuneConnect)删除配置文件。然后再次创建配置文件。

答案 5 :(得分:2)

我刚刚处理了这个问题。虽然可能会有很多事情发生,但这就是我所学到的。

当您更改应用ID时,例如启用推送通知,您需要创建新的配置文件。我必须已经创建了我的应用ID,使用它创建了配置文件,然后在应用ID上启用了通知。

从门户网站和设备中删除配置文件后,我使用修改后的应用ID创建了新配置文件。下载它,把它扔在我的设备上,wham bam谢谢你,因为它工作了。希望这有助于未来的人们!

答案 6 :(得分:2)

这只是为我解决了所以我会分享。 如果您更新了应用ID,则必须从设备,xcode和developer.apple.com中删除配置文件。然后创建一个新的匹配配置文件,该配置文件使用新的应用程序ID设置进行更新。最好将它命名为略有不同的东西,因此你知道你正在选择正确的。

答案 7 :(得分:1)

首先你必须在设备中运行applcaiton。

这将在xcode 3.2.6中发生。因为当你得到完美的一切。但是您的应用程序没有在您的iphone,ipad或ipod中注册。您需要生成Entitlement.plst文件。

  • 步骤:首先在xcode中选择你的项目创建一个文件。选择名为itsignlement.plist(默认名称)的代码签名文件。
  • 将它放在资源文件夹中。
  • 右键单击以xml编辑器打开。
  • 然后以textedit模式打开您的配置文件,例如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服务器通知的应用程序。

答案 8 :(得分:1)

enter image description here

使个人资料正确。也许你没有设置个人资料。

答案 9 :(得分:1)

对我来说 - &gt;转到项目设置 - &gt;应用目标 - &gt;能力

启用推送通知!

答案 10 :(得分:0)

确保您使用的是特定条款证书

转到:https://developer.apple.com/ios/manage/provisioningprofiles/index.action 检查您的供应证书的状态,在最坏的情况下,只需创建新的证书,下载并再次将其分配给您的项目。

确保您使用的是哪种类型的条款,“开发”或“分发”

答案 11 :(得分:0)

我在XCode 4.6.1中遇到同样的错误,它对我有用,然后我从Mac删除以前的APNS配置文件,并从会员中心重新下载APNS提供的配置文件。在目标模式下的构建设置中,代码签名标识应仅在调试模式下作为iphone Developer for Release放置为nil或删除开发人员或分发。

答案 12 :(得分:0)

我也一样。以下是我的解决方法。

1)在~/Library/MobileDevice/Provisioning Profiles

删除了配置文件

2)从开发者帐户

删除了配置文件

3)创建并安装了新的配置文件

请注意,重新生成的个人资料无法解决。

答案 13 :(得分:0)

好吧,有点尴尬,但有时候你会花上几个小时来讨论最愚蠢的错误 -

所以,我在 DEBUG 模式下运行应用程序而不是 AD-HOC

要改变它,请执行:

计划 - &gt;编辑方案......

选择左侧的“运行”,然后在构建配置下更改为 Ad-Hoc dist。

*当然,您需要在构建设置\代码签名下拥有合适的特殊配置文件,以及在创建配置文件时附加到其上的合适的APNS证书。

**一旦你运行它,它会导致它不在DEBUG模式下,但你仍然可以从设备运行。

enter image description here

答案 14 :(得分:0)

如果您管理多个应用推送一台服务器,请考虑以下事实。

您需要将单独的 私钥作为p12 文件进行处理,以准备 pem 文件,并在钥匙串应用中生成此私钥。您创建 .certSigningRequest 文件。因此, CSR 可以在到期后重复用于同一个应用,但任何其他应用都需要单独