角标推送
GoEasy从GoEasy JS Sdk 2.8.3开始,支持开发者推送通知时设置角标。
GoEasy角标设置的工作原理是,当App进程存活,由GoEasy来创建本地通知并设置角标。当App进程被杀掉,GoEasy调用厂商通道推送消息并设置角标,各个品牌能否支持角标设置取决于厂商通道能否支持和厂商是否提供设置角标的客户端API。
GoEasy当前对各厂商角标的支持情况
厂商 | 进程存活(GoEasy推送) | 进程被杀(厂商通道) |
---|---|---|
iOS | 支持 | 支持 |
小米 | 支持 | 支持 |
华为 | 支持 | 支持 |
荣耀 | 支持 | 支持 |
VIVO | 不支持 | 不支持 |
OPPO | 不支持 | 不支持 |
Google FCM | 不支持 | 不支持 |
魅族 | 不支持 | 不支持 |
提示
小米手机特别提醒:
小米的角标的设置和清除,均由厂商通道和操作系统按小米手机的规则自动维护,下列操作均会被小米手机忽略。
IM通知栏消息推送时设置角标
推送消息时,在notification中增加badge属性来设置角标,"0"表示该消息不需要设置角标,"+1"表示角标+1, 默认为"0"。 注意,设置badge属性必须为字符串类型,即必须加上双引号,badge当前仅支持"0"或"+1"两个字符串作为参数,不可以为其他值。
- 客户端推送时设置角标示例
- 服务端Rest推送时设置角标示例
let textMessage = im.createTextMessage({
text: 'Hello, GoEasyIM',
to: {
type: GoEasy.IM_SCENE.PRIVATE,
id: 'user002',
data: {"avatar": "/www/xxx.png", "nickname": "Neo"}
},
notification: { //APP在后台运行,或进程被杀掉,将会收到通知栏提醒
title: '张无忌发来一段文字',
body: 'Hello, GoEasyIM',
badge: "+1", //角标,值必须有引号,表明是字符串类型,"0"表示该消息不需要设置角标,"+1"表示角标+1,不支持其他值, 默认为“0”
}
});
curl -X POST -H "Content-Type: application/json"
http://rest-hz.goeasy.io/v2/im/message
-d '{
"appkey": "BC-xxxx",
"senderId": "user001",
"senderData": {"avatar": "/static/images/Avatar-2.png", "name": "Wallace"},
"to": {
"type": "private",
"id": "user003",
"data": {"avatar": "/static/images/Avatar-1.png", "name": "Mattie"}
},
"type": "text",
"payload":"Hello,GoEasy",
"notification": {
"title": "hello world",
"body": "你有一条新消息",
"badge": "+1" //角标,值必须有引号,表明是字符串类型,"0"表示该消息不需要设置角标,"+1"表示角标+1,不支持其他值, 默认为“0”
}
}'
客户端设置角标
APP进程每次启动时,角标会被自动设置为0。 开发者需要在APP启动后,根据业务数据及时调用该方法更新角标,确保角标能够正确累加。
goeasy.setBadge({
badge: 2, //必须>=0的整数
onSuccess: function () { //设置成功
console.log("setBadge successfully.")
},
onFailed: function (error) { //设置失败
console.log("Failed to setBadge, code:" + error.code + ",error:" + error.content);
}
});