在我的应用的第一个版本中,我将其注册为:
(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,但不会将其关闭。有没有办法实现这个目标?谢谢!
答案 0 :(得分:1)
我不确定为什么徽章通知没有关闭,但如果您决定放弃徽章通知,则可以在服务器端禁用它们。只是不要在您发送的推送通知的JSON有效负载中发送徽章编号。
即使你设法在客户端禁用徽章通知,你仍然应该在服务器端禁用它,以免在计算和发送客户端不会使用的数据时浪费CPU和带宽。