JPUSH 3.0.2 badge 角标自增问题

registrationid
ios
badge
jpush
标签: #<Tag:0x00007fb830e4c650> #<Tag:0x00007fb830e4c420> #<Tag:0x00007fb830e4c218> #<Tag:0x00007fb830e4c010>

(Maodong Lee) #1

我目前遇到的问题是,想通过JPUSH 推送消息,应用内自己根据未读消息设置角标 并且来推送消息的时候 +1
我通过 registerID 实现个推

我是在系统 的 didReceiveRemoteNotification 方法里 和

JPUSH delegate method: jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler

使用的这个 使用如下方法 想让角标达到自增的效果:

NSInteger nextBadge = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber: nextBadge];

比如最初角标为0,此时根据registerID 发送一条推送, badgeNumber 变为1,然后再根据registerID推送 角标也不变化还是1。

之后我将[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 方法全部注释掉,也就是让它不起作用。再 用registerID 发推送,角标会从无变到1,然后再发送多条也都是1.

我想知道为什么设置角标的方法 我都注释了,它还变化,是JPUSH SDK 内进行控制了么。 如果不是,那么我种种个推需求怎么实现?我想自己控制自增,不想通过JPUSH 的setBadge 和 reSetBadge 的接口。


#2

这是你推送的时候 就设置了角标为1,收到的时候自然就是1.

看这篇文章了解


(Maodong Lee) #3

您说的我设置了角标为1,可是我客户端没有设置呀,并且全局搜索所有setBadge 的方法都给注释了。为什么发送个推 还会+1 ,但是在继续发个推到这个设备 bage却不变,是JSPUSH SDK 里面 设置了值么。还是说 JPUSH 必须配合服务器设置才对。我们只是想通过JPUSH 做个横幅提示,在JPUSH 接受推送的代理方法里做自增操作,内部逻辑走自己的接口。请问这样不能实现么?


#4

我说的是你推送的时候给badge传值为1,不是说你客户端对角标做了设置。
麻烦看清楚。

如果你在官网推送,请点开推送时的可选设置,badge默认为1
如果api推送,检查你们的代码。


(Maodong Lee) #5

好的 我查看一下,感谢,如有问题,我再跟进。


(Maodong Lee) #6

您好!如果我不需要极光帮我设置badgeNumber 的话 badge 默认给0 是不是就可以了?


#7


(Maodong Lee) #8

您好,app在拉到后台,没有杀死,此时发送推送,会调用JPUSH 的哪个方法呀,我在 - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
方法里面做自增操作 不起作用。当然代理我是设置了的。


#9

这个方法是iOS10的新接口,在前台收到时展示。

iOS的消息都是要点击了通知栏消息后才会获取到的。

一种消息:


(Maodong Lee) #10

好的,我先看看您发给我的资料


(Maodong Lee) #11

badge 设置为空,content-available 为ture 然后调用(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler 还是没有达到自增的效果,我现在的设置是没有错的对么?


#12

没有自增?检查你方法走了吗?
以及客户端对于该类消息的设置做了吗?


(Maodong Lee) #13

请问 这个 方法不被调用:- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

我已经设置了 target->Capabilities ->Background Modes 勾选Background fetch 和Remote notifications
plist 文件Required background modes 添加了key App downloads content in response to push notification
还需要其他的设置和操作么?我使用的手机是iPhone6s v10.2.1


#14

给我提供你测试消息的msgid
并,你app处于什么状态?杀死了?


(Maodong Lee) #15

是useInfo 里面 _j_msgid 对应的值么 ,我是在生产环境测试


#16

推送成功后,官网推送历史-详情里面有该值,API推送也会返回该信息。

如果你客户端收到了该消息,那么也会有msgid(不过既然收到了,没有走上述方法,那走了什么方法?)


(Maodong Lee) #17

发送编号 1489642500
Message ID 8005844803
推送方式 立即推送
接受对象 Reg.ID:1517bfd3f7f5b0e7721
推送内容 11111
推送平台 ios-product
Extras {“ios”:{“sound”:“default”,“content-available”:1}}

是上面的Message ID 吧,您那里可以查到什么问题么,我这边横幅还是有的。就是backGround 那个方法不走


#18

要msgid只是想确认下推送的时候"content-available":1 带上了没,你说有横幅,但是没走方法。

那请问,你的app状态是?

之后你点击横幅后会调用什么方法?


(Maodong Lee) #19

我去申请测试环境的证书,在测试环境上调试吧。生产上实在是无法定位


(Maodong Lee) #20

经过测试 iOS 10.2.1 不会调用 后台推送代码,不会产生自增。iOS10.2以下没有问题,JPUSH 是不是 没有做最新版本的兼容?还是苹果的问题