iOS 8. 在没有任何通知的情况下更改应用徽章编号

Posted

技术标签:

【中文标题】iOS 8. 在没有任何通知的情况下更改应用徽章编号【英文标题】:iOS 8. Change app badge number without any notifications 【发布时间】:2015-01-20 10:22:43 【问题描述】:

在我的应用程序中,我需要在应用程序图标上设置徽章并为此徽章设置数字。问题是我需要像这样注册用户通知设置:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])

    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil]];

为了让它在 ios8 上运行。如果我运行此代码,则在启动系统时会向用户显示警报,内容如下:ApplicationName would like to send you notifications. Notifications may include bla la bla。这是标准的,我相信你已经看过很多次了。仅仅因为我注册了通知设置,系统就认为我的应用会发布一些通知。但事实并非如此!我不想发布通知。我想做的就是在图标上设置徽章,在这个徽章上设置一个数字。是否有可能在不注册用户通知或注册但不显示系统警报的情况下在 iOS 8 上实现这一点?有什么想法吗,伙计们?

【问题讨论】:

这是权限的一部分。如果你想设置徽章,你需要请求用户允许这样做。没有解决方法。 我听到你的声音。不幸的是,用户现在必须看到与完整的推送通知请求相同的“可怕”通知权限请求,只是为了更新徽章计数。您不妨只实施推送通知,以便将来可以选择发送不同类型的通知。您的用户将看到相同的请求。责怪你之前滥用通知的所有程序员。 :) 【参考方案1】:

文档在这一点上是明确的,在 iOS8 及更高版本上,您必须注册用户通知:

@property(nonatomic) NSInteger applicationIconBadgeNumber; // set to 0 to hide. default is 0. In iOS 8.0 and later, your application must register for user notifications using -[UIApplication registerUserNotificationSettings:] before being able to set the icon badge.

【讨论】:

以上是关于iOS 8. 在没有任何通知的情况下更改应用徽章编号的主要内容,如果未能解决你的问题,请参考以下文章

iOS 推送通知 - 如何在没有声音的情况下指定警报和徽章?

如何在没有徽章编号的情况下推送通知?

推送通知徽章清除警报

本地通知触发时更改图标徽章编号

当应用程序未在管理博览会的情况下运行时,在通知上设置应用程序图标徽章编号

在没有后台任务的情况下增加徽章值