zoukankan      html  css  js  c++  java
  • apns关于APP数字角标的理解

      前两天群里有兄弟在吐槽,做远程推送的时候:老板要求APP桌面图标的右上角显示红色未读数字(数字角标)要精准,有多少未读通知就显示数字几;但是后台的弟兄在发送推送通知的时候,每次的角标是1,然后要移动端这边自己去把这个未读数字去累加,然后显示在APP上;并且后台非常固执的认为这个累加未读消息数量是在移动端处理的..... 

      这就尴尬了,碰到固执的队友,沟通不成的时候确实是很痛苦的!

      这里我说说自己在做推送功能时候的这个角标的验证过程和理解,给后面的为碰到类似情况的同学一些参考。

      随便截个图举个例子看看

    当APP是处于后台的时候,实现这个还是好说的,因为当推送通知到达的时候是可以监听到的,可以获取到推送信息里面的角标数字然后进行累加。

    但是当APP完成退出后台的时候,想要app监听到通知并且读取通知信息设置角标,这个好像是办不到的!

    后台推送消息的格式按照苹果官方提供的格式,大致是这样:

    {
        "aps" : {
            "alert" : {
                "title" : "Game Request",
                "body" : "Bob wants to play poker",
                "action-loc-key" : "PLAY"
            },
            "badge" : 5
        },
        "acme1" : "bar",
        "acme2" : [ "bang",  "whiz" ]
    }

    “aps”格式是固定的,后面的"acme1", "acme2”是自定义的数据。其中“badge"就是app的角标数字

    所以要证实APP的桌面红色角标(未读消息数字)到底是由后台控制的还是移动端自己控制的,这个很容易。

    让app内部不要自己操作角标变化,或者把该app完全退出,然后后台开始推送,假设推送的消息badge是数字几,而且app的角标也是显示数字几,

    这个就足以证明app的红色角标是由后台推送时候控制的了!

    当然话说回来,想要实现对app这个角标的精准显示,需要一个强大的后台:对每个会员在app的读取未读消息进行追踪记录上报,

    然后下次推送的时候,对每个会员要进行未读消息的统计,然后在推送消息里面设置精准的badge数字。就能做到app精准的显示未读消息数字了。

    我们看比如QQ,微信等app,它们的角标数字是做的非常精准的,人家的后台之强大,那是没得比的。

    但是我们一般的APP, 你也想做到角标精准?有必要吗?你连做推送都是用了第三方的推送sdk如极光、个推,你还想做到精准显示角标,你去看看极光和个推对于群推的方法,

    压根都没提供精准设置badge的位置,说明想实现精准实现角标,专门研究推送的这些第三方公司也觉得难度很大,或者说要付出很大的代价!

    一般来说,大多数app的角标数字做的是意思意思,没那个精准,我测试过的有百度地图、简书、新浪财经等等,app的角标显示也没有做什么精准显示。所以对于咱们做的如果是一个普通的app, 角标数字的显示也就意思意思就行了,主要是为了提醒用户你有未读消息嘛!真的想做到精准显示角标,那就要和后台的兄弟谈好,让他们做好准备加油开干把!

  • 相关阅读:
    (转)【web前端培训之前后端的配合(中)】继续昨日的故事
    ural(Timus) 1136. Parliament
    scau Josephus Problem
    ACMICPC Live Archive 6204 Poker End Games
    uva 10391 Compound Words
    ACMICPC Live Archive 3222 Joke with Turtles
    uva 10132 File Fragmentation
    uva 270 Lining Up
    【转】各种字符串哈希函数比较
    uva 10905 Children's Game
  • 原文地址:https://www.cnblogs.com/tandaxia/p/6287663.html
Copyright © 2011-2022 走看看