最近我的申请在上传时遭到拒绝。 Apple审核小组称我的应用程序是“缺少推送通知权利”
这是他们提供的信息:
缺少推送通知权利 - 您的应用程序向Apple推送通知服务注册,但应用程序签名的权利不包括所需的“aps-environment”权利。确保您已为此应用启用了推送通知服务,并且您已下载包含“aps-environment”权利的分发配置文件。
我的应用程序的早期版本曾经有推送通知,我的应用程序二进制文件从未被拒绝。我该怎么办?
答案 0 :(得分:17)
在任何文本编辑器中打开您的配置文件,然后搜索“环境”。
你应该找到:aps-environment
如果您的配置文件中未显示aps-environment
,则说明您的Apple配置证书存在问题。
如果您创建的证书没有推送通知,然后您添加了推送通知服务,则Apple不会更新您的配置文件。
您需要创建新的配置文件。使用这个新的Provisioning Profile对二进制文件进行签名,你就可以了。
答案 1 :(得分:14)
我已经重新创建了我的分发配置文件并使用它构建我的应用程序。此更改修复了缺少推送通知权利的问题。
答案 2 :(得分:12)
如果您要提交Cordova / Phonegap项目但未使用推送通知,则应检查Classes/AppDelegate.m
以下两种方法。在Cordova 3.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];
}
希望这能为您节省几个小时; - )
答案 3 :(得分:8)
我遇到了同样的问题,我通过重新创建配置文件修复了它。来自本地和推送通知指南中的"Provisioning and Development":
Team Admin或Team Agent必须接下来创建在远程通知开发的服务器端使用的配置文件(开发或分发)。供应配置文件是一组资产,它将应用程序及其设备的开发人员与授权开发团队相关联,并使这些设备可用于测试。该配置文件包含证书,设备标识符,应用程序的捆绑包ID以及所有权利,包括。所有团队成员必须在运行它们的设备上安装配置文件并测试应用程序代码。
答案 4 :(得分:4)
我的案例:我已经为我的appstore应用程序的更新实施了推送通知。由于推送通知实施之前的配置文件无效,我创建了新的Appstore-distribution配置文件,并使用新的配置文件构建了应用程序并上传到商店。但是我收到一封邮件说“缺少推送通知权限”。
查找:我发现在存档时,Xcode使用了错误的(无效/旧的)配置文件。因此,从成员中心删除了旧的配置文件,它解决了问题
答案 5 :(得分:3)
我收到了同样的错误消息,重新创建我的配置文件并没有消除它。
相反,我发现我的应用程序包含一些未使用的与APNS相关的杂散符号(在库中)。显然他们导致静态分析器将应用标记为使用推送通知(它没有)。 #ifdef-out out允许我的应用程序被接受而没有aps-environment权利。
答案 6 :(得分:3)
我也遇到过Cordova应用程序的这个问题,经过一些阅读后,这似乎是一个常见的问题。
为什么会发生这种情况?
由于您提到您的应用已使用推送通知获得批准,因此最有可能的情况是,在将应用提交到AppStore时,应用的配置文件已更改。也许你:
发生此问题是因为通过配置文件收集了权限。如果您忘记将应用程序的配置文件链接到具有“推送通知”权限的AppID(请注意,XCode默认情况下使用通配符开发人员配置证书自动执行此操作),那么您可能会在排序之前收到此消息允许的。
如何消除CORDOVA应用程序中推送通知的需求:
当我收到此消息时,我正在提交Cordova应用程序,虽然@jlapoutre发布的解决方案足以让您的应用程序获得批准,但您希望继续受益于Cordova升级,因此最好的方法是利用条件编译(即触发#ifndef DISABLE_PUSH_NOTIFICATIONS
指令,告诉XCode编译你的应用程序,省略了这段代码)。
条件编译在XCode-speak中也称为“预处理器宏”。这就是你如何通过UI以图形方式实现这一点(注意这是在XCode 6.1中完成的方式):
希望这可以帮助其他人在同样的情况下。
答案 7 :(得分:1)
我最近在启用推送服务的应用中添加今日扩展后遇到此问题。最后意识到Xcode为Today Extension生成的Mobile Provisioning配置文件没有启用推送通知服务。一旦我启用了今日推广的推送服务,Apple的警告就消失了。
答案 8 :(得分:0)
我有同样的问题。我已经解决了。
我认为在将推送通知功能添加到AppID并且没有重新创建配置时会出现此问题。 添加iCloud-function时会收到警告:
您为此App ID创建的所有新配置配置文件都将启用iCloud。如果您希望为与此应用程序ID关联的任何现有配置文件启用iCloud,您必须手动重新生成它们
我认为当我们在AppID中添加一些功能时,我们应该手动重新生成与该AppID相关的所有配置。
我想是的
答案 9 :(得分:0)
步骤
启用推送通知服务(生产推送SSL证书)
创建/重新创建分发配置文件并构建您的 具有更新的分发配置文件的应用程序。
以下资源可以为您提供帮助