【问题标题】:Missing Push Notification Entitlement缺少推送通知权利
【发布时间】:2015-11-21 22:32:15
【问题描述】:

我在提交二进制构建后收到了来自 Apple 的警告邮件。

    Missing Push Notification Entitlement - Your app appears to include API used to register with the Apple Push Notification service, but the app signature's entitlements do not include the "aps-environment" entitlement.
If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the "aps-environment" entitlement. 
See "Provisioning and Development" in the Local and Push Notification Programming Guide for more information. 
If your app does not use the Apple Push Notification service, no action is required. 
You may remove the API from future submissions to stop this warning. 
If you use a third-party framework, you may need to contact the developer for information on removing the API.

    After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to iTunes Connect.

我没有使用推送通知或任何第三方框架,如 Coredova,但我不确定为什么我会一次又一次地收到此警告。我浏览了以下链接,但到处都是第三方框架问题。

我不想启用推送通知服务,因为我不会在我的应用程序中使用它。任何帮助将不胜感激以解决此警告。提前致谢。

注意:我已经多次尝试删除并重新创建我的个人资料和证书。

Missing Push Notification Entitlement warning

Missing Push Notification Entitlement

IOS Missing Push notification entitlement

【问题讨论】:

  • 我也刚收到这封警告邮件,就像下面 Sten 的回答一样,我根本没有任何通知代码,而且我最近的几次修订从未收到此警告。所以我希望 Sten 是对的,这只是苹果方面的一个错误。对我来说唯一的不同是我最近在 bitbucket 上合并了一些代码,然后在本地下载了它,所以我想我可能在其中丢失了一些东西,但这些答案让我觉得情况并非如此。
  • @Sasi M:我也收到了来自 Apple 的警告邮件。我已经尝试了从创建新的配置文件和其他东西的所有方法,但仍然收到这样的警告。如果您能够解决问题,请更新。
  • 我从昨天开始遇到同样的问题。我的应用程序没有也从未配置为使用推送通知,我的代码中没有推送通知,我什至没有使用第三方库。我正在向 Apple 提交错误报告,建议您也这样做。
  • 同上,我在不使用推送通知的新应用程序上收到了相同的电子邮件警告。
  • 我刚收到同样的电子邮件。我的开发分支上的工作有点停滞,所以我只重新提交了一个月前提交的完全相同的构建。一个月前提交时我没有收到这封电子邮件。我正在使用本地通知,但我认为这些不需要推送通知权利。我想我们或许应该将其记录为苹果的错误?

标签: ios notifications apple-push-notifications


【解决方案1】:

我很确定这是苹果检查系统中的一个错误。我昨天上传了一个应用程序并收到了这条消息。此应用程序已更新至少 30 次,没有任何问题。我没有在上一个版本中添加任何推送通知代码,也没有使用任何可能导致此消息的框架,如 PhoneGap 或 Cordova。它不会出现在设备的通知下方。

我在应用程序中搜索了推送通知代码,但没有找到任何东西:

grep -r "registerUserNotificationSettings" .
grep -r "registerForRemoteNotificationTypes" 。

我终于尝试上传 7 月获批的上一个版本(但没有生成电子邮件)。这次我也收到了这个版本的警告邮件。所以我认为 Apple 是错误的,我会抓住机会,希望它会得到批准,尽管有警告。


编辑:在 Apple 开发者论坛中找到 Apple 员工的回复:

“该通知只是警告,而不是拒绝。

应用验证器检查应用中 UIApplicationDelegate 方法 application:didRegisterForRemoteNotificationsWithDeviceToken: 的实现。如果您的应用委托实现了该方法并且没有 aps-environment 权利,您将收到您描述的警告。

您使用的第三方库可能已经实现了该方法,即使您的应用没有对推送通知做任何事情。在这种情况下,您可以忽略警告。它可以让使用推送通知的开发者知道他们是否可能错误地签署了他们的应用程序。”


编辑 2:尽管生成了警告电子邮件,但我现在有两个不同的应用程序已被批准,没有任何问题

【讨论】:

  • 我也同样怀疑。让我们再等一段时间来检查是否有人对此有解决方案。 @Sten
  • 更新了苹果的引用,支持你可以忽略它。
  • 我在使用Xcode 6.4 提交应用程序时收到同样的警告,然后我尝试使用Xcode 7 GM 重新提交相同的应用程序并且没有警告了。
  • 对我来说,我发现 Firebase 使用这种方法,所以如果有人使用 Firebase 有这种方法,请放心忽略它。
  • 我收到了同样的消息,我尝试了很多方法来阻止它发送,包括测试 Firebase 包的删除。我找不到解决方案,唯一的解决方法似乎是添加该功能,即使我没有使用。 2021 年似乎仍然是一个错误。
【解决方案2】:

您可能需要仔细检查以下几点:

苹果开发者中心

Identifiers > App IDs 部分中,Push Notifications 如果您没有实现它们,则不应启用它们。

每次启用或禁用服务时,您都必须生成新的移动配置。确保推送通知未列在您的应用启用服务中:

Xcode 项目目标设置

在应用程序目标的 Capabilities 选项卡中,Push Notifications 应该被关闭。

另外,在后台模式中,不应有任何远程通知模式。

应用委托

最后,确保您的应用程序委托没有注册远程通知,并且它没有实现任何远程通知委托方法。您应该确保没有调用或实现以下方法:

  • registerForRemoteNotifications()registerForRemoteNotificationTypes() 之前的iOS 8.0
  • unregisterForRemoteNotifications()
  • isRegisteredForRemoteNotifications()
  • application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
  • application(_:didFailToRegisterForRemoteNotificationsWithError:)
  • application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
  • application(_:handleActionWithIdentifier:forRemoteNotification:completionHandler:)
  • application(_:didReceiveRemoteNotification:)

希望有帮助!

【讨论】:

  • 我已经检查了以上所有内容,但这些都不是问题的原因。但是我仍然没有尝试生成任何新的配置文件。
  • 我相信,每当您在开发者中心更改应用设置中的某些内容时,您都必须创建新的移动配置。可能就是这样!
  • 当您编辑它使用的服务时,似乎有必要再次生成您的应用程序移动配置。在移动配置描述中列出所有启用的服务之后。
  • 我已经完成了所有这些事情,还创建了新的配置文件。但是这个问题还没有解决。
  • 您确定您没有使用任何可以实现远程通知的第三方框架吗?
【解决方案3】:

我收到了相同的电子邮件,但这似乎只是一个警告,我的应用程序成功地获得了商店的批准。

我有一个在过去 2 年一直在更新的应用程序,它没有推送通知,到目前为止一切都很好,直到我最近发布时收到此警告。联系 Apple 后,这似乎只是一个警告,不应考虑。我认为这是他们一方的错误,所以希望他们能在下一次 Xcode 更新中修复它。

【讨论】:

    【解决方案4】:

    转到目标 > 能力,

    应该在没有任何问题的情况下启用推送通知,并且还应该启用后台模式。

    【讨论】:

      【解决方案5】:

      对我来说,这看起来也像是来自 Apple 的错误。我的应用程序的最新版本也收到了警告,但在一周内就获得了批准。在这个新版本中,我使用了一个非常简单的 Today 小部件。因此,我必须链接 NotificationCenter 框架。小部件报告来自包含应用程序的一些数据。为此,它只需使用通过 App Groups 权利共享的 NSUserDefaults。没有什么比推送通知更复杂。

      Apple 写道,推送通知可用于管理 Today 小部件:

      https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/NotificationCenter.html

      也许出于这个原因,包括 NotificationCenter 框架确实触发了警告,尽管是错误的。

      【讨论】:

        【解决方案6】:

        此消息实际上是一条警告,表明您的代码中某处使用了注册推送令牌的方法(表明您的应用正在尝试使用推送通知),但由于缺少所需的权利,此功能不会工作。

        目前看来,如果不使用 APN,则可以忽略警告。

        第三方库可能已经实现了此功能,即使您的应用不使用它。在这种情况下,您可以忽略警告。不过,您可能希望在发布应用之前了解应用中包含的每个库在做什么,以避免将来发生此类意外。

        【讨论】:

          【解决方案7】:

          我会先搜索registerForRemoteNotificationTypesregisterUserNotificationSettings 的代码,它们都用于注册推送通知(取决于操作系统的版本)。

          如果您找到其中之一,那就是问题所在。如果您不使用通知,则需要删除它们。

          也许问题是您在使用本地通知时也意外注册了远程通知?

          【讨论】:

          • 已经检查过了。我只使用 NSNotificationCenter 来添加观察者和 postNotificationName。除此之外,我没有其他通知代码。我也在使用 ANetworking 框架,它也没有使用任何远程通知。
          • 您的应用是否会作为应用之一出现在设备上“设置”应用的“通知”部分?
          • 检查了它也没有在设置中的通知下列出。
          • 本地通知寄存器有什么用?
          【解决方案8】:

          经过 1 个月的深入研究和跟踪,这对我有用:Missing Push Notification Entitlement warning

          【讨论】:

            【解决方案9】:

            我只是通过更新一些 pod(FacebookSDK 就是其中之一)得到了这个警告。我假设其中一个正在实现UIApplicationDelegate 方法application:didRegisterForRemoteNotificationsWithDeviceToken:,这就是为什么我从现在开始忽略警告。

            【讨论】:

              【解决方案10】:

              我在添加 NSPhotoLibraryUsageDescription 后收到此消息... NSPhotoLibraryUsageDescription 访问照片库的权限 ... 由于我内置了flutter然后使用Xcode发布,所以我在pubspec.yaml中添加了一个新的构建号并关闭了Flutter。然后在 Xcode 中,我还添加了新的内部版本号。

              确保 Flutter 和 Xcode 都已关闭,使用终端导航到我的项目目录并执行以下操作:

              扑干净 颤振构建ios

              使用 Xcode 上传新版本后,我没有再次收到警告。

              【讨论】:

                猜你喜欢
                • 2015-11-28
                • 2016-07-09
                • 2015-12-01
                • 2015-03-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多