如何关闭iOS上的特定通知类型

时间:2015-01-30 01:53:55

标签: ios cocoa-touch apple-push-notifications

在我的应用的第一个版本中,我将其注册为:

(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge).

我就这样做了:

UIUserNotificationType userNotificationTypes = (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                                 categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];

现在,在我的应用的第二个版本中,我决定通过再次注册通知来放弃徽章通知:

UIUserNotificationType userNotificationTypes = (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                                 categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];

我期待徽章通知从现在开始关闭。当我进入设置菜单并检查我的应用程序的通知设置。徽章的切换开关已经消失,但徽章编号仍在更新。

我怀疑我的方法只是取消注册UIRemoteNotificationTypeBadge,但不会将其关闭。有没有办法实现这个目标?谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定为什么徽章通知没有关闭,但如果您决定放弃徽章通知,则可以在服务器端禁用它们。只是不要在您发送的推送通知的JSON有效负载中发送徽章编号。

即使你设法在客户端禁用徽章通知,你仍然应该在服务器端禁用它,以免在计算和发送客户端不会使用的数据时浪费CPU和带宽。