iOS开发 点击通知栏其中一条通知会清空掉该APP所有通知的问题

最近,在做通知的时候,发现一个问题:在通知栏点击自己开发的APP的其中一条通知,会清空掉该应用的所有通知。查询相关资料知道会出现以下几种情况:
1.当remote push的角标badge=0时,app不展示角标,并且通知栏点其中一个通知,其他通知还在
2.当remote push的角标badge>0时,app展示角标,并且通知栏点其中一个通知,其他通知消失
3.当remote push的角标badge<0时,app不展示角标,并且通知栏点其中一个通知,其他通知消失

期望实现目标

不管后端下发的角标badge是啥,最好是+1,这样可以自动计算右上角标数字。当点击其中一个通知,也不要让其他通知消失。那就需要修改一下代码:

- (void)applicationWillResignActive:(UIApplication *)application {
    //applicationIconBadgeNumber 直接设置为0,不仅角标会消失,多条通知的话,点其中一条通知,其他的通知也消失了。设置为-1,只会清除角标,不影响其他的通知
    if (@available(iOS 11, *)) {
        [UIApplication sharedApplication].applicationIconBadgeNumber = -1;
    }else{//iOS10及以下使用
        UILocalNotification *clearEpisodeNotification = [[UILocalNotification alloc] init];
        NSDate *tDate = [[NSDate alloc] initWithTimeIntervalSinceNow:1];
        clearEpisodeNotification.fireDate = tDate;
        clearEpisodeNotification.applicationIconBadgeNumber = -1;
        //启动任务
        [[UIApplication sharedApplication] scheduleLocalNotification:clearEpisodeNotification];
    }
}

另外,需要注意一下细节,iOS10及以下系统,当通知栏有通知的时候,切换到后台再返回前台会出现空内容的本地通知,这个时候最好做一个字典判空处理,如果不为空再进行弹框。

参考网址:ios - Clear notifications badge without removing notifications - Stack Overflow
iOS 点击其中一个通知会清空掉通知栏的所有通知问题 - (jianshu.com)

你可能感兴趣的:(iOS开发 点击通知栏其中一条通知会清空掉该APP所有通知的问题)