美文网首页
推送时App角标显示异常的问题

推送时App角标显示异常的问题

作者: lanmoyingsheng | 来源:发表于2018-07-12 16:24 被阅读12次

App和后台集成极光推送。
首先应该了解:
1、后台调用极光API推送消息时,传的角标值是"+1",而不是具体的某个值,估计极光传给Apns的值也是这样,这样就可以所有机型的不同通知数量进行累加。
2、直接设置applicationIconBadgeNumber角标为0,会清除所有通知。

UIApplication.shared.applicationIconBadgeNumber = 0

3、当收到通知时,接受到的数据一般为:

{
    "aps" : {
        "alert" : {
            "body" : "content通知显示的内容",
            "title" : "title通知显示的标题"
        },
        "badge" : 6,
        "extras" : { // 自定义字段
            "id" : "200",
            "types" : "2"
        },
        "sound" : "default"
    }
 }
系统会获取badge的值,立刻显示为角标。因此这个字段非常重要。

一般为了显示正确的数字,在设置applicationIconBadgeNumber后,还要将这个值传给极光。这样前后台的对每台设备的角标数是统一的。

UIApplication.shared.applicationIconBadgeNumber = number
JPUSHService.setBadge(number)

4、App显示角标值由两个值决定:推送时接收的badge值和applicationIconBadgeNumber。

当点击某个通知时,如果不改变applicationIconBadgeNumber值,角标是不会变得。因此每次点击通知,必须改变角标的值。

这里有两套方案:
1、只要点击通知,在设置applicationIconBadgeNumber为0。

UIApplication.shared.applicationIconBadgeNumber = 0
JPUSHService.setBadge(0)

优点是逻辑简单,代码简单。缺点是体验不好,用户点击某个通知,所有的通知就消失了。。。虽然缺点很明显,但也有很多App是这样做的。

2、准确的计算角标

var badgeNO = UIApplication.shared.applicationIconBadgeNumber
if badgeNO > 0 {


    badgeNO -= 1
    UIApplication.shared.applicationIconBadgeNumber = badgeNO

    JPUSHService.setBadge(badgeNO)
}

badgeNO -= 1和UIApplication.shared.applicationIconBadgeNumber = badgeNO,会减少一个单位的值,对通知栏的本App其他通知不产生影响。我猜测,通知系统维护底层一个数组,用于显示某个App的所有通知,而数组的长度由applicationIconBadgeNumber决定(其实这里的逻辑比较复杂,通知栏通知的个数应该小于等于角标的个数)。

这里必须考虑到一种需求:用户清除通知栏所有的通知,而App角标不会变化。一般在App中,构建一个消息中心的模块,用于显示用户没有读取的通知,当用户查看消息后,角标在变化,例如老虎证券就是这样做的;当然比如像微信、QQ、支付宝等,它们的消息中心是整个App界面,而不是一个单独的列表页。

相关文章

  • 推送时App角标显示异常的问题

    App和后台集成极光推送。首先应该了解:1、后台调用极光API推送消息时,传的角标值是"+1",而不是具体的某个值...

  • iOS 极光如何设置badge

    一、在使用极光设置app角标时,你需要了解下极光推送相关知识点 设置app角标可通过极光设置,也可以通过iOS方法...

  • 角标问题

    app角标问题: 场景远程推送,在收到消息的时候,希望改变App的BadgeNumber值,如果没有点击通知进入A...

  • 角标 (标签栏,导航栏)

    标签栏 UITabBarItem 角标 [A].UITabBar默认角标UITabBar默认角标:(可以显示 角标...

  • IOS 极光推送角标问题

    IOS SDK集成不多说,官网写的很详细。 IOS SDK集成 运行程序,如果出现以下图片内容,就证明成功了 因为...

  • iOS角标清零,通知中心消息不清零

    之前集成了极光推送,点击进入App,设角标为0,角标清空,但是通知中心也清空了。经理让优化一下,通知中心的消息不消...

  • APNS清空icon数字的多种姿势

    关于iOS的推送角标,实在是比较坑爹 对于apns来讲,如果app收到了多条推送,推送通知栏会有多条消息,当用户启...

  • iOS 卸载后重装APP角标依旧存在的问题

    iOS 卸载后重装APP角标依旧存在的问题 每个 APP 的角标都是存在 iOS 手机系统里的,我们开发人员是无法...

  • iOS app角标设置

    设置app右上角的角标数字,设置为0,则不显示 该方法一般放在当app退到后台挂起时,所以应当放在app生命周期的方法中

  • ionic ios 极光推送角标问题

    1 单独使用cordova-plugin-badge插件,能实现打开app,角标为0,但是不能解决下次消息再发来的...

网友评论

      本文标题:推送时App角标显示异常的问题

      本文链接:https://www.haomeiwen.com/subject/tykrpftx.html