缺少推送通知权利

时间:2015-08-27 13:46:12

标签: ios notifications apple-push-notifications

在提交二进制版本后,我收到了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

9 个答案:

答案 0 :(得分:47)

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

我在应用中搜索了推送通知代码而没有找到任何内容:

grep -r“registerUserNotificationSettings”。
grep -r“registerForRemoteNotificationTypes”。

我终于尝试上传7月份批准的以前版本(并且没有生成电子邮件)。这次我收到了这个版本的警告电子邮件。所以我认为Apple错了,我会抓住机会,希望尽管有警告,它仍会被批准。

编辑:发现Apple开发者论坛的Apple工作人员的回复:

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

app validator在应用程序中检查UIApplicationDelegate方法应用程序的实现:didRegisterForRemoteNotificationsWithDeviceToken:如果您的应用程序委托实现了该方法并且没有aps-environment权限,您将收到所描述的警告。

即使您的应用没有对推送通知执行任何操作,您正在使用的第三方库也可能已实现该方法。在这种情况下,您可以忽略该警告。让那些使用推送通知的开发人员知道他们是否可能错误地签署了他们的应用程序。“

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

答案 1 :(得分:16)

以下是您可能需要仔细检查的一些事项:

Apple开发人员中心

标识符>部分中如果您没有实施 App ID 推送通知,则不应启用它们。

Apple Developer Center: Application Services

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

enter image description here

Xcode项目目标设置

在应用程序目标的功能标签中,应关闭推送通知

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

enter image description here

申请代表

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

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

希望有所帮助!

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:1)

我收到了同样的电子邮件,但似乎只是一个警告,我的应用程序设法获得批准到商店。

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

答案 4 :(得分:1)

转到目标>能力,

应该启用推送通知而不会出现任何问题,并且还应启用后台模式。

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

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

如果你找到其中一个,那就是问题所在。如果您没有使用通知,则需要将其删除。

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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