前言:
1.这个需求的意思是:假如用户接到3条通知消息,用户点击App图标进入应用程序,通知栏上面还显示3条推送,如点击推送栏进入App消息只消息被点击的,其他未被点击的还在,接下来给大家一一说明:
方案1:(建议使用)
第一种方案比较简单:就是推送的时候 badge 这个字段写死为 0 就可以了, 还有一点需要注意的就是程序代码中不要对角标进行处理设置如下:
//不要出现类似代码
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
或
[JPUSHService setBadge:0];
方案2:
这中方案是后台推送的时候badge +1 时候的操作,我们用代码进行设置!
//
- (void)applicationWillResignActive:(UIApplication *)application {
if ([UIApplication sharedApplication].applicationIconBadgeNumber) {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0) {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:-1];
} else {
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
// 设置通知的发送时间,单位秒
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:0.5];
//收到通知时App icon的角标
localNotification.applicationIconBadgeNumber = -1;
// 3.发送通知( 根据项目需要使用)
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
}
[JPUSHService setBadge:0];
}