使用jmessage-phonegap-plugin


(大太阳) #1

发消息自带的推送,iOS外面的角标如何清除,或者怎么直接禁止角标出现


#2

角标相关

JMessage 插件重置服务器保存的角标:

如果你有同时集成 JPush 插件 ,则本地清除角标可以使用 JPush 的 API ,当前 JMessage 插件未提供清除本地角标的 API ,可自行调原生方法 UIApplication:setApplicationIconBadgeNumber 函数来设置角标


(大太阳) #3
    this.jPushPlugin.setApplicationIconBadgeNumber(0);
    this.jPushPlugin.setBadge(0);

我用了这两个,本地的是清除了,但是再次发送IM消息的时候全部数据又出来了,我觉得是极光服务器的角标没有清除
。要怎么做


#4

上面给了 JMessage 插件重置服务器保存的角标的方法: https://github.com/jpush/jmessage-phonegap-plugin/blob/master/www/JMessagePlugin.js#L115

如果没有这个方法,请升级到最新版本,如果你的插件对应的 SDK 版本是 3.4.1 以下的,角标会有问题。


(大太阳) #5

能直接禁止iOS的角标吗
这样写吗

this.jPushPlugin.setBadge:(0)=> {
              if (device.platform === "iOS") {
                  exec(null, null, PLUGIN_NAME, "setBadge", [params]);
              }
          },

#6

JMessage 自动下发的 apns 消息暂没有提供方法不设置角标,你调 API 做下清除吧,JPush 推送的时候可以自己设置角标


(大太阳) #7

不太理解,我是集成了jpush ,jmessage, 现在推送分两类,1,是直接通过jpush发。2,是通过发IM消息自己带的推送。 直接jpush发的推送 , 和发IM的推送不是一起的,, 各自显示自己的,jpush可以清除, IM的不可以


#8

JMessage 的你调上面给的 API 去做清除就行了


(大太阳) #9

不好意思怎么写,
this.jPushPlugin.setBadge:(0)=> {
if (device.platform === “iOS”) {
exec(null, null, PLUGIN_NAME, “setBadge”, [params]);
}
},
这样写报错,我用的是插件


#10

报什么错?

这是插件里面的 API ,如果用不了,请更新你的插件版本


(大太阳) #11

this.jPushPlugin.setBadge(0);
不对吗
这样写是无效的 jpush 的是可以清除
IM 产生的推送角标就清不掉了


#12

调 JMessage 插件里面的 API ,我上面链接不是给了吗?调对应的 JMessage 的 API ,你这是 JPush 的


(大太阳) #13

jmessage 的API文档里面就没有setBadge 这个方法


#14

API 文档只是没写出来,但是有提供的,我给你的链接麻烦看一下,如果你的插件里面没有这个方法请你更新插件 https://github.com/jpush/jmessage-phonegap-plugin/blob/master/www/JMessagePlugin.js#L113


(大太阳) #15

可以,不要着急,没看懂


#16

API 文档上补上了


(大太阳) #17

这个API是有效的,不过还是没有解决我的问题。
iM 的推送角标和Jpush 角标的数字不是叠加的,是各自显示各自的角标个数
我在发IM消息的时候加了JMessage.setBadge({badge:0}),接收方的角标还是有。
再教我下如何禁止IM推送的不产生角标


#18

JMessage.setBadge({badge:0}) 这个角标是设置本设备在极光服务器保存的角标,清零后下次收到消息从 0 开始+1然后展示。

当前并未提供「禁止IM推送的不产生角标」的功能。

你调 JPush 推送消息的时候可以选择不设置角标,不传 badge 字段即可