应用程序因"缺少推送通知权限"而被拒绝

san*_*ndy 36 apple-push-notifications ios

最近我的申请在上传时遭到拒绝.Apple审核小组称我的应用程序是"缺少推送通知权限"

这是他们提供的信息:

缺少推送通知权利 - 您的应用程序向Apple推送通知服务注册,但应用程序签名的权利不包括所需的"aps-environment"权利.确保您已为此应用启用了推送通知服务,并且您已下载包含"aps-environment"权利的分发配置文件.

我的应用程序的早期版本曾经有推送通知,我的应用程序二进制文件从未因此而被拒绝.我该怎么办?

Sag*_*ody 17

在任何文本编辑器中打开您的配置文件,然后搜索"环境".

你应该找到: aps-environment

如果您未aps-environment在配置文件中看到,则Apple配置证书中存在问题.

如果您创建的证书没有推送通知,然后您添加了推送通知服务,则Apple不会更新您的配置文件.

您需要创建新的配置文件.使用这个新的Provisioning Profile签署二进制文件,你会很高兴.


san*_*ndy 14

我重新创建了我的Distribution配置文件并使用它构建我的应用程序.此更改修复了缺少推送通知权利的问题.


jla*_*tre 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];
}
Run Code Online (Sandbox Code Playgroud)

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

  • Cordova 4.3.0仍然需要这样做,但是他们添加了一个DISABLE_PUSH_NOTIFICATIONS宏来在一个地方禁用代码.现在只需在`AppDelegate.m`的头部添加`#define DISABLE_PUSH_NOTIFICATIONS`,就可以了. (3认同)

Tat*_*tor 8

我有同样的问题,我通过重新创建配置文件修复它.从本地和推送通知指南中的"配置和开发":

团队管理员或团队代理必须接下来创建在远程通知开发的服务器端使用的配置文件(开发或分发).供应配置文件是一组资产,它将应用程序及其设备的开发人员与授权开发团队相关联,并使这些设备可用于测试.该配置文件包含证书,设备标识符,应用程序的捆绑包ID以及所有权利,包括.所有团队成员必须在运行它们的设备上安装配置文件并测试应用程序代码.