[FAQ] ¿Cómo se superponen el servicio push de HMS Core y los mensajes de notificación creados localmente?

Sabemos que el mensaje de notificación se puede cubrir utilizando solo el servicio push de HMS Core o creando el mensaje de notificación localmente. Los métodos son los siguientes:

1. Cree mensajes de notificación localmente (denominados mensajes de notificación locales)

Esto se puede lograr configurando el mismo Id. de notificación a través de NotificationManager.notify(Id. de notificación, notificación).

2. El servicio de inserción de HMS Core envía mensajes de notificación (denominados mensajes de notificación de inserción de Huawei)

Para los mensajes enviados mediante la API del servicio push de HMS Core, se establece la notificación_id, es decir, el identificador único de cada mensaje cuando se muestra la notificación. Cuando la notificación_id no se lleva o se establece en -1, Push NC genera automáticamente un identificador único para cada mensaje, y el mensaje no se sobrescribirá; si se establece la misma notificación, la función de sobrescribir el mensaje anterior con un nuevo mensaje puede ser dio cuenta.

**Aunque los dos métodos de implementación anteriores se pueden usar de forma independiente, a veces hay escenarios que requieren que los mensajes de notificación local y los mensajes de notificación push de Huawei se superpongan entre sí. **Por ejemplo, a través del mensaje de notificación de inserción de Huawei para recordar al usuario que el precio del producto que le interesa ha cambiado. Si el usuario ya ha comprado, el mensaje de notificación local puede establecer el mismo valor de notificación_id que la notificación de inserción de Huawei mensaje para actualizar el mensaje recomendado para el producto.La información logística del pedido cumple con los escenarios de uso especiales de la aplicación.

Resumen de pasos

1. Mensaje de notificación de inserción de Huawei, título: Mensaje de prueba del servicio de inserción de Huawei, contenido: cambio de precio del producto al que se suscribió, id_notificación: 10;

2. Mensaje de notificación local, título: Probar canal de entrada de notificación local notificación local, contenido: \uD83D\uDCE6 Tiene un servicio de mensajería que llega rápidamente\uD83D\uDE80, haga clic para ver la información del servicio de mensajería y también puede configurar el método de entrega >>> , notificarId: 10;

3. Mensaje de notificación de inserción de Huawei, título: Mensaje de prueba del servicio de inserción de Huawei, contenido: se ha firmado el producto que compró, id_notificación: 10.

Proceso detallado

En primer lugar, los desarrolladores deben acceder al servicio push. Consulte el enlace oficial para obtener más información.

Después de que el cliente acceda al servicio de inserción, el cliente obtiene el token de inserción y luego envía mensajes a la aplicación de acuerdo con el token de inserción devuelto por el servidor de inserción.

Código de ejemplo del servidor push de HMS Core:



{
    "validate_only": false,
    "message": {
        "android": {
            "notification": {
                "click_action": {
                    "type": 3
                },
                "notify_id": 10
            }
        },
        "notification": {
            "body": "您订阅的商品价格变化",
            "title": "华为推送服务测试消息"
        },
        "token": ["your push token"]
    }
}

Código de ejemplo de cliente de aplicación local (Kotlin):

val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager

//Crear un canal para enviar mensajes, "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)
           }
        }

//Enviar mensaje al canal 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的通知消息进行覆盖
			
			```

El efecto es el siguiente:

En el ejemplo de efecto anterior, se puede ver que al mantener los valores de notificarId y notificar_id iguales, el mensaje de notificación local puede sobrescribir el mensaje de notificación de inserción de HUAWEI anterior y, al mismo tiempo, el mensaje de notificación de inserción de HUAWEI también puede sobrescribir el mensaje de notificación local anterior, para que la notificación local se pueda realizar Función de superposición mutua de mensajes y notificaciones automáticas de Huawei.

Precauciones

Al crear un mensaje de notificación localmente, como notificaciónManager.notify(notifyId, notificación), establezca el valor de notificarId y el campo de notificación_id del mensaje de notificación de inserción de Huawei para que sea el mismo, de modo que el mensaje de notificación local y el mensaje de notificación de inserción de Huawei pueden superponerse entre sí.

Cabe señalar que los mensajes de notificación con el mismo conjunto de notificación/id_notificación en la misma aplicación se sobrescriben en el orden de visualización, es decir, los mensajes que se muestran más tarde sobrescriben los mensajes que se muestran antes. Al mismo tiempo, el campo de notificación_id de la inserción de Huawei puede surtir efecto solo si la versión de EMUI es 9.1.0 y superior, y la versión de la aplicación del servicio de inserción es 9.1.1 y superior.

Conoce más detalles>>

Visite el sitio web oficial de HUAWEI Developer Alliance
para obtener documentos de orientación de desarrollo
HUAWEI Mobile Services Open Source Warehouse Dirección: GitHub , Gitee

Síguenos para conocer la última información técnica de HMS Core por primera vez ~

{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/HMSCore/blog/5517504
Recomendado
Clasificación