咱们晓得,独自应用 HMS Core 推送服务或本地创立告诉音讯,都能够实现告诉音讯的笼罩,形式别离为:
1、本地创立告诉音讯(简称本地告诉音讯)
通过 notificationManager.notify(notifyId, notification) 设置雷同的 notifyId 即可实现。
2、HMS Core 推送服务发送告诉音讯(简称华为推送告诉音讯)
应用 HMS Core 推送服务 api 发送的音讯,通过设置 notify_id,即每条音讯在告诉显示时的惟一标识。notify_id 不携带时或者设置 - 1 时,Push NC 主动为给每条音讯生成一个惟一标识,音讯不会进行笼罩;设置雷同的 notifyId,即可实现新的音讯笼罩上一条音讯性能。
尽管以上两种实现形式都能够独自应用,但有时会存在一些场景,须要本地告诉音讯与华为推送告诉音讯能够互相笼罩。 例如通过华为推送告诉音讯,揭示用户感兴趣的商品价格发生变化,如果用户曾经购买,此时本地告诉音讯就能够通过设置与华为推送告诉音讯雷同的 notify_id 值,将举荐音讯更新为该商品订单的物流信息,满足利用的非凡应用场景。
步骤总结
1、华为推送告诉音讯,题目为:华为推送服务测试音讯,内容:您订阅的商品价格变动,notify_id:10;
2、本地告诉音讯,题目:测试本地告诉进入渠道 localNotification,内容:\uD83D\uDCE6 您有快递正在飞速奔来 \uD83D\uDE80,点击查看快递信息,还能设置收件形式哦 >>>,notifyId:10;
3、华为推送告诉音讯,题目:华为推送服务测试音讯,内容:您购买的商品已签收,notify_id:10。
具体流程
首先,开发者须要接入推送服务,具体请参考官网链接
在客户端接入推送服务后,通过客户端获取到 Push Token,而后就能够依据 Push 服务端返回的 Push Token 向利用推送音讯。
HMS Core 推送服务端示例代码:
{
"validate_only": false,
"message": {
"android": {
"notification": {
"click_action": {"type": 3},
"notify_id": 10
}
},
"notification": {
"body": "您订阅的商品价格变动",
"title": "华为推送服务测试音讯"
},
"token": ["your push token"]
}
}
本地利用客户端示例代码(Kotlin):
val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
// 创立发送音讯渠道,“localNotification”
var channelId = "localNotification"
if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
var importance = NotificationManager.IMPORTANCE_HIGH;
var notificationChannel = NotificationChannel(channelId,channelId,importance)
notificationChannel.enableVibration(true)
notificationChannel.setShowBadge(true)
if(manager != null){manager.createNotificationChannel(notificationChannel)
}
}
// 发送音讯到渠道 channelId
```
val mBuilder = NotificationCompat.Builder(this@MainActivity,channelId)
mBuilder.setContentTitle("测试本地告诉进入渠道 $channelId") // 设置告诉栏题目
.setContentText("\uD83D\uDCE6 您有快递正在飞速奔来 \uD83D\uDE80,点击查看快递信息,还能设置收件形式哦 >>>")
.setWhen(System.currentTimeMillis())
.setPriority(Notification.PRIORITY_DEFAULT)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setSmallIcon(R.mipmap.ic_launcher_round)
val notification = mBuilder.build()
manager.notify(10, notification) // 这里的 notifyId 与华为推送告诉音讯的 notify_id 值雷同,即可实现对曾经展现的雷同 notifyId/notify_id 的告诉音讯进行笼罩
```
成果如下所示:
从以上成果示例中,能够看出,通过放弃 notifyId 与 notify_id 值雷同,本地告诉音讯能够笼罩上一条华为推送告诉音讯,同时,华为推送告诉音讯也能够笼罩上一条本地告诉音讯,从而能够实现本地告诉音讯和华为推送告诉的互相笼罩性能。
注意事项
在本地创立告诉音讯时,如 notificationManager.notify(notifyId, notification),设置 notifyId 与华为推送告诉音讯的 notify_id 字段值雷同,即可实现本地告诉音讯与华为推送告诉音讯的互相笼罩。
须要留神的是,同一利用设置雷同 notifyId/notify_id 的告诉音讯,依照展现程序进行笼罩,即后展现的音讯笼罩之前展现的音讯。同时,华为推送 notify_id 字段,须要满足 EMUI 版本在 9.1.0 及以上、推送服务利用版本在 9.1.1 及以上的限度,能力失效。
理解更多详情 >>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~