极光推送的badge问题

ios
标签: #<Tag:0x00007fb83b4d0ff8>

(北纬66度) #1

iOS端和后台都是集成的都是极光推送最新版SDK,后台设置的badge为autoBadge(即+1),在接到通知后我iOS端会设置[JPUSHService setBadge:]给badge-1,但是现在遇到后台返回的badge一直是1,不应该有多条通知来这个数会递增吗,怎么一直是1不会变,求指导解惑


#2

1、如果你们收到消息时去获取信息时,得到的badge的值一直是固定的1,那么请让你后台自己检查代码

2、你可以在官网-推送历史详情里看到他到底推送的是不是+1


(北纬66度) #3

后台推得确实是+1 “ios”:{“sound”:"",“category”:“iosTest”,“extras”:{“deal”:0,“title”:“iosTest”,“module”:“news”,“time”:"",“newsId”:“13”,“type”:0},“badge”:"+1",“alert”:{“body”:“进入首页”,“action-loc-key”:“PLAY”,“subtitle”:“iosTest”}}


(北纬66度) #4

还有什么其他原因吗?


#6

那你们在客户端获取通知消息的日志提供一下

你们setbadge是在什么情况下做的?


(北纬66度) #8

获取到通知后,在点击通知栏进入APP会调用- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 这个方法在这里面写的,这个是iOS10之前调用的,另一个iOS10 方法也写了,


#9

1、提供客户端日志

2、提供你推送的消息的msgid和appkey

3、在官网测试

4、用demo测试

5、如果setbadge为-1结果是什么


(北纬66度) #10

客户端日志:

{
    "_j_business" = 1;
    "_j_msgid" = 20266199055450957;
    "_j_uid" = 10970744454;
    aps =     {
        alert =         {
            "action-loc-key" = PLAY;
            body = "\U6211\U56fd\U79d1\U666e\U4e13\U804c\U4eba\U5458\U4eba\U6570\U4e3a22.2\U4e07\U4eba\Uff0c\U79d1\U666e\U517c\U804c\U4eba\U5458\U4eba\U6570\U4e3a183.2\U4e07\U4eba\Uff0c\U6211\U56fd\U79d1\U666e\U4eba\U5458\U5305\U62ec\U79d1\U666e\U4e13\U804c\U4eba\U5458\U3001\U79d1\U666e\U517c\U804c\U4eba\U5458\U548c\U79d1\U666e\U5fd7\U613f\U8005\U4e09\U7c7b\U4eba\U7fa4\U3002";
            subtitle = "\U70ed\U70b9\U805a\U7126 | \U4e00\U56fe\U770b\U61c210\U5e74\U95f4\U6211\U56fd\U79d1\U666e\U4eba\U5458\U53d8\U5316";
        };
        badge = 1;
        category = "\U70ed\U70b9\U805a\U7126 | \U4e00\U56fe\U770b\U61c210\U5e74\U95f4\U6211\U56fd\U79d1\U666e\U4eba\U5458\U53d8\U5316";
        sound = "";
    };
    deal = 0;
    module = news;
    newsId = b30e0aa9368c4fabaf291ebd56253a96;
    time = "";
    title = "\U70ed\U70b9\U805a\U7126 | \U4e00\U56fe\U770b\U61c210\U5e74\U95f4\U6211\U56fd\U79d1\U666e\U4eba\U5458\U53d8\U5316";
    type = 0;
}

这个是我连推了两条那个badge还是1,但是有两条推送来后APP的icon确实角标为2,我要实现点一条通知栏销一条通知消息,如果badge一直为1,我在[JPUSHService setBadge:badge-1];就将那条未读的通知栏消息也清除了,理应那个badge应该为2,然后我-1后还有1,通知栏那条不会消失


#11

icon显示的是2,那说明你后一条消息收到的时候badge就是2额

你用我们的demo测一下看看效果呢

以及你先将 你代码里面的setbadge、setApplicationIconBadgeNumber都先去掉看看?


(北纬66度) #12

但是有时候那个badge返回又是正常的,真是奇怪


(北纬66度) #13

去掉setbadge、setApplicationIconBadgeNumber,app的icon持续增加


#14

取到的badge值上没有问题了是吗?

然后在你需要修改badge的地方重新加上setbadge等API去处理你收到消息后的角标


(北纬66度) #15

虽然icon显示正确但是点击通知栏进去获取消息内容里打印的dabge有时候还总是一直是1,不变


(北纬66度) #16

目前极光可以实现,多条推送消息来,通知栏里点击哪一条消失哪一条,并且APP icon的角标也跟着-1吗?


#17

不会吧,你拿我们demo测一下?

你点每条消息 badge都是1?不可能吧?

点最后收到的那一条的badge应该是与icon上显示的一致才对啊。

apns通知是iOS系统控制的,目前有开发者找到的方法是


(北纬66度) #18

我貌似明白怎么回事了,加入推了三条消息分别为1,2,3;我点通知栏的时候如果直接点第一条1,此时他的badge为1,然后 [JPUSHService setBadge:badge-1];
[UIApplication sharedApplication].applicationIconBadgeNumber=badge-1;设置这两个后,此时applicationIconBadgeNumber为0,苹果的apns机制就把通知栏所有消息都清除了,如果我一开始点的是3,此时的applicationIconBadgeNumber为2,icon角标也会是2,通知栏另外两条消息也不会被清楚,是这样吗?我以前不管推几条如果我都是点击第一条进去打印badge得值的话就会一直为1是这个道理吗?