应用因“缺失推送通知权利”而被拒绝

最近我的应用程序被上传时被拒绝。 苹果审查小组说我的应用程序是“丢失推送通知权利”

这是他们提供的信息:

缺less推送通知权利 – 您的应用程序向Apple推送通知服务注册,但应用程序签名的权利不包括所需的“aps-environment”权利。 确保您已为此应用启用了推送通知服务,并且您已经下载了包含“aps-environment”权利的发布configuration文件。

我的应用程序的早期版本用于推送通知,我的应用程序二进制文件从来没有因此被拒绝。 我应该在这里做什么?

在任何文本编辑器中打开您的供应configuration文件并search“环境”。

你应该find: aps-environment

如果您在configuration文件中没有看到aps-environment ,则说明您的Appleconfiguration证书存在问题。

如果您创build了没有推送通知的证书,并且稍后添加了推送通知服务,则Apple不会更新您的供应configuration文件。

您需要创build一个新的configuration文件。 使用这个新的configuration文件对二进制文件进行签名,你就可以走了。

我已经重新创build了我的分发configuration文件并使用它创build我的应用程序。 此更改修复了推送通知权利丢失的问题。

如果您提交的是Cordova / Phonegap项目,而您没有使用推送通知,则应该检查以下两种方法的Classes/AppDelegate.m 。 在cordova3.7.0观察,不知道其他版本。

确保你没有以其他方式使用远程通知(仔细检查你的插件)。 然后删除或注释掉下面的块:

 - (void) application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { // re-post ( broadcast ) NSString* token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<" withString:@""] stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""]; [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotification object:token]; } - (void) application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { // re-post ( broadcast ) [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotificationError object:error]; } 

希望这可以节省你几个小时;-)

我有同样的问题,我通过重新创buildconfiguration文件来修复它。 从本地和推送通知指南中的“供应和开发”

然后,Team Admin或Team Agent必须创build用于远程通知开发服务器端的供应configuration文件(开发或分发)。 供应configuration文件是将应用程序的开发人员和他们的设备与授权的开发团队相关联的资产的集合,并使这些设备能够用于testing。 configuration文件包含证书,设备标识符,应用程序的包ID和所有权利,包括。 所有团队成员必须在他们将要运行的设备上安assembly置文件,并testing应用程序代码。

我的情况 :我已经实施了推送通知,以更新我的appstore应用程序。 由于推送通知推进之前的供应configuration文件变得无效,因此我创build了新的Appstore-distribution provisioningconfiguration文件,并使用新configuration文件构build应用程序并上传到商店。 但是我收到一封邮件,里面写着“丢失推送通知权利”。

发现 :我发现在归档时,Xcode使用了错误的(无效/旧的)configuration文件。 所以从成员中心删除旧的configuration文件,并解决了问题

验证归档时的屏幕截图

我收到了同样的错误消息,重新创buildconfiguration文件并没有消除它。

相反,我发现我的应用程序包含一些没有被使用的stream氓APNS相关的符号(在一个库中)。 显然,他们导致一个静态分析器标记应用程序使用推送通知(它不)。 #ifdef-out符号允许我的应用程序被接受没有API环境权利。

我也有一个cordova应用程序的这个问题,并做了一些阅读后,似乎这是一个共同的问题,如今。

为什么会发生?

由于您提到您的应用已通过推送通知获得批准,因此最有可能的情况是您的应用的提供configuration文件在提交给AppStore时已更改。 也许你:

  1. 在XCode中重build你的项目,或者
  2. 转移到另一台计算机,忘了告诉XCode什么是正确的configuration文件,或
  3. 有人坐在你的电脑上,改变它,或者

发生此问题是因为通过configurationconfiguration文件收集权限。 如果您忘记将应用的供应configuration文件链接到具有“推送通知”权利的AppID(请注意,XCode默认使用通配符开发人员供应证书自动执行此操作),那么您可能会收到此消息,直到您sorting取得许可。

如何删除需要在CORDOVA应用程序中推送通知:

当我收到这条消息时,我正在提交一个Cordova应用程序,虽然@jlapoutre发布的解决scheme足以让您的应用程序获得批准,但您希望继续从Cordova升级中获益,所以最好的做法是利用条件编译(即触发#ifndef DISABLE_PUSH_NOTIFICATIONS指令告诉XCode编译你的应用程序,留下这一点的代码)。

条件编译在Xcode中也被称为“预处理器macros”。 这就是你可以通过UI以graphics的方式来完成这个任务(请注意,这是它在XCode 6.1中完成的方式):

在这里输入图像说明

希望这可以帮助其他人在相同的情况下。

我最近遇到这个问题后,今天扩展添加到启用推送服务的应用程序。 最后意识到由Xcode为Today Extension生成的Mobile Provisioningconfiguration文件没有启用推送通知服务。 一旦我启用了推送服务的今天扩展,从苹果的警告消失了。

脚步

  1. 启用推送通知服务(生产推送SSL证书)

  2. 创build/重新创build分配调配configuration文件并使用更新的分配调配configuration文件构build您的应用程序。

以下资源可能对您有所帮助

我有同样的问题。 我已经解决了。

我认为这个问题导致添加推送通知函数到AppID中,而不是重新创buildconfiguration。 添加iCloudfunction时会收到警告:

您为此App ID创build的所有新configurationconfiguration文件都将启用iCloud。 如果您希望为与此App ID关联的任何现有设置configuration文件启用iCloud,则必须手动重新生成它们

我想当我们在AppID中添加一些函数时,我们应该手动重新生成与该AppID有关的所有configuration。

我想是这样