我想在发送通知时向我的应用内的UIButton添加徽章图标,我不太清楚如何实现这一点。它需要匹配跳板图标上的徽章,当在应用程序中按下UIButton时,UIButton上的跳板徽章和徽章都需要消失。
更新:
我有一个徽章出现但是当我打开应用程序时,徽章会在应用程序打开时重置为零,所以我最终没有看到按钮上的徽章。我知道徽章有效,因为我通过这样做测试了它:
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:1];
以下是徽章的代码:
NSString *badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]];
JSCustomBadge *actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber];
actionAlertBadge.frame = CGRectMake(188, 6, 30, 30);
[self.view addSubview:actionAlertBadge];
if ([badgeNumber isEqual:@"0"])
{
actionAlertBadge.hidden = YES;
}
如何在打开应用程序时不会重置徽章,而是在应用程序中按下该按钮时重置?
我有这个工作,但仍然有一个问题。如果应用程序未在后台运行,则徽章会显示在跳板图标和UIButton上。按下按钮时,将打开新视图并重置徽章,以便当用户使用UIButton返回屏幕时,徽章不再存在。我遇到的问题是,当应用程序在后台运行时,徽章不会显示在按钮上,而是显示在跳板上。
- (IBAction)gotoActionAlerts
{
ActionAlertsViewController *actionAlerts = [[ActionAlertsViewController alloc]initWithStyle:UITableViewStylePlain];
WebViewController *wvc = [[WebViewController alloc]init];
[actionAlerts setWebViewController:wvc];
actionAlerts.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[[UAPush shared] resetBadge];
actionAlertBadge.hidden = YES;
[self.navigationController pushViewController:actionAlerts animated:YES];
}
在viewDidLoad
中badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]];
actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber];
actionAlertBadge.frame = CGRectMake(83, 6, 30, 30);
[self.view addSubview:actionAlertBadge];
if ([badgeNumber isEqualToString:@"0"])
{
actionAlertBadge.hidden = YES;
}
答案 0 :(得分:2)
对于UIButton上的徽章您可以使用一些可用的自定义库here,
要设置/获取您的应用程序徽章,您可以使用方法,
[UIApplication sharedApplication]setApplicationIconBadgeNumber:1]
修改强>
The issue I'm having is when the app is running in the background, the badge doesn't show on the button, but shows on the springboard.
如果您的应用处于背景徽章,则会在应用图标上显示,如果您使用推送通知而不是从有效负载设置的徽章值,
{"aps": {"alert":"content test","badge":1,"sound":"default"}}
或者您正在使用UILocalNotification的applicationIconBadgeNumber
属性中设置的localnotification徽章值,即
notification.applicationIconBadgeNumber=1;
因此,如果您的应用程序在后台,您有两种不同通知的委托方法,
为了推送通知,请实施委托方法本地通知didReceiveLocalNotification:
和didReceiveRemoteNotification:
。
因此,请在实施前参考Apple Document。