从推送通知中获取错误

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 中,debugCode 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 或删除开发人员或发行版。

【讨论】:

以上是关于从推送通知中获取错误的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 推送通知中获取字幕

如何从 Apple 推送通知中获取 userInfo

如何从fireBase推送通知swift 4中获取数据

解析 SDK 以获取推送通知、编译错误

从推送通知 iOS Swift 4 中获取值

Apple 推送通知 - 从生产应用程序获取空推送令牌 - 将在修复配置文件问题后发送推送令牌