咱们晓得,独自应用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 最新技术资讯~