iOS开发-应用角标展示逻辑处理

来源:互联网 发布:php 关闭call stack 编辑:程序博客网 时间:2024/05/13 04:24

关于应用角标的设置,大家一定都不陌生,角标,就是系统用来提醒用户来打开app的一种提示。操作方式也很简单,只要对application对象的applicationIconBadgeNumber属性进行设置就可以了。但消息数量累加之类的功能需要我们自己进行操作。


首先我们要注意在iOS 8 之后,我们必须调用

[UIApplication registerUserNotificationSettings:]
该方法之后才可对角标属性进行设置。


这里重点讲的是关于角标设置的前后端交互。


以极光推送为例,

在后台调用调用接口给iOS平台发送通知时,后台中有个badge字段是用来控制app收到通知时角标展示数字的,在新版极光推送的SDK中,这个字段可传数字,也可传+加数字,即 badge = “1” 或可以 badge = “+1”

这是两种不同的机制,当badge为纯数字时,是直接设置应用的角标为对应数字,当badge为+某数字时,是将极光后台中该设备对应的badge总数加上对应的数字。

因此,我们在做未读消息累加时,就可让后台每次推送单条消息时,给badge字段赋值+1即可。


但此时,我们app内部也要进行处理,否则会出现,当我们把applicationIconBadgeNumber的属性设为0后,角标是消失了,但下次推送来时,角标的数字会在之前的基础上再加1.

这就需要我们在程序内部,当我们清空角标时,也要调用极光对应的清空极光服务器上的badge数的方法。即

//清空applicationIconBadgeNumber    application.applicationIconBadgeNumber = 0;    //修改极光服务器中该设备对应别名的badge总数为0。    [JPUSHService setBadge:0];

这样之后,再收到推送,就可以在新的总数上累加了。


其实不光是清空,我们只要保证调用setBadge时和我们的app角标上数字展示是一致的,就可以保证展示不出问题。可简写为

    [JPUSHService setBadge:[UIApplication sharedApplication].applicationIconBadgeNumber];
要注意的是,在这样写之前,要保证我们的applicationIconBadgeNumber属性为更新后的数字。


其他逻辑按需添加。



原创粉丝点击